10
9月
2020
16:39

使用 ZSwap 设置 RAM 压缩

10 9月 2020 16:39

当 RAM 耗尽时,计算机在访问硬盘驱动器上的交换文件时会变得非常慢。 为了解决这个问题,zswap模块被发明了。 默认情况下,它在 Linux 操作系统中处于禁用状态,但您可以启用它。

Поч他需要我使用 zswap 吗? 安装了 2 个 2 GB 内存条,但主板物理上仅支持 3 GB - 这是基于 Intel 82945 芯片组的主板的限制。在另一台同样运行 Linux 的计算机上,安装了 1 GB 和 2 GB 的 RAM 棒(总共 3 GB),通常足以在 Internet 上工作。 但有时打开大型 PDF 文件或图像时,RAM 可能会耗尽......

选择:zram 或 zswap

zram 用于永久页面压缩 - 在内存中分配一个交换部分,压缩的内存页面像常规页面文件一样卸载到其中,但在快速 RAM 中。

zswap 不在内存中分配分区 - 仅在 RAM 中分配动态卷(池),其中仅包含那些可进入物理交换文件的候选页面。 页面在放入池之前也会被压缩。

由于内存大小足够大,我不需要像zram那样不断压缩RAM。 需要确保当 RAM 接近满时不会交换到磁盘。

解决方案:

  1. 在负责传递内核参数的 GRUB 引导加载程序行中,我指示了对 ZSwap 模块的调用:

    sudo nano /etc/default/grub

将 GRUB_CMDLINE_LINUX_DEFAULT 行更正为以下内容:

GRUB_CMDLINE_LINUX_DEFAULT="noresume zswap.enabled=1 zswap.zpool=z3fold zswap.compressor=lz4 zswap.max_pool_percent=35"

GRUB_CMDLINE_LINUX=""

  1. 更新了 GRUB 配置:

    sudo update-grub

  2. 允许加载模块以进行高级压缩

    sudo nano /etc/initramfs-tools/modules

添加了以下行:

lz4
lz4_compress
z3fold

并保存更改。

  1. 我开始更新 initrd 文件(其中包含 iniramfs - 在操作系统启动时加载到 RAM 中的初始文件系统;内核的第二部分是静态文件 vmlinuz,该命令不会更改该文件并包含内核本身):

    sudo update-initramfs -u

  2. 重新启动系统

    sudo reboot

  3. 检查。

  • 设置压缩模块之前没有RAM。

    dmesg | grep zswap

  • 第一次启动没有lz4、lz4compress模块后,dmesg命令输出
    [2.690663]zswap:使用池lzo / zbud加载

  • 最终配置包含 lz4、lz4compress 和 z3fold 模块后,dmesg 命令的输出如下:
    [2.734842]zswap:使用lz4/z3fold池加载


注意事项:

  1. lzo 和 lz4 压缩方法之间的区别在于压缩/解压缩速度 - lz4 具有最高的压缩和解压缩速度。
  2. 在 RAM 量较小的系统上,最好尝试 zswap.zpool=zsmalloc (压缩级别最高 7),而不是 zswap.zpool=z3fold。
  3. 压缩缓存页面的最大池大小为 50%,因为根据具有 3 GB RAM 的计算机上的 free -h,缓存大小为 600 MB,并且 1.1 GB 可用(1.7 GB 约为 3GB RAM 的 50%)。 在 RAM 量较小的系统上,zswap.max_pool_percent 限制应减少到 10-15%,以便达到 200-300 MB。 页面池(压缩缓存)的大小是动态的。

    更新日期:2021 年 6 月 10 日 :在配置文件中增加后 /etc/默认/grub 参数 zswap.max_pool_percent 从 50 到 70 并执行命令 sudo update-grub 可用 RAM(免费)的大小从 213 MB 增加到 500 MB,显然是由于 RAM 压缩所致。 在我看来,最佳尺寸 最大池百分比 最大 RAM 节省范围为 70% 到 90%。 随着参数 最大池百分比 在 90% 的水平上,我没有注意到程序或整个操作系统的运行有任何放缓。 将 zswap.max_pool_percent 增加到 90 后,Mozilla Firefox 浏览器运行时的可用 RAM 大小在 908...937 MB 范围内。 FireFox浏览器的速度也有所提高。

! !! 2021 年 10 月 21 日新增:在 max_pool_percent=90 的情况下,我在提交俄罗斯联邦人口普查完整表格时观察到国家服务网站上的强烈交换。 减少 max_pool_percent=35(约 1 GB RAM),执行 sudo update-grub 并重新启动电脑。 显然,max_pool_percent 参数过度增加(超过 50%)是不可取的。

添加2023.zswap操作统计数据的输出

显示当前 ZSwap 设置

grep -R . /sys/module/zswap

ZSwap性能统计(调试):

须藤 grep -R 。 /sys/内核/调试/zswap/

如果启用了 zswap,但统计信息中没有压缩页面(/sys/kernel/debug/zswap/stored_pages:0),这意味着操作系统有足够的 RAM。 在这种情况下,zswap 调试将产生零,因为没有内存页等待加载到交换区中。

资料来源:



相关出版物