我有点困惑,因为每个人都说将 swappiness 减少到 10 左右;但如果我只有 4GB RAM,那么多大的 swappiness 是最好的?如果我有 8 和 16GB 内存呢?
而且我不是在谈论交换分区/文件大小,而是在谈论交换性。
[编辑]:我不想知道 swappiness 的作用,而是我想知道我需要多少。根据下面的建议,我列出了一些我使用的常见任务和应用程序。我是一名程序员,所以像 VScode、Pycharm 这样的应用程序对我来说是必需的,而且一些繁重的任务,如虚拟化(大多数时候是 android 或 windows)也是我日常工作中的。我也做视频编辑和图形设计,但是,对于那些我使用轻型程序的人(我认为它们是因为它们感觉太快了),例如:Shotcut、Inkscape。
所以,我认为这些信息将有助于回答这个问题
非常感谢您的回答!:))
答案1
将其设置为 10,在正常使用情况下,也许在编译时,您可能甚至不会注意到差异,但您始终可以sysctl vm.swappiness=X
在工作时使用并尝试一个设置,大多数人不会注意到性能上的重大差异。如果您担心 SSD 寿命,请查看有关它的众多帖子和文章之一,基本上,它“可能”在某个时间点一直是一个问题,但当您处理哪怕是稍微好一点的驱动器时,这个时间就已经过去了。中等质量(故障前 3000 个写入周期)和平均每天 10GB 写入的 128 GB MLC SSD 的预计寿命约为 35000 天,因此我们在这里处理的是荒谬的时间。这个问题不要想太多。
杰森·C.
只是为了以防万一您对这些东西感兴趣而考虑 SSD 的装饰。可以开始一场全新的有趣的讨论。
答案2
你从一个错误的假设开始:交换性不会随着你拥有多少内存而改变,而是随着你将使用的软件而改变。
如果你做虚拟机,你不需要高交换性。但如果您从事图形设计或编码,交换性可能会很高。
但根据经验:将 swappiness 设置为 0,这样 Linux 就会尽可能晚地进行交换。这样做将使您的系统保持响应,并延长您的 SDD 使用寿命(如果您有 SDD)(这就是为什么您大多数看到的答案是将 swappiness 设置为 10 而没有其他)。
正如其他人所说,交换对于大多数人来说只是应急“RAM”。
另外,考虑到您只有 4 GB 的 RAM,仅靠网页浏览您很快就会达到该限制,交换在这里甚至没有帮助。即使 8GB 的 RAM 也不足以满足您的需要。
然后,根据你的 CPU 的情况,即使有更多的 RAM,你可能仍然会遇到困难。简而言之:您的 CPU 和您应该拥有多少 RAM 之间存在关系,而且还与您打算做什么(您已经告诉我们)有关。
关于交换的一些提示:
- 交换分区对大多数人来说没有用,请使用交换文件。
- 交换空间至少应为 RAM 的物理大小(而不是操作系统检测到的大小)加您的专用 GPU 物理数量(如果有)。如果您确实利用了休眠功能,情况就更是如此。
另外:仅仅因为一个程序看起来“快”,并不意味着它是轻量级的,因为缓存在不到十年的时间里就被过度使用了。简而言之:您可以用更少的 CPU 使用量来换取更多的 RAM 使用量。