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

then默认情况下处于启用状态,如果需要swapaccount=1,您需要使用显式引导选项来禁用它。swapaccount=0

systemdDocker 将广泛使用 cgroup 作为其正常功能的一部分。

答案2

FWIW,内核命令行选项swapaccount=已被弃用https://github.com/torvalds/linux/commit/b25806dcd3d5248833f7d2544ee29a701735159f。内核现在始终表现得如同swapaccount=1指定的那样。

相关内容