我在 4G RAM 上运行,带有额外的 6G 交换分区,SSD 是相当不错的 SAMSUNG MZMPA128HMFU 型号。当数据保留在 RAM 中时,系统对工作负载的响应非常好,但是一旦数据以任何有意义的数量到达交换分区(假设使用了 1GB 以上的交换),在交换期间,响应能力就会完全下降。 SSD 指示灯持续亮起几秒钟,同时显然有大量数据被调入或调出,在此期间所有其他 IO 均被阻止。我看到系统负载在几秒钟内从 0.8 跳到 10,然后随着 IO 再次启动而下降。当交换处于活跃使用状态时(我打开了一堆大型应用程序),随着正常运行时间的增加(现在为 26 天),这些令人作呕的交换事件会越来越频繁地发生。
我正在查看 Latencytop,但它并没有告诉我太多可以继续的信息。
此时似乎没有其他解决方案,只能停止足够多的应用程序来执行 swapoff -a 并停止使用 swap。不确定这如何影响我的使用模式,我几乎可以肯定这对于我经常运行的应用程序集来说足够了。
将 vm.swappiness 调低至 1 没有任何帮助。至少它本身不是。
这是众所周知的事情吗?在使用虚拟内存时,我可以选择哪些选项来获得良好的桌面响应能力?
答案1
我强烈建议安装更多内存,这样就不会交换内存。任何交换都会降低 Linux 或 UNIX(tm) 系统的性能。因此请安装足够的内存来停止交换!
答案2
如果您的工作负载确实需要超过 6GB 的活动 RAM,那么您实际上无法调整任何内容以使其在交换时运行得更快。
一些少量的交换使用不一定是问题 - 我的 3GB 笔记本电脑已经运行了大约 30 天,并且使用了 600MB 的交换(在旋转硬盘上,而不是 SSD),但它运行良好 - 因为只有非活动页面被占用换出,因此页面很少(如果有的话)需要换回。
如果您无法向系统添加更多 RAM,那么接下来最好的办法就是查看哪些进程使用了如此多的 RAM,并查看是否可以消除它们或采取一些措施来减少它们的 RAM 使用量。 “top”命令对此很有用,只需使用“M”命令即可按内存使用情况排序。