首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏王小二的Android站

    zram.txt

    前言 zram是基于内存压缩的块设备,怎么理解,假设我们申请一个1G的zram块设备,这个块设备并没有实际的物理存储区域,是用内存模拟的,当一个128MB的文件被写入到zram的块设备,这个文件会被经过 目前手机中的swap机制就是基于zram实现的,swap机制就是将不常用的内存页保存到zram块设备上,然后释放不常用的页,增加可用内存,当需要用到这块内存页的时候,再去从zram块设备上读取数据到内存上 第二zram支持writeback功能,可以将zram中申请的物理页回写到真实的磁盘中,进一步释放内存。 翻译 zram: 基于内存压缩的块设备 ---------------------------------------- * 介绍 zram模块创建基于RAM的块设备,名为/dev/zram<id>( /dev/zram0 swapon /dev/zram0 //格式化成ext4,挂载到/tmp mkfs.ext4 /dev/zram1 mount /dev/zram1 /

    3.8K30发布于 2020-06-08
  • 来自专栏带你玩转Jetson系列教程

    Jetson 中的 Zram 技术详解(1)

    【Jetson 中的 Zram 源码详解(2)中会讲解源码部分】 二、Zram 使用 2.1 Zram 环境信息 1)查看 Jetson 设备是否支持 zram,需要我们的盒子上的运行的 内核版本大于 3.14; uname -a 2)查看当前内核版本是否支持 Zram,这里显示系统是支持 Zram 模块; modinfo zram 3)查看内核模块是否启动,当前 Zram 模块已经启动; lsmod | grep zram 如果 Zram 模块没有启动,那应该怎么启动呢? 1)新增 Zram 模块的配置文件; /etc/modules-load.d/zram.conf 在配置文件中,增加 zram 即可,重启设备,这个只是将 zram 加载到内核模块,通过 lsblk 还是不能查看到 的块设备信息了;到此时,只是配置了 zram 的块设备,还需要将 zram 配置成 swap; 4)配置 Zram 为 swap; mkswap /dev/zram0 swapon /dev/zram0

    91010编辑于 2024-07-07
  • 来自专栏linux驱动个人学习

    zRAM内存压缩技术原理与应用

    6. zRAM技术应用 本节描述一下在使用ZRAM常遇到的一些使用或配置,调试的方法。 zram大小为2GB echo 2147483648 > /sys/block/zram0/disksize 3) 使能zram mkswap /dev/zram0 swapon /dev/zram0 6.3 zRam相关的技术指标 1) ZRAM大小及剩余空间 Proc/meminfo中可以查看相关信息 SwapTotal:swap总大小, 如果配置为ZRAM, 这里就是ZRAM总大小 SwapFree :swap剩余大小, 如果配置为ZRAM, 这里就是ZRAM剩余大小 当然, 节点 /sys/block/zram0/disksize是最直接的。 zRam大小的配置比较灵活, 如果zRam配置过大, 后台缓存了应用过多, 这也是有可能会影响前台应用使用的流畅度。另外, zRam配置越大, 也需要关注系统的内存碎片化情。

    5.3K60发布于 2021-05-10
  • 来自专栏带你玩转Jetson系列教程

    Jetson 中的 Zram 源码详解(2)

    在上一篇 《Jetson 中的 zram 技术详解》中已经介绍了相关 Zram 的技术部分以及如何在 Jetson 设备上使用 Zram,本篇文章将着重介绍下 Linux 内核中关于 Zram 目录; linux/drivers/block/zram 这个是最新的 master 分支的代码,如果需要查看指定内核版本的代码,可以切换到指定版本,这里我将内核代码切换到和当前使用的版本(v5.10 )一致的代码; 在 github 上的目录信息: 整个 zram 的代码不算很多,下面对源码进行详细的分析; 2、源码分析 2.1 zram_drv.c zram 作为一个块设备,详细解析下这个块设备驱动的源码 ,文件总共有 2100 多行; 2143 - 2151 行: module_init(zram_init); module_exit(zram_exit); module_param(num_devices module_exit:驱动卸载的函数:zram_exit

    33510编辑于 2024-07-07
  • 来自专栏ADAS性能优化

    Zram idle page writeback在android 中应用

    为了更好的性能和节省更多的成本,ZRAM 来了。zram page writeback也来了。 ZRAM RAM是最快的内存类型,但是通常大小有限。高端设备通常具有最大数量的RAM。 zRAM是用于交换空间的RAM的分区。将所有内容放入zRAM时都将进行压缩,然一般是3:1。然后系统再从zRAM中其解压缩如果需要用到相关的page。 ZRAM _write Back ZRAM 中有许多空闲页面,这些页面很少被使用,ZRAM 也占用了物理内存 这部分idle 的页面也是一种浪费。 backing_dev://zram 写到storge的地址。 ro.zram.mark_idle_delay_mins: The time in minutes after boot up when the tracking of idle pages in zram

    2K10编辑于 2022-05-13
  • 来自专栏Linux内核那些事

    一文读懂|zRAM 内存压缩机制

    创建 zRAM 块设备 要启用 zRAM,首先需要创建 zRAM 块设备。 要创建 zRAM 块设备,可以使用以下命令: modprobe zram num_devices=1 num_devices 参数可以指定创建 zRAM 块设备的个数,上面命令创建了一个 zRAM 块设备 设置 zRAM 块设备的大小 创建完 zRAM 块设备后,可以通过以下命令来设置其空间大小: echo 512M > /sys/block/zram0/disksize 上面命令设置了 zram0 的大小为 将 swap 交换设备设置为 zRAM 要将 swap 的交换设备设置为 zRAM 块设备,可以使用以下命令: mkswap /dev/zram0 当执行完上面这条命令后,内核将会使用 zram0 作为 zRAM实现 zRAM 块设备驱动的实现代码主要在 drivers/block/zram/zram_drv.c 文件中,下面我们主要围绕此文件进行分析。

    4.7K20编辑于 2023-10-06
  • 来自专栏玩转Lighthouse

    【玩转幻兽帕鲁】手动配置虚拟内存或Swap、Zram

    收到大量玩家反馈,开服后在进行一段时间的游戏后会出现内存溢出导致异常退出游戏的情况,这里为大家提供一些缓解内存不足的方案作参考:配置Windows服务器虚拟内存、配置Linux服务器Swap、配置Linux服务器Zram 为 Linux 服务器配置 Zram Zram(也称为压缩内存块设备)是Linux内核中的一个功能,用于提供虚拟内存的压缩和解压缩功能。 提示:使用腾讯云轻量应用服务器Lighthouse幻兽帕鲁Ubuntu应用模板部署的服务器已默认设置Zram,无需再额外手动配置。 配置了 Zram 之后,服务器内存配置不变的情况下,可承载的人数或持续运行的时间均有一定程度的提升。 .cos.accelerate.myqcloud.com/pal-server/Ubuntu/zram.sh|sh 配置成功的效果如下所示。

    2.4K41编辑于 2026-02-03
  • 来自专栏hotarugaliの技术分享

    ArchLinux下设置交换空间

    zram:在内存中提供了一个压缩块,内存可以保存更多的数据,代价是消耗更多的 CPU 。 它仍然比硬盘上的交换空间快得多。若一个系统经常使用交换空间,使用 zram 可以提高响应。 两者不同的是 zswap 将页面压缩后换入交换空间,而 zram 则换入内存。 因此,相较于 zswap,zram 的响应是更快的。 3.2.1 zram-generator zram-generator 项目使用 Rust 编写,主要用于创建 zram 设备,即在内存中划分出一个或多个交换分区,用于缓存压缩后的页面。 首先安装 zram-generator。 sudo pacman -S zram-generator 然后创建并编缉配置文件 /etc/systemd/zram-generator.conf。 压缩缓存块: [zram0] zram-fraction = 0.50 # 压缩缓存块最大占用一半的内存 最后重启系统。

    3.8K20编辑于 2022-03-18
  • 来自专栏Mintimate's Blog

    搭建和部署GitLab代码托管平台,自己的CI/CD堡垒

    启动Docker官方是不建议使用SWAP的,但是我不是很确实,是否也不推荐使用ZRAM。 于是,我们在部署前,打开系统的ZRAM。 因为使用的腾讯云Lighthouse的Debian系统,所以直接使用apt软件包管理器:# 安装zram-tools直接对zram进行管理sudo apt install zram-toolszram-tools PRIORITY=100配置好文件后,重启zramswap.service服务:sudo systemctl restart zramswap到此,ZRAM就启动完成了。 如果你后期想查看ZRAM的使用,可以使用命令:# 显示当前系统上所有zram设备的详细信息,包括设备编号、压缩算法、设备大小、使用的内存等sudo zramctl图片Dcoker准备Docker的部署,

    8.6K53编辑于 2023-09-21
  • 来自专栏腾讯技术工程官方号的专栏

    腾讯云原生场景下内存多级卸载落地实践

    zram增强模块:per-cgroup zram priority、per-cgroup zram counter(raw、limit、usage)每个cgroup可以独立设置zram压缩登极,对于 zram增强 ZRAM Enhance基于上游 Object Cgroup API 实现,每个 Cgroup 提供了: ● 独立更改 ZRAM 压缩级别: /memory.zram.priority:每个 ● 独立统计 ZRAM 压缩数据: /memory.zram.raw_in_bytes:以 Byte 为单位的换出到zram压缩前的数据大小 /memory.zram.usage_in_bytes:以 Byte 为单位的换出到zram压缩后的总数据大小 ● 限制 ZRAM 压缩量 /memory.zram.limit_in_bytes:以Byte为单位,限制本memcg换出到zram的总数据大小,超出这个限制后 ,匿名页面将无法换出到zram设备。

    1K10编辑于 2023-11-29
  • 来自专栏鸿蒙开发笔记

    OpenHarmony构建新的内存管理优化方案

    传统内存方案及管理机制在传统的Linux内存优化方案中,终端设备通常采用SWAP及ZRAM内存方案。 1.2 ZRAMZRAM即内存压缩技术,如图2所示,在系统的物理内存不足时,将系统物理内存的一部分划分出来作为ZRAM分区,然后把不常用的匿名页压缩后放到ZRAM分区里,相当于牺牲了一些CPU效率,以增大系统可用内存供当前运行的程序使用 等到需要使用时,再从ZRAM分区中将数据解压出来。 图2 ZRAM内存压缩技术虽然ZRAM在一定程度上增大了设备内用内存,但是如果没有合适的方式来对内存进行管理,负面影响也会非常明显,将会造成内存页频繁的压缩/解压缩,从而抢占正常业务的CPU时间,增加系统的功耗 2.2.1 定制的ZRAM和交换分区ESWAP结合内存压缩和内存交换技术,提供了自定义新增存储分区作为内存交换分区的能力,并在内核中创建了一个常驻进程ZSWAPD,用于将ZRAM压缩后的匿名页加密换出到

    67520编辑于 2024-07-24
  • 来自专栏腾源会

    OpenCloudOS 内存多级卸载落地实践分享

    但是压缩在 zram 的匿名页面无法被限制,会造成计数器泄露的问题,pod 可能无限制的利用 node 上的 zram 资源,而 k8s 感知不到。 ●zram增强模块:per-cgroup zram priority、per-cgroup zram counter(raw、limit、usage)每个cgroup可以独立设置zram压缩等级,对于per-cgroup zram增强ZRAM Enhance基于上游 Object Cgroup API 实现,每个 Cgroup 提供了:●独立更改 ZRAM 压缩级别:<cgroup>/memory.zram.priority ●独立统计 ZRAM 压缩数据:<cgroup>/memory.zram.raw_in_bytes:以 Byte 为单位的换出到zram压缩前的数据大小<cgroup>/memory.zram.usage_in_bytes :以 Byte 为单位的换出到zram压缩后的总数据大小●限制 ZRAM 压缩量<cgroup>/memory.zram.limit_in_bytes:以Byte为单位,限制本memcg换出到zram的总数据大小

    89430编辑于 2023-11-15
  • 来自专栏IT运维技术圈

    推荐一个系统工程师必备的装13工具

    AMD: amdvlk NVIDIA: nvidia-dkms 输入设备 libinput 1.19+ 支持手势识别设备 文件系统 Btrfs/XFS 推荐启用透明压缩 性能调优 内存优化方案# zRAM 配置模板(/etc/systemd/swap.conf) zram_enabled=1 zram_size=$((RAM_SIZE * 1024 / 2)) # 物理内存50% zram_streams

    63300编辑于 2025-04-09
  • 来自专栏A5IDC

    为什么Linux服务器的Swap内存使用率达到100%,如何通过调整内存使用策略避免系统崩溃?

    5.4改用ZRAM减少Swap磁盘IOZRAM可以在内存内部创建压缩的交换区,避免磁盘IO延迟:展开代码语言:BashAI代码解释aptinstallzram-toolscat<<EOF>/etc/default /zramswapENABLED=1ZRAM_PERCENT=25EOFsystemctlenablezramswapsystemctlstartzramswap此配置创建大小为内存25%的压缩Swap Swappinessvfs_cache_pressureZRAMSwapUsage(%)si/so(KB/s)99thLatency(ms)OOM事件默认60100否9864/58230是调整Swappiness1050否6512/993否Swappiness+ZRAM1050 加上ZRAM后,由于Swap压缩减少了磁盘IO,延迟进一步降低。七、避免系统崩溃的综合策略7.1内存预留与容量规划根据服务峰值内存需求配置足够RAM。 通过:合理调整vm.swappiness和vm.vfs_cache_pressure使用cgroups限制内存边界引入ZRAM减少磁盘Swap压力做好内存容量规划和监控可以从源头上减少Swap依赖、提升系统稳定性并避免崩溃

    86710编辑于 2026-01-08
  • 性能与体验的终极博弈:Flutter 在 OpenHarmony 上的启动优化、内存治理与功耗控制

    性能与体验的终极博弈:Flutter 在 OpenHarmony 上的启动优化、内存治理与功耗控制 作者:晚霞的不甘 日期:2025年12月3日 关键词:冷启动优化、Dart AOT、Skia 内存池、ZRAM 总计 58–102 MB — 在轻量/小型系统(< 128MB RAM)中,此开销极易触发 LMK(Low Memory Killer) 2.2 系统级协同优化 ✅ 技术 1:动态内存压缩(ZRAM + Flutter Aware) OpenHarmony 支持 ZRAM 交换分区。

    31610编辑于 2025-12-23
  • 来自专栏人人都是极客

    内存与I/O的交换

    zRAM机制 不用swap分区,也可以用zRAM机制来缓解内存紧张: 从内存里拿出一段内存空间(compressed block),作为交换空间模拟硬盘的交换分区,用来交换匿名页,并且让kernel看到的物理内存大小不包括这段内存 而这段交换空间自带透明压缩功能,即交换到这块zRAM分区时,Linux会自动将这块匿名页压缩存放。 使用zRAM的好处,就是访存比访问硬盘或flash的速度提高很多,且不用考虑寿命问题,并且由于这段内存是压缩后存储的,因此可以存更多的数据,虽然占用了一段内存,但实际可以存更多的数据,也达到了增加内存的效果 Android里面普遍使用了zRAM技术,由于zRAM牺牲了CPU时间,所以交换次数还是越少越好。像Android和windows,内存越大越好,因为发生交换的几率就小。

    3.1K31发布于 2019-03-15
  • 来自专栏linux驱动个人学习

    内存与IO的交换【转】

    zRAM机制 不用swap分区,也可以用zRAM机制来缓解内存紧张: 从内存里拿出一段内存空间(compressed block),作为交换空间模拟硬盘的交换分区,用来交换匿名页,并且让kernel看到的物理内存大小不包括这段内存 而这段交换空间自带透明压缩功能,即交换到这块zRAM分区时,Linux会自动将这块匿名页压缩存放。 使用zRAM的好处,就是访存比访问硬盘或flash的速度提高很多,且不用考虑寿命问题,并且由于这段内存是压缩后存储的,因此可以存更多的数据,虽然占用了一段内存,但实际可以存更多的数据,也达到了增加内存的效果 Android里面普遍使用了zRAM技术,由于zRAM牺牲了CPU时间,所以交换次数还是越少越好。像Android和windows,内存越大越好,因为发生交换的几率就小。

    82020发布于 2019-05-25
  • 来自专栏皮振伟的专栏

    [linux][memory]KSM技术分析

    zram:内存压缩技术。通过压缩lzo算法把页面压缩,也可以节省一部分内存。 作者第一次知道zram是在Android中见到的,因为一般的手机使用的emmc flash,是有读写寿命的(作者看到过一份实验数据,某厂家的emmc在连续写入数据三天后,emmc就已经挂了),不能打开swap 后记: 作者第一次阅读ZRAM的代码的时候,就被惊讶到一次:原来还可以这么玩~ 后来看到KSM的时候,再次被惊讶到:原来还可以这么玩~ 只能说:别懈怠,技术的路上,不知道的还很多。

    2.7K81发布于 2018-04-09
  • 来自专栏深度学习与python

    云服务器内存不够用?腾讯云TS4悟净:“省内存神器”来了

    : 把压缩池按容器隔离开来,谁用多少一清二楚,不再互相抢; 透明多级卸载: 根据数据冷热自动安排去向:CXL、ZRAM、SSD 各司其职,性能和空间兼得。 另外,容器之间的边界清晰了,多租户场景更可控;同时也为 CXL、ZRAM、SSD 等新技术的叠加利用打下基础,高密度部署与成本优化更有空间。 更好地支持大页和多设备场景,为 ZRAM、SSD 等多级卸载提供基础; 引入 Swap Table,压缩和整合冗余元数据,降低 Swap 本身对内存的额外消耗。 实现 per-cgroup ZRAM:容器级压缩隔离,对云原生很关键 ZRAM(内存压缩)在云环境中具有很高的性价比,但原生实现下,多个容器往往共享同一个压缩池,容易出现“相互挤占”的问题。 多级卸载能力(ZRAM → SSD → CXL),让内存真正“分层使用” 最后,TS4 的悟净并不假设“冷内存只有一个去处”。

    46110编辑于 2025-12-31
  • 来自专栏云计算运维

    我们离不开的 Linux 内核模块 | Linux 中国

    我最喜欢的是 zram 模块。它在内存中创建了一个压缩块设备,然后它可以作为交换分区使用。 在内存有限的情况下(例如,在虚拟机上),还有如果你担心频繁的 I/O 操作会磨损你的 SSD 或者甚至更糟糕的基于闪存的存储,那么使用基于 zram 的交换分区是非常理想的。

    2.9K31发布于 2021-09-06
领券