7

使用ZSWAP改善低内存电脑的性能

 3 years ago
source link: https://www.lujun9972.win/blog/2018/11/27/%E4%BD%BF%E7%94%A8zswap%E6%94%B9%E5%96%84%E4%BD%8E%E5%86%85%E5%AD%98%E7%94%B5%E8%84%91%E7%9A%84%E6%80%A7%E8%83%BD/index.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

使用ZSWAP改善低内存电脑的性能

我们都知道,当电脑物理内存不够操作系统使用时,操作系统会把部分物理内存的内容临时写入磁盘中,在物理内存足够后再从磁盘读回物理内存,这个过程叫做SWAP。 然而由于磁盘的写入/读取速度要远远慢于内存的读写速度,因此SWAP的过程会严重拖慢电脑性能。 当电脑内存足够,SWAP交换数据较少的时候还没什么,但若电脑内存不足引起大量SWAP,那电脑性能将会受到严重的影响,这时你会发现你的磁盘在不断地转动。

缓解SWAP的问题有两个方法,一个方法是想办法提高读写磁盘的速率,比如将机械硬盘换成SSD盘。 另一个方法就是想办法降低SWAP发生的概率。

Linux kernel自3.11开始引入了zswap的功能,它能够将原本要交换到磁盘上的内存压缩,放到内存的一个内存池中,从而减少发生SWAP的概率。

启用zswap

临时启用zswap

临时启用zswap很简单,只需要

sudo echo 1|tee /sys/module/zswap/parameters/enabled

永久启用zswap

若想每次重启都自动启用zswap,则可以修改启动时的内核参数,添加上 zswap.enabled=1

  1. 编辑 /etc/default/grub,在 GRUB_CMDLINE_LINUX_DEFAULT 后加上 zswap.enabled=1
  2. 运行 grub-mkconfig -o /boot/grub/grub.cfg 重新生成GRUB配置文件

在archlinux上,我们还可以通过 systemd-swap 来帮我们开启zswap

sudo pacman -S systemd-swap --noconfirm
sudo systemctl enable systemd-swap
sudo systemctl start systemd-swap

配置zswap

zswap有下面几个配置参数:

grep -R . /sys/module/zswap/parameters/
/sys/module/zswap/parameters/enabled:Y
/sys/module/zswap/parameters/max_pool_percent:25
/sys/module/zswap/parameters/compressor:lz4
/sys/module/zswap/parameters/zpool:zbud
  • zwap.enabled: 表示是否启用zswap功能
  • zswap.compressor: 表示用来压缩内存的算法,可以是lzo、lz4、lz4hc、deflate
  • zswap.max_pool_percent: 用来表示存放压缩内存的内存池的最大值,内存池本身并不是预先分配好的,而是根据需要慢慢增加,但最大不超过这个限定值
  • zswap.zpool: 内存池的管理算法,可以是zbud或z3fold,其中z3fold要比zbud有更好的压缩率

你可以手工将上面这些参数加入到启动的内核参数中,比如 zswap.enabled=1 zswap.compressor=lz4 zswap.max_pool_percent=20 zswap.zpool=z3fold

若是通过 systemd.swap 来管理交换区的,则可以通过修改 /etc/systemd/swap.conf 来进行配置

grep -i zswap /etc/systemd/swap.conf
# Zswap
# Zswap create compress cache between swap and memory for reduce IO
# https://www.kernel.org/doc/Documentation/vm/zswap.txt
zswap_enabled=1
zswap_compressor=lz4      # lzo lz4
zswap_max_pool_percent=25 # 1-99
zswap_zpool=zbud          # zbud z3fold

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK