GRUB_CMDLINE_LINUX_DEFAULT의 `swapaccount=1`은 무엇을 합니까?

GRUB_CMDLINE_LINUX_DEFAULT의 `swapaccount=1`은 무엇을 합니까?

문제의단일 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

systemdDocker는 일반 기능의 일부로 cgroup을 광범위하게 사용합니다.

답변2

FWIW, 커널 명령줄 옵션은 swapaccount=더 이상 사용되지 않습니다.https://github.com/torvalds/linux/commit/b25806dcd3d5248833f7d2544ee29a701735159f. 이제 커널은 항상 swapaccount=1지정된 대로 작동합니다.

관련 정보