我们希望在所有 RHEL 服务器(Hadoop 服务器)上禁用交换。我们有两个选择:
- 将 swappiness 设置为 0,并且
swapoff -a
&swapon -a
swapoff -a
,并禁用交换fstab
据我了解,这两个选项都完全禁用交换
当然是选项 2,因为我们swapoff -a
禁用了fstab
.
但是选项 1 给出的结果与选项 2 相同吗?
答案1
当你测试它时发生了什么?
你读过吗文档?
值 0 指示内核不要启动交换,直到空闲页面和文件支持页面的数量小于区域中的高水位线。
即,值为零不会禁用交换,它只是推迟交换。
答案2
据我了解,这两个选项都完全禁用交换
不正确。将 swappiness 设置为 0 即可不是禁用交换。
“交换”基本上只是硬盘上的虚拟 RAM。当 RAM 内存不足时使用它。关闭交换意味着如果程序需要更多 RAM,它就会崩溃。不要那样做。有一个交换文件。然而,由于现代默认的 Ubuntu 安装(例如:Ubuntu 22.04)默认不提供交换文件,因此您必须在安装 Ubuntu 后手动创建一个交换文件。这是我关于如何快速轻松地制作一个的答案。
设置swappiness
为0就可以了。确实如此不是禁用交换空间。我知道这个。我已经对其进行了广泛的测试,并且仍然看到我的交换量在增长。我也读过Linux源代码中对swappiness的描述。相反,它会尽可能推迟使用交换空间,直到无法找到释放 RAM 的方法并决定将 RAM 中的一些内存移动到交换空间为止。
另请参阅我关于交换性以及如何配置它的答案。我也引用了 Linux 内核源代码来描述它:询问 Ubuntu:如何配置 swappiness?
答案结束,轶事和个人经历开始swappiness
。
我发现将 swappiness 设置为 0 可以显着提高系统的性能,该系统具有 32 GB RAM,高速 m.2 SSD 上有 64 GB 交换文件,并且 RAM 不断耗尽。
当 swappiness 设置为默认值 60 时,我会在kswapd0
运行时定期获得 1 到 2 分钟的锁定期(如 所示top
),以尝试为某些占用内存的应用程序(如 Chrome、Slack、Eclipse 或 Google Meet)交换内存(在铬合金)。当 RAM 达到 80% 满时,我就会开始出现这些锁定情况。计算机将是完全无法使用在此期间,我什至无法在终端中输入内容或单击菜单。
将交换性设置为 0有很大帮助!。直到 RAM 占满 90% 之前,我的 CPU 使用率才开始达到很高的水平,交换空间仍然会被大量使用,但效率更高,当我的 RAM 几乎占满时,我的计算机会变得非常缓慢,但仍然几乎无法使用,而不是完全无法使用!
在这里查看我的一些症状,我最初认为这是由于 Google Meet 中的错误造成的,但现在认为是由于内存交换导致我的计算机变慢:https://github.com/ElectricRCAircraftGuy/bug_reports/issues/3#issue-1177137900