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

相关文章

在Ubuntu上打不开GitHub的完整解决方法

《在Ubuntu上打不开GitHub的完整解决方法》当你满心欢喜打开Ubuntu准备推送代码时,突然发现终端里的gitpush卡成狗,浏览器里的GitHub页面直接变成Whoathere!警告页面... 目录一、那些年我们遇到的"红色惊叹号"二、三大症状快速诊断症状1:浏览器直接无法访问症状2:终端操作异常

Java服务实现开启Debug远程调试

《Java服务实现开启Debug远程调试》文章介绍如何通过JVM参数开启Java服务远程调试,便于在线上排查问题,在IDEA中配置客户端连接,实现无需频繁部署的调试,提升效率... 目录一、背景二、相关图示说明三、具体操作步骤1、服务端配置2、客户端配置总结一、背景日常项目中,通常我们的代码都是部署到远程

C#利用Free Spire.XLS for .NET复制Excel工作表

《C#利用FreeSpire.XLSfor.NET复制Excel工作表》在日常的.NET开发中,我们经常需要操作Excel文件,本文将详细介绍C#如何使用FreeSpire.XLSfor.NET... 目录1. 环境准备2. 核心功能3. android示例代码3.1 在同一工作簿内复制工作表3.2 在不同

Ubuntu向多台主机批量传输文件的流程步骤

《Ubuntu向多台主机批量传输文件的流程步骤》:本文主要介绍在Ubuntu中批量传输文件到多台主机的方法,需确保主机互通、用户名密码统一及端口开放,通过安装sshpass工具,准备包含目标主机信... 目录Ubuntu 向多台主机批量传输文件1.安装 sshpass2.准备主机列表文件3.创建一个批处理脚

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