문제의단일 Linux 프로세스의 메모리 사용량 제한누군가가 포함할 /etc/default/grub
파일 을 변경한다고 언급했습니다.GRUB_CMDLINE_LINUX_DEFAULT
GRUB_CMDLINE_LINUX_DEFAULT="cgroup_enable=memory swapaccount=1"
swapaccount=1
효과 는 무엇입니까 ? 적용 시 위험이나 단점이 있나요?
답변1
분명히 그것은 활성화하는 데 사용되었습니다스왑 회계, 즉 커널에 각 제어 그룹(간단히 cgroup)의 스왑 사용량을 모니터링하고 제한하도록 지시합니다. RedHat은 RHEL7에서 기본적으로 이를 활성화하기 시작한 것으로 보이므로 단점은 최소화됩니다.
커널 구성(일반적으로 /boot/config-<kernel_version>
)을 확인해야 합니다. 다음 줄이 포함된 경우:
CONFIG_MEMCG_SWAP=y
그런 다음 cgroup 스왑 사용량을 추적할 수 있으며 swapaccount=
부팅 옵션을 사용할 수 있습니다. 실제 제한은 스왑 제한이 있는 cgroup이 생성되고 프로세스가 해당 cgroup으로 이동되는 경우에만 적용됩니다.
다음 줄도 포함되어 있는 경우:
CONFIG_MEMCG_SWAP_ENABLED=y
기본적으로 활성화되어 있으므로 swapaccount=1
필요한 경우 명시적인 부팅 옵션을 사용하여 비활성화해야 합니다.swapaccount=0
systemd
Docker는 일반 기능의 일부로 cgroup을 광범위하게 사용합니다.
답변2
FWIW, 커널 명령줄 옵션은 swapaccount=
더 이상 사용되지 않습니다.https://github.com/torvalds/linux/commit/b25806dcd3d5248833f7d2544ee29a701735159f. 이제 커널은 항상 swapaccount=1
지정된 대로 작동합니다.