问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

小内存福音:如何通过 ZRAM 内核模块,压缩 Ubuntu 内存

创作时间:
作者:
@小白创作中心

小内存福音:如何通过 ZRAM 内核模块,压缩 Ubuntu 内存

引用
1
来源
1.
https://www.sysgeek.cn/zram-ubuntu/

ZRAM是一个Linux内核模块,可以在系统内存(RAM)中创建一个压缩的块设备。通过压缩内存中的数据,ZRAM可以增加可用内存的有效容量。本文将详细介绍ZRAM的工作原理,并提供在Ubuntu系统中加载和配置ZRAM模块的具体步骤。

如果你正在使用Ubuntu系统,并且希望在内存受限的机器上提升系统性能,ZRAM是一个非常不错的选择。通过压缩内存中的数据,ZRAM可以有效减少物理内存的占用,从而让系统可以运行更多的应用程序,或处理更大规模的任务。

1. 什么是 ZRAM?

ZRAM是一个Linux内核模块,它可以在系统内存(RAM)中创建一个压缩的块设备(Block Device)。通过压缩内存中的数据,ZRAM可以增加可用内存的有效容量。

与传统的交换分区(swap)相比,ZRAM不使用磁盘空间,而是直接在内存中进行数据压缩,从而减少了频繁的磁盘I/O操作带来的性能瓶颈。

1.1 ZRAM 的工作原理

  • 创建块设备:ZRAM会创建一个虚拟块设备。这个设备不会像传统块设备(如磁盘分区)那样将数据存储在磁盘上,而是直接将数据保存在内存中。

  • 数据压缩:当系统向ZRAM块设备写入数据时,ZRAM模块会对数据进行压缩,并将压缩后的数据存储在内存中。这种方式可以在不增加物理内存的情况下「变相扩展」内存容量。

  • 数据解压缩:当需要读取存储在ZRAM中的数据时,内核会对数据进行解压,然后再将解压后的数据提供给应用程序或系统进程。

ZRAM的压缩机制虽然可以节省内存,但压缩和解压过程需要CPU的参与,所以会增加一定的CPU负载。因此,在CPU性能较弱的系统中,大量使用ZRAM反而可能会导致系统性能下降。

2. 在 Ubuntu 加载 ZRAM 模块

2.1 检查 Ubuntu 内存使用情况

在启用ZRAM之前,最好先通过free命令来了解系统当前的内存使用情况:

free -h

使用free命令查看Ubuntu内存使用

此命令会显示你的总内存、已用内存和空闲内存。通过这些信息,可以与启用ZRAM之后进行对比。

2.2 在 Ubuntu 上加载 ZRAM 模块

ZRAM已经包含在Linux内核中,我们只需加载ZRAM模块并验证模块是否加载成功。

sudo modprobe zram # (临时)加载zram内核模块
lsmod | grep zram # 查看是否加载成功

加载zram内核模块并验证是否成功

如果在输出中看到zram,就表示模块已成功加载。

3. 在 Ubuntu 中配置 ZRAM

3.1 创建 ZRAM 服务

为了方便配置和管理,我们可以将ZRAM配置编写成一个服务脚本,来方便随时启用和禁用:

  1. 使用你习惯的文本编辑器(如vim或nano),创建一个zram.service服务配置文件:

    sudo vim /etc/systemd/system/zram.service
    
  2. 将以下配置并粘贴到文件中:

    [Unit]
    Description=ZRAM Configuration
    After=local-fs.target
    
    [Service]
    Type=oneshot
    ExecStart=/usr/sbin/modprobe zram
    ExecStart=/bin/sh -c 'echo 2G > /sys/block/zram0/disksize'
    ExecStart=/bin/sh -c 'mkswap /dev/zram0'
    ExecStart=/bin/sh -c 'swapon /dev/zram0'
    RemainAfterExit=yes
    
    [Install]
    WantedBy=multi-user.target
    

    根据你Ubuntu系统的物理内存大小,在ExecStart行中调整需要的ZRAM大小,一般设置为RAM大小的50%-100%。

  3. 使用以下命令启动并启用ZRAM服务:

    sudo systemctl daemon-reload # 重新载入服务配置文件
    sudo systemctl enable zram.service # 启用zram服务
    sudo systemctl start zram.service # 启动zram服务
    

加载并启动ZRAM服务

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号