前言
Ubuntu系统针对内存不足问题设立了swp缓存区域,即用硬盘区域存放内存数据,以扩充内存。而我们知道内存条与硬盘,特别是机械硬盘的读取速度是有巨大差距的,而内存需要快速地读写,使得swp区域拖慢系统速度。
Ubuntu安装时会有 swp 区域的指定,为了优化考虑,一般来说在内存充足情况下最好不给定。
而在下的电脑是台机械硬盘,安装时不知看的哪里的教程稀里糊涂给swp区域 8个G.. 于是,在开VS code时经常出现卡到动弹不得的情况,迫不得已还要关闭 VS Code的 cpp-tools 插件,在没有索引和跳转下当纯编辑器用,实在是窝囊。
在疫情期间差点准备剁手买固态时,突然发现了曙光。
操作
1、 观察自己的缓存区域设定。
推荐工具 htop , 若未安装可以使用指令:
sudo apt-get install htop
htop
注意到swp条右侧,标注了当时使用和总计的 swp区域。 若正在使用的swp区域 >0 Mb,说明硬盘在快速读写以充当内存的作用。此时若你的机器使用机械硬盘,很可能卡顿。
2、 观察硬盘 IO 读写。
sudo apt-get install iotop
iotop
可以尝试做一些消耗内存的事情,观察是否产生硬盘读写。可以侧面印证这部分高频率的读写正是系统被拖慢的原因。
3.1 降低 swp 区域权重
部分软件需要swp来正常运行,因此最好不要直接全部关闭。笔者发现若全部关闭会在编译时更大几率造成内存爆满使得电脑卡死。
默认情况下,可以用指令看到 swp 所占比率。即内存消耗分配多少给swp:
cat /proc/sys/vm/swappiness
我们调低该比率到 0.1 即可实现优化:
sudo sysctl vm.swappiness=10
想实现开机自动完成设置需要修改:
sudo vim /etc/sysctl.conf
在最尾部添加一行:
vm.swappiness = 10
笔者实际测试该方法是比较稳定而有效的。
3.2 一劳永逸: 关闭 swp
该方式不推荐。供学习使用。
sudo swapoff -a
执行后,系统将缓慢开始释放掉 swp 缓存中存放的内容,你可以看到 htop 中 swp的总量在减少。当减少到0时,执行完毕。此时系统重新返老还童,健步如飞啦!
若希望永久关闭,请转参考链接。
参考
https://blog.csdn.net/CSDN_duomaomao/article/details/75142769?locationNum=8&fps=1