调一下swap的使用积极性, 问AI就行, 我电脑也是AMD YES的机器

调一下swap的使用积极性, 问AI就行, 我电脑也是AMD YES的机器

试试内存压缩,好处:
1、成熟技术,内核支持的,内存压缩比硬盘swap优先级高,减少磁盘读写,在没超出压缩空间时,不写入swap
2、并且内存压缩比swap快,就算超出了内存压缩容量,也还是会继续写入swap,不会触发OOM kill
3、实测无问题,目前磁盘读写减少很多,不会因为密集IO影响应用流畅度
执行以下几条命令,安装和启用内存压缩
sudo apt update
sudo apt install zram-tools
sudo systemctl restart zramswap
查看使用情况:
命令:zramctl
详情类似下面:
NAME ALGORITHM DISKSIZE DATA COMPR TOTAL STREAMS MOUNTPOINT
/dev/zram0 lzo-rle 7.7G 1.2G 497.3M 522.9M [SWAP]
呀!你的是小主机啊!

开zswap吧,参考
看来你的 Ubuntu 24.04 默认把 zswap 关掉了。别担心,要永久开启它,只需要改一下启动引导(GRUB)配置就行。
编辑配置文件:打开终端,输入 sudo nano /etc/default/grub进入编辑模式。
添加内核参数:找到 GRUB_CMDLINE_LINUX_DEFAULT这一行,在引号内加上 zswap.enabled=1。建议顺便把压缩算法也配上,推荐用速度快的 lz4或压缩率高的 zstd。
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"GRUB_CMDLINE_LINUX_DEFAULT="quiet splash zswap.enabled=1 zswap.compressor=lz4"更新并重启:保存退出后,运行 sudo update-grub,最后重启系统就能生效了。
如果你只是想先测试一下效果,不想重启,可以用这条命令临时开启:
echo 1 | sudo tee /sys/module/zswap/parameters/enabled
注意,这只是“一次性”的,重启后就会恢复成关闭状态。
重启完成后,再次运行你刚才的命令:
cat /sys/module/zswap/parameters/enabled
如果输出变成了 Y,就说明 zswap 已经成功运行,开始帮你压缩内存了。
看了一下系统6.18.19内核的配置文件,默认开启了Zswap内存回收器,在内存紧张时自动压缩页面并释放内存
# Memory Management options
#
CONFIG_SWAP=y
CONFIG_ZSWAP=y
# CONFIG_ZSWAP_DEFAULT_ON is not set
CONFIG_ZSWAP_SHRINKER_DEFAULT_ON=y
# CONFIG_ZSWAP_COMPRESSOR_DEFAULT_DEFLATE is not set
# CONFIG_ZSWAP_COMPRESSOR_DEFAULT_LZO is not set
# CONFIG_ZSWAP_COMPRESSOR_DEFAULT_842 is not set
# CONFIG_ZSWAP_COMPRESSOR_DEFAULT_LZ4 is not set
# CONFIG_ZSWAP_COMPRESSOR_DEFAULT_LZ4HC is not set
CONFIG_ZSWAP_COMPRESSOR_DEFAULT_ZSTD=y
CONFIG_ZSWAP_COMPRESSOR_DEFAULT="zstd"
CONFIG_ZSMALLOC=y
问了一下AI,各项解释如下
配置项 状态 核心作用
CONFIG_SWAP=y 启用 开启系统Swap交换分区支持(Zswap依赖基础Swap功能)
CONFIG_ZSWAP=y 启用 开启Zswap核心功能:在内存中创建压缩缓存,减少磁盘Swap的IO开销
CONFIG_ZSWAP_DEFAULT_ON is not set 关闭 Zswap默认不自动启用,需手动通过sysfs或内核参数开启
CONFIG_ZSWAP_SHRINKER_DEFAULT_ON=y 启用 默认开启Zswap内存回收器,在内存紧张时自动压缩页面并释放内存
CONFIG_ZSWAP_COMPRESSOR_DEFAULT_ZSTD=y 启用 默认使用Zstd作为压缩算法(当前最优的压缩比/性能平衡方案)
CONFIG_ZSMALLOC=y 启用 启用Zswap专用的内存分配器,优化压缩页面的存储效率
如果CONFIG_ZSWAP_SHRINKER_DEFAULT_ON=y这条和CONFIG_ZSWAP_DEFAULT_ON是平行关系那就不用管了,系统会在内存不足时自动开启zswap
问了一下AI,貌似CONFIG_ZSWAP_SHRINKER_DEFAULT_ON=y是CONFIG_ZSWAP_DEFAULT_ON的子级,默认不开启的话内存回收器也不会启用
不折腾了,因为刚才试了下,开了4个虚拟机+微信+QQ音乐+浏览器70多标签页,系统才开始使用swap分区,日常使用达不到这种程度,所以内存压缩不开对我也基本没影响,内存紧张的可以尝试一下开启试试看效果如何
sudo nano /etc/default/grub
找到这一行:GRUB_CMDLINE_LINUX_DEFAULT="原有参数..."
在引号内原有参数后面追加:
zswap.enabled=1 zswap.shrinker_enabled=1
示例修改后:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash zswap.enabled=1 zswap.shrinker_enabled=1"
nano 编辑器:
Ctrl+O 保存 → 回车确认 → Ctrl+X 退出
sudo update-grub
sudo reboot
Popular Events
More
还有7G多的内存可用,但是交换空间就已经用了一半了,这是正常的现象吗?还是我需要设置什么调优参数