内存优化与swap
小米平板5这个机器的内存是个硬伤,在没魔改的情况下的情况下内存太小,多开应用会直接爆内存。所以我们需要点手段给这个机器的内存上点魔法,如果你是6GB的机型,那这一步是必做的;如果你是8GB的机器,那也可以根据实际情况来调整或者不做。
Linux的大杀器——zram
在Linux下有zram功能,支持压缩内存,使用zstd算法时能在压缩程度和性能损耗中找到一个平衡点,对于CPU有盈余但内存吃紧的机器,zram能显著减少卡顿。
首先安装zram管理器,执行
bash
sudo pacman -S zram-generator创建配置文件,执行
bash
sudo nano /etc/systemd/zram-generator.conf写入以下配置
conf
[zram0]
zram-size = ram * 0.8
compression-algorithm = zstd
swap-priority = 100
fs-type = swap我的机器是6GB版本,所以我开了80%的内存空间作为zram,8GB版本可以开一半。
执行命令使之立即生效
bash
sudo systemctl daemon-reload
sudo systemctl start /dev/zram0
# 查看一下zram状态
zramctl如果你觉得CPU压力太大,可以换成lz4压缩算法,压缩量没那么大,但是能减轻CPU负担。
配置虚拟内存(swap)
如果你学过OS课程,那虚拟内存这一部分你肯定再熟悉不过了,通过在硬盘上开出一块空间来和内存内容做交换,从而在逻辑上拓展内存空间,缺点就是读写会伤害硬盘,而且速度也不够快。但是对于内存捉急的机器,swap还是有必要的,只是我们不能把swap开的太优先(尽可能不用)。我实测我这台机器的swap文件用的很少,所以其实帮助并不是特别大。
先创建一个swap文件(我创建的是4G,但是可以根据实际情况调整),执行命令
bash
sudo fallocate -l 4G /swapfile给swapfile设置读写权限,然后格式化并挂载启用,执行
bash
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon -p -2 /swapfile这里的-2是优先级,要小于上文中zram的优先级,这样才不会先行调用swap.
验证一下我们的成果
bash
swapon --show输出应该类似这样:
NAME TYPE SIZE USED PRIO
/swapfile file 4G 0B -2
/dev/zram0 partition 4.2G 2.3G 100最后我们要写入fstab的挂载信息里,使得swap永久生效
bash
# 备份一下fstab
sudo cp /etc/fstab /etc/fstab.bak
# 写入永久配置
echo '/swapfile none swap defaults,pri=-2 0 0' | sudo tee -a /etc/fstab到这里我们解决了这个机器OOM的问题,获得了一个不错的使用体验。