Linux 中不必要的交换

Linux 中不必要的交换

似乎有时候,我的计算机会开始不必要地进行交换(内存使用率约为 25%),但我不知道原因。

运行 Perl 脚本时似乎最常发生这种情况,但这些脚本并不密集,我找不到任何说明 Perl 只能看到一定数量的内存的内容。脚本完成后,甚至在关闭 Firefox、Banshee 等后,交换使用情况仍然存在。重新启动 X 有时可以解决问题,但有时需要完全重新启动。

这对我来说是个大问题,因为一旦开始交换,其他一切似乎也会开始交换。关闭程序或切换视点等基本操作需要的时间越来越长。如果不加以控制,这种交换使用最终将迫使我的电脑无限期地崩溃,甚至无法响应按键!

我正在运行 Ubuntu 9.04、2.6.28-15 内核,有 4GB RAM,使用率通常约为 25%。

我也尝试过降低“swappiness”,但是没有成功。

答案1

我的建议是将 swappiness 设置为 0。

将交换性设置为“较低的数字”可能会降低使用交换的“频率”,但将其设置为 0 将强制内核遵循不同的代码路径,强制所有内存分配首先使用所有可用内存和缓存,然后再使用交换空间。

您可以通过执行以下操作将 swappiness 设置为零:

echo 0 > /proc/sys/vm/swappiness

相关内容