你还可以将"swappiness"值从默认的60设置为其他值,这样交换空间就不会一开始就变得过大。为什么出货时默认设置为60而推荐值是10,这让我感到困惑。
来自Ubuntu SwapFAQ:
在Ubuntu中,默认设置是swappiness=60。减少swappiness的默认值可能会提高典型Ubuntu桌面安装的整体性能。推荐的swappiness值是10,但也可以随意尝试其他值。
通过将该值更改为10甚至0,您可以显著提升旧系统和慢速驱动器的速度。将该值设置为0并不会关闭Linux内核3.4及以下版本的交换空间,但在3.5+版本中会关闭,因此如果您希望保持最低设置,则应使用值为1。
我看不出为什么不将此设置为0,因为任何写入磁盘的操作都比RAM慢。我有8个虚拟核心,一个快速的SSD和8GB内存,我的交换空间设置为0。此刻我有3个虚拟机正在运行,我的内存使用量是7.1GB中的7.7GB,我的已使用交换空间只有576KB中的952MB,所有系统都运行顺畅!
根据Ubuntu SwapFAQ中的
链接:
swappiness参数控制内核将进程从物理内存移到交换磁盘的倾向。由于磁盘比RAM慢得多,如果过于积极地将进程移出内存,这可能导致系统和应用程序的响应时间变慢。
swappiness可以取0到100之间的值。
swappiness=0告诉内核尽可能避免将进程从物理内存中交换出去。
swappiness=100告诉内核积极地将进程从物理内存中交换出去并将它们移动到交换缓存中。
以下是检查swappiness、清空交换分区并将swappiness更改为0的基本说明:
要检查swappiness值:
cat /proc/sys/vm/swappiness
临时将交换空间设置为0(如SpamapS建议):
这将清空你的交换空间,并将所有的交换空间转移到内存中。首先确保你有足够的可用内存,方法是查看gnome-system-monitor的资源标签页,你的可用内存应该大于已使用的交换空间。此过程可能需要一段时间,请使用gnome-system-monitor来监视和验证进展。
sudo swapoff --all
将新值设置为0:
sudo sysctl vm.swappiness=0
重新打开交换功能:
sudo swapon --all
要永久将swappiness设置为0:
sudoedit /etc/sysctl.conf
- 添加以下行
vm.swappiness = 0
sudo shutdown -r now
# 重新启动系统
* 在内核版本3.5+中,将swappiness设置为0会完全关闭它,如果您想要最低的swappiness算法,则建议将其设置为1。来源:https://www.percona.com/blog/2014/04/28/oom-relation-vm-swappiness0-new-kernel/