如何减少 Linux 磁盘抖动,使用 Zswap 提升小内存 Linux PC 性能

2023年 8月 18日 55.6k 0

如何减少 Linux 磁盘抖动,使用 Zswap 提升小内存 Linux PC 性能-1

随着操作系统的不断更新和迭代,也反向推动了用户对计算机硬件的不断升级。例如,从 Windows XP 之后的 Windows Vista 系统开始,不配置个 4GB 内存,就很难运行顺畅。但作为 Linux 用户,很多用户则喜欢使用老旧的计算机或者笔记本来运行,而许多 Linux 发行版本在小内存计算机上也可以运行流畅。

但随着 Linux 系统的不断更新,浏览器应用反而成了吃内存大户。例如采用 LXDE 桌面环境的 Linux 系统在启动后只需占用约 150MB 的内存,但在 Chromium、Chrome 或 Firefox 中多打开几个标签时,内存就会迅速消耗几百 MB 甚至数 GB。当内存占用光后,机械硬盘转动就会越加频繁,Linux 系统中的音乐播放甚至会出现卡顿,应用程序切换也会有严重的延迟, 有可能连移动鼠标都会有延迟,而这一切都是受「磁盘抖动」的影响而造成的结果。

什么是磁盘抖动

首先需要了解什么是 SWAP 交换分区。在 Linux 系统中,当空闲内存消耗光时,操作系统长时间不访问的应用程序数据会被移动到 SWAP 交换区域,而 SWAP 交换分区通常存储在物理硬盘上。通过这样的机制,Linux 系统就可以释放出一些物理内存空间提供给需要的应用程序。

这样一来,用户在过去一断时间未访问的浏览器标签页就可能会被挪动到 SWAP 交换分区(即物理硬盘)当中,只有当用户切换回该标签时,Linux 才会将其从 SWAP 交换回物理内存当中。

如何减少 Linux 磁盘抖动,使用 Zswap 提升小内存 Linux PC 性能-2

当 SWAP 和物理内存之间的数据交换量较少时,此机制非常有效。但如果你的 Linux PC 只有 2GB 内存,打开的(所有)应用程序需要 4GB 内存时,Linux 就会在物理内存和 SWAP 之间不断交换数据。而物理硬盘的速度相较物理内存来说,速度是极其慢的,在这种情况下,存储设备基本上都无法满足更快的交换请求。也就是说,当「磁盘抖动」发生时,Linux 中的所有操作都会变得非常迟缓和卡顿。

SSD非常适合SWAP分区

此前网上曾有一句名言,大意是「永远不要在 SSD 磁盘上分配 SWAP 分区,它会干掉你的存储设备。」这句话在几年前算是「至理」,而现在却有所不同了。

实际上,在 SSD 磁盘上设置 SWAP 交换分区会有非常好的效果。如果你的计算机上配置有良好随机读/写性能(至少300MB)的 SSD 设备,你可以在其上配置 SWAP 分区,并直接忽略掉后文了。

如何显着减少Linux上的磁盘抖动

存储在 RAM 中的大多数数据其实都是可以压缩的,这意味着如果我们将 200MB的数据存储在内存中并对其进行压缩,甚至可以将大小减小到 100MB。这意味着,数据交换时 Linux 只须将更少的数据量写入到磁盘当中。

我们介绍的 Zswap 工具比较复杂,它能够智能地仅向磁盘发送无法压缩的位和片段,而将其余部分保存在内存的「保留部分」中。如果你想了解其内部的详细工作原理,可以参考 Linux Kernel 网站上有关 zswap 的页面。

如何在基于Debian的发行版中启用Zswap

1 打开「终端」——使用 vi 或 sudoedit 编辑 Grub 引导加载程序:

vi /etc/default/grub

2 在 GRUB_CMDLINE_LINUX_DEFAULT 行的引号内容中追加 zswap.enabled=1

如何减少 Linux 磁盘抖动,使用 Zswap 提升小内存 Linux PC 性能-3

3 编辑完成后,执行 sudo update-grub 命令以生新的 Grub 配置文件。

如何减少 Linux 磁盘抖动,使用 Zswap 提升小内存 Linux PC 性能-4

4.重启系统后 zswap 模块将自动启用。

如何在基于Fedora和OpenSUSE的发行版中启用Zswap

1 打开「终端」——使用 vi 或 sudoedit 编辑 Grub 引导加载程序:

sudoedit /etc/default/grub

2 在 GRUB_CMDLINE_LINUX 行的引号内容中追加 zswap.enabled=1

如何减少 Linux 磁盘抖动,使用 Zswap 提升小内存 Linux PC 性能-5

3 根据您的计算机是从 BIOS 还是 UEFI 系统引导,Grub 配置文件是在不同的路径中生成的。 要查找当前所在的位置,请执行以下命令:

sudo find /boot/ -name grub.cfg

如何减少 Linux 磁盘抖动,使用 Zswap 提升小内存 Linux PC 性能-6

4 根据上一条命令的输出来执行以下命令:

sudo grub2-mkconfig -o /boot/grub2/grub.cfg

5 重启计算机后,执行以下命令来验证 zswap 是否处于激活状态:

cat /sys/module/zswap/parameters/enabled

如果输出为 Y,则模块正常工作。

Arch Linux如何启用Zswap

1 在「终端」中执行以下命令安装 systemd-swap 包:

sudo pacman -Sy systemd-swap

如何减少 Linux 磁盘抖动,使用 Zswap 提升小内存 Linux PC 性能-7

2 执行以下命令启动 systemd-swap 并让其随时系统启动:

sudo systemctl start systemd-swap
sudo systemctl enable systemd-swap

3 执行以下命令验证 zswap 模块是否已启用:

cat /sys/module/zswap/parameters/enabled

如何减少 Linux 磁盘抖动,使用 Zswap 提升小内存 Linux PC 性能-8

如果输出为 Y,则模块正常工作。

相关文章

服务器端口转发,带你了解服务器端口转发
服务器开放端口,服务器开放端口的步骤
产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
如何使用 WinGet 下载 Microsoft Store 应用
百度搜索:蓝易云 – 熟悉ubuntu apt-get命令详解
百度搜索:蓝易云 – 域名解析成功但ping不通解决方案

发布评论