ubuntu开启zram彻底解决高I/O引起的卡顿,复制文件无比流畅


环境: Ubuntu 22.04.3 LTS

ZRAM 的原理是:

  1. 将一块内存区域作为虚拟的块设备,
  2. 压缩页面交换数据,
  3. 存储在内存中,
  4. 释放物理内存空间
  5. 可用的物理内存就能随之变多

开启/加载 zRAM 模块

sudo modprobe zram num_devices=1
lsmod  | grep zram

安装zram-config

sudo apt install zram-config

加载zram模块

sudo modprobe zram

更新initramfs以加载zram模块(可选)

sudo update-initramfs -u

使用sudo命令启用zram-config服务:

sudo systemctl enable zram-config

使用sudo命令启动zram-config服务:

sudo systemctl start zram-config

重启zram-config服务以应用更改:(释放内存)

sudo service zram-config restart

修改swappiness参数

sudo vim /etc/sysctl.conf

末尾添加

vm.swappiness = 180

应用新的swappiness设置:

sudo sysctl -p /etc/sysctl.conf

启用 ZRAM 内核模块

echo "zram" | sudo tee /etc/modules-load.d/zram.conf
echo "options zram num_devices=1" | sudo tee /etc/modprobe.d/zram.conf

使其立即生效

sudo modprobe zram

配置 zram0 设备

查看默认压缩算法,带括号就是默认的

cat /sys/block/zram0/comp_algorithm

查看zram大小

cat /sys/block/zram0/disksize

配置持久化

lz4hc 为压缩算法
2G 为zram大小,推荐大小为物理内存的一半

echo 'KERNEL=="zram0", ATTR{comp_algorithm}="lz4hc", ATTR{disksize}="2G", TAG+="systemd"' | sudo tee  /etc/udev/rules.d/99-zram.rules

然后重载模块

sudo modprobe zram

将 zram0 设备配置为 Swap

sudo mkswap /dev/zram0
sudo swapon /dev/zram0

开机自启

sudo vim /etc/systemd/system/zram.service

添加内容

[Unit]
Description=ZRAM
BindsTo=dev-zram0.device
After=dev-zram0.device

[Service]
Type=oneshot
RemainAfterExit=true
ExecStartPre=/sbin/mkswap /dev/zram0
ExecStart=/sbin/swapon -p 2 /dev/zram0
ExecStop=/sbin/swapoff /dev/zram0

[Install]
WantedBy=multi-user.target

重载配置文件

systemctl daemon-reload
sudo systemctl enable zram

最后重启服务器

reboot

查看zram设备

ls /dev/zram*   

查看已加载的 ZRAM 模块

lsmod | grep zram

显示已启用的交换空间

swapon --show

查看zram0设备

lsblk

调整优先级

目的是让zram优先使用

先关闭swap

sudo swapoff -a

再开启swap

 sudo swapon -a

查看

swapon --show

输出信息

vagrant@ubuntu:~$ swapon --show
NAME       TYPE      SIZE USED PRIO
/dev/zram0 partition 982M   0B    5
/swap.img  file        2G   0B   -2

-2:表示这个交换空间被标记为不活跃的,也就是说,这个交换空间不会被默认使用

5:这是一个正整数优先级,具有默认的优先级。当系统需要进行交换时,会按照优先级的顺序逐个使用这些交换空间。

测压

安装stress工具

sudo apt install stress

测试

stress --vm 1 --vm-bytes 2G --timeout 60s

这将启动一个stress进程,它会尝试分配2GB的内存并保持该状态持续60秒

因为我的物理内存是2G,所以我使用2G测试,当zram耗尽时,就会启用swap

可以另外开一个窗口,使用top命令查看系统状态

top

ZRAM 分析

zramctl --output-all
  • 6
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值