swappiness设置是Linux计算在特定情况下交换的利弊的调整。高swappiness不会导致系统在不需要时进行交换,而低swappiness(只要不完全禁用交换)不会阻止系统在绝对必要时进行交换。
默认的swappiness大约为60,这是一个非常好的折衷方案,确保系统性能良好,同时确保在有未使用的分配程序内存时不会过度努力地分配缓存内存。
请记住,如果您的所有进程和缓存都有足够的RAM,这通常应该是情况,那么交换不应该成为问题。解决过多交换的首选方法是减少进程的RAM使用量和/或增加物理RAM。如果您真正需要的是更多的RAM,减少swappiness将产生负面影响。
请参阅我对一个非常类似问题的回答。
https://askubuntu.com/a/184221/54256
摘录:
为什么大多数人建议将swappiness减少到10-20?
因为大多数人认为交换 = 不好,如果您不减少swappiness,系统将在实际上不需要时进行交换。这两者都不是真的。人们将交换与系统变慢的时候联系起来 - 然而,它主要是因为系统变慢才进行交换,并非相反。确实有某些情况下,交换可能会带来明显的性能损失,但系统已经考虑到了这一点,并决定不这样做将对系统性能或稳定性产生更大的整体损失,这可能会在以后变得明显。总体而言,默认设置应该能够获得最佳的性能和可靠性。我建议保持默认设置。
...
一旦您使用的内存足够多,以至于没有足够的内存用于平稳运行的缓存,Linux可能会将一些未使用的应用程序内存从RAM重新分配到交换空间。
但它并不是根据一个确定的分配比例来进行的。不是说达到一定的分配百分比,然后Linux开始交换。它有一个相当“模糊”的算法。它考虑了很多因素,可以用“内存分配的压力有多大”来描述。如果有很多“压力”来分配新的内存,那么它将增加一些被交换的机会以腾出更多空间。如果“压力”较小,则会减少这些机会。
您的系统有一个“swappiness”设置,可以帮助您调整如何计算这种“压力”。通常不建议对此进行任何修改,我肯定也不会建议您进行修改。交换总体上是一件非常好的事情 - 任何偶尔的性能损失都旨在通过提高整体系统响应性和稳定性来抵消,适用于各种任务。如果您降低了swappiness,即使在可能真正有用的时候,缓存内存的数量也会比原本少一点。因此,您冒着整体减慢计算机速度的风险,因为缓存较少,而内存被未使用它的应用程序占用。是否对与交换相关的特定问题进行这种折衷是由您决定的。如果您进一步禁用交换,那么在系统内存不足以运行进程时,可能会导致系统不稳定。
当系统变得拥挤并且交换频繁时,会发生什么?
很多时候,人们会看着他们的系统大量使用交换空间并且磁盘活动很频繁,然后将这归咎于交换。这是错误的方法。如果交换达到这种极端情况,意味着您的系统内存非常低,而交换是唯一可以防止系统崩溃或随机终止进程的东西。在这种情况下,如果没有交换,进程将崩溃和终止。交换只是一个更深层次问题的症状。在具有足够内存执行所有任务的系统中,交换只能确保内存以高效的方式利用,将内存分配给缓存而不是休眠的进程。在交换无情地使磁盘活动频繁的系统中,这并不是交换的错。
在选择要交换到磁盘的内容时
随意阅读整篇文章,链接在
https://askubuntu.com/a/184221/54256。