如何为所有 systemd cgroups 设置默认的 memory.swappiness?

如何为所有 systemd cgroups 设置默认的 memory.swappiness?

在 CentOS 7 中,如何为所有 systemd cgroups 设置默认的 memory.swappiness?我可以通过 ControlGroupAttribute 选项为每个 cgroup 执行此操作,但我想覆盖所有 cgroups 的默认值 60。

答案1

如果您想对所有 cgroup 执行此操作,您是否想对整个系统执行此操作?如果是这种情况,您可以在“/etc/sysctl.conf”中设置系统范围内的 swappiness。您要编辑的行是“vm.swappiness=”,您可以将其设置为 0 到 100 之间的任何值。

警告那些将此值设置为完全避免交换的人,将此值设置得非常低将几乎完全禁用请求分页,这是一种将空闲页面从 RAM 中移出并进入交换的非常有用的方法。是的,这是“交换”,但这并不是像内存不足时交换那样令人绝望的事情。请求分页在大型数据库中特别有用,它实际上不会减慢任何速度。它肯定比在最后一秒内存不足时交换东西要好,因为请求分页有助于在系统开始时阻止这种情况发生不是停止运行,而不是停止运行之后再停止。如果系统范围内的 vm.swappiness 设置为 0,则会导致系统在压力巨大时 OOM 并终止进程,从而可能导致整个系统因内核崩溃而崩溃。

另外值得一提的是,您必须在编辑 sysctl.conf 文件后调用它进行读取。# sysctl -p读取 /etc/sysctl.conf 中已修改的行。可以在正在运行的系统上通过这种方式更改 vm.swappiness,或者通过使用 procfs 进行更改:# echo 50 > /proc/sys/vm/swappiness其中 50 是从 0 到 100 的任意数字。

相关内容