在问题中限制单个 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
then默认情况下处于启用状态,如果需要swapaccount=1
,您需要使用显式引导选项来禁用它。swapaccount=0
systemd
Docker 将广泛使用 cgroup 作为其正常功能的一部分。
答案2
FWIW,内核命令行选项swapaccount=
已被弃用https://github.com/torvalds/linux/commit/b25806dcd3d5248833f7d2544ee29a701735159f。内核现在始终表现得如同swapaccount=1
指定的那样。