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

2024-05-05 01:28

本文主要是介绍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

这篇关于ubuntu开启zram彻底解决高I/O引起的卡顿,复制文件无比流畅的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/960518

相关文章

C#文件复制异常:"未能找到文件"的解决方案与预防措施

《C#文件复制异常:未能找到文件的解决方案与预防措施》在C#开发中,文件操作是基础中的基础,但有时最基础的File.Copy()方法也会抛出令人困惑的异常,当targetFilePath设置为D:2... 目录一个看似简单的文件操作问题问题重现与错误分析错误代码示例错误信息根本原因分析全面解决方案1. 确保

Ubuntu如何升级Python版本

《Ubuntu如何升级Python版本》Ubuntu22.04Docker中,安装Python3.11后,使用update-alternatives设置为默认版本,最后用python3-V验证... 目China编程录问题描述前提环境解决方法总结问题描述Ubuntu22.04系统自带python3.10,想升级

MySQL 临时表与复制表操作全流程案例

《MySQL临时表与复制表操作全流程案例》本文介绍MySQL临时表与复制表的区别与使用,涵盖生命周期、存储机制、操作限制、创建方法及常见问题,本文结合实例代码给大家介绍的非常详细,感兴趣的朋友跟随小... 目录一、mysql 临时表(一)核心特性拓展(二)操作全流程案例1. 复杂查询中的临时表应用2. 临时

MySQL实现多源复制的示例代码

《MySQL实现多源复制的示例代码》MySQL的多源复制允许一个从服务器从多个主服务器复制数据,这在需要将多个数据源汇聚到一个数据库实例时非常有用,下面就来详细的介绍一下,感兴趣的可以了解一下... 目录一、多源复制原理二、多源复制配置步骤2.1 主服务器配置Master1配置Master2配置2.2 从服

MySQL配置多主复制的实现步骤

《MySQL配置多主复制的实现步骤》多主复制是一种允许多个MySQL服务器同时接受写操作的复制方式,本文就来介绍一下MySQL配置多主复制的实现步骤,具有一定的参考价值,感兴趣的可以了解一下... 目录1. 环境准备2. 配置每台服务器2.1 修改每台服务器的配置文件3. 安装和配置插件4. 启动组复制4.

Python错误AttributeError: 'NoneType' object has no attribute问题的彻底解决方法

《Python错误AttributeError:NoneTypeobjecthasnoattribute问题的彻底解决方法》在Python项目开发和调试过程中,经常会碰到这样一个异常信息... 目录问题背景与概述错误解读:AttributeError: 'NoneType' object has no at

使用Go实现文件复制的完整流程

《使用Go实现文件复制的完整流程》本案例将实现一个实用的文件操作工具:将一个文件的内容完整复制到另一个文件中,这是文件处理中的常见任务,比如配置文件备份、日志迁移、用户上传文件转存等,文中通过代码示例... 目录案例说明涉及China编程知识点示例代码代码解析示例运行练习扩展小结案例说明我们将通过标准库 os

Ubuntu 24.04启用root图形登录的操作流程

《Ubuntu24.04启用root图形登录的操作流程》Ubuntu默认禁用root账户的图形与SSH登录,这是为了安全,但在某些场景你可能需要直接用root登录GNOME桌面,本文以Ubuntu2... 目录一、前言二、准备工作三、设置 root 密码四、启用图形界面 root 登录1. 修改 GDM 配

如何在Ubuntu 24.04上部署Zabbix 7.0对服务器进行监控

《如何在Ubuntu24.04上部署Zabbix7.0对服务器进行监控》在Ubuntu24.04上部署Zabbix7.0监控阿里云ECS服务器,需配置MariaDB数据库、开放10050/1005... 目录软硬件信息部署步骤步骤 1:安装并配置mariadb步骤 2:安装Zabbix 7.0 Server

Ubuntu如何分配​​未使用的空间

《Ubuntu如何分配​​未使用的空间》Ubuntu磁盘空间不足,实际未分配空间8.2G因LVM卷组名称格式差异(双破折号误写)导致无法扩展,确认正确卷组名后,使用lvextend和resize2fs... 目录1:原因2:操作3:报错5:解决问题:确认卷组名称​6:再次操作7:验证扩展是否成功8:问题已解