7.1 调整swappiness属性
swappiness参数配置您的系统将数据从RAM交换到交换空间的频率, 值介于0和100之间,表示百分比。如果swappiness值接近0,内核将不会将数据交换到磁盘,除非绝对必要。要记住一点,与swap文件的交互是“昂贵的”,因为与swap交互花费的时间比与RAM的交互更长,并且会导致性能的显著下降。系统更少依赖swap分区通常会使你的系统更快。swappiness接近100的值将尝试将更多的数据放入交换中,以保持更多的RAM空间。根据您的应用程序的内存配置文件或您使用的服务器,这可能会在某些情况下更好。
查看当前的swappiness值:
| $ cat /proc/sys/vm/swappiness |
结果显示
60
对于桌面系统来说,60的swappiness设置不是一个比较坏的值,但是对于服务器,您可能希望将其设置与0更接近的值。
我们可以使用sysctl命令将swappiness设置为不同的值,例如,要将swappiness设置为10:
| $ sudo sysctl vm.swappiness=10 |
显示结果:
vm.swappiness = 10
该设置将保持到系统下次重新启动,如果想要在重启之后也生效,我们可以通过在/etc/sysctl.conf文件中添加一行实现:
| $ sudo nano /etc/sysctl.conf |
在文件的最后添加:
| vm.swappiness=10 |
完成后保存并关闭文件。
7.2 调整缓存压力设置
您可能想要修改的另一个相关值是vfs_cache_pressure,这个设置配置系统将选择多少数据缓存inode和dentry信息。基本上,这是访问有关文件系统的数据,通常是非常耗时的查询和频繁要求,所以这是一个很好的事情,让您的系统缓存,您可以通过再次查询proc文件系统来查看当前值。
| $ cat /proc/sys/vm/vfs_cache_pressure |
输出结果:
100
这个配置可能使我们的系统太快地从缓存中删除inode信息。 我们可以设置一个更保守的值,比如50。
| $ sudo sysctl vm.vfs_cache_pressure=50 |
显示结果:
vm.vfs_cache_pressure = 50
和swappiness类似,这只对当前的session有效,我们可以通过将其添加到我们的配置文件来改变它,就像我们使用我们的swappiness设置一样:
| $ sudo nano /etc/sysctl.conf |
在末尾添加:
| vm.vfs_cache_pressure=50 |
完成后保存并关闭文件。
8.总结
遵循本指南的步骤将给您一些喘息的空间,否则会导致内存不足的例外,swap空间对于避免这些常见问题非常有用,如果遇到OOM(内存不足)错误,或者如果发现系统无法使用所需的应用程序,则最佳解决方案是优化应用程序配置或升级服务器。








