Linux zram 压缩内存实战指南:从查状态到配好 swap 优化,一次讲全
Linux zram 压缩内存实战指南从查状态到配好 swap 优化一次讲全【免费下载链接】linuxLinux kernel source tree项目地址: https://gitcode.com/GitHub_Trending/li/linux凌晨两点监控群弹出告警一台 8GB 内存的服务器可用内存跌破 200MB接口响应时间从 30ms 爬到 800msswap in/out 每秒几千次磁盘 I/O 打满。查了一圈业务本身没有内存泄漏只是缓存和短生命周期对象把内存吃得太紧。后来我们把磁盘 swap 换成了 Linux 内核自带的 zramI/O 等待基本消失这台机器就再没半夜叫过。30秒看懂 zramzram 是 Linux 内核里的一个块设备驱动代码在 drivers/block/zram/。它做的事用一句话说把 swap 从磁盘搬进内存页写入前先压缩读取时再解压。省下的空间就是压缩比换出来的。和磁盘 swap 相比zram 的读写都发生在内存里延迟差出几个数量级代价是压缩和解压要吃一点 CPU。第一步3分钟确认 zram 状态多数发行版默认没启用 zram先确认内核加载了驱动ls /sys/block/zram* 2/dev/null cat /proc/swaps如果已经启用核心数据都在 sysfs 下两个文件值得看cat /sys/block/zram0/disksize cat /sys/block/zram0/mm_statmm_stat是逗号分隔的数字序列前两项是关键。对照表如下指标位置含义disksize/sys/block/zram0/disksize设备容量上限指可存放的未压缩数据总量原始大小 orig_data_sizemm_stat第 1 项已写入 zram 的页压缩前一共多大压缩后大小 compr_data_sizemm_stat第 2 项这些页压缩后实际占用的内存读次数 readsmm_stat第 3 项进程从 zram 取回过多少页越高说明换入越频繁写次数 writesmm_stat第 5 项多少页被压缩送进过 zram用第 1 项除以第 2 项就是当前 zram 压缩率。压缩率低于 1.2 时说明换进去的数据基本压不动收益有限。算法与大小两个关键配置驱动支持多种压缩后端源码里能直接看到backend_lz4.c、backend_lzo.c、backend_zstd.c均位于 drivers/block/zram/取舍逻辑很简单lz4速度最快压缩率最低CPU 最省。内存紧张到出现卡顿、而 CPU 还富裕的机器先选它。lzo速度接近 lz4压缩率略高是老牌默认选择。zstd压缩率明显更高CPU 开销也更高。内存特别紧张、CPU 有余量时优先考虑。换算法只需要写入comp_algorithm但要等下一次重置设备后生效。完整配置流程如下echo 4G /sys/block/zram0/disksize echo zstd /sys/block/zram0/comp_algorithm echo 1 /sys/block/zram0/reset mkswap /dev/zram0 swapon -p 10 /dev/zram0大小建议取物理内存的 1/4 到 1/2。disksize 限的是未压缩数据上限不是占用的物理内存设大一点不会多占内存只会让压缩页可能更多。swapon -p 10把优先级调高让内核优先往 zram 换、磁盘 swap 只做兜底。踩坑与排错现象、原因、处理现象CPU 使用率里si/so软硬上下文切换与中断明显升高整机卡顿。原因zram 的每次读写都要做一次压缩或解压换页太频繁等于用 CPU 换 I/O换过头了。处理把 disksize 调小让部分页落到磁盘 swap 兜底或者从 zstd 换回 lz4。现象开了 zram压缩率只有 1.05 左右内存没省出多少。原因换进去的页本身不可压缩随机数、加密数据或者业务内存占用平稳根本没多少页进 swap。处理先确认mm_stat里 writes 是否持续增长如果增长少说明瓶颈不在 swap方向应转向业务内存或加大物理内存而不是继续调 zram。现象zram 写满了新页换不进去性能反而变差。原因disksize 设得偏小或者压缩率不及预期。处理调大 disksize 并 reset 设备如果压缩率确实低考虑把不可压缩页写回磁盘内核的 writeback 特性文档见 Documentation/admin-guide/blockdev/zram.rst。收尾5项自查清单 ✅部署或排查 zram 前照这个清单过一遍/proc/swaps里 zram 在列且优先级高于磁盘 swapdisksize 为物理内存的 1/4 到 1/2不是拍脑袋的数字mm_stat压缩率稳定在 1.2 以上低于则怀疑数据不可压缩reads/writes 增速与业务曲线匹配持续暴涨说明内存水位偏低CPU 没有因为压缩/解压出现持续 20% 以上的额外占用zram 不是一个装上就完事的开关压缩率和换页频率这两个数字值得定期看一眼它们直接告诉你这台机器该加内存、换算法还是什么都不用做。进一步阅读驱动源码 drivers/block/zram/、sysfs 属性说明 Documentation/ABI/testing/sysfs-block-zram、官方文档 Documentation/admin-guide/blockdev/zram.rst。【免费下载链接】linuxLinux kernel source tree项目地址: https://gitcode.com/GitHub_Trending/li/linux创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

DeepSeek-Reasonix升级机制详解:reasonix upgrade背后的版本管理原理

DeepSeek-Reasonix升级机制详解:reasonix upgrade背后的版本管理原理

DeepSeek-Reasonix升级机制详解:reasonix upgrade背后的版本管理原理 【免费下载链接】DeepSeek-Reasonix DeepSeek-native AI coding agent for your terminal. Engineered around prefix-cache stability — leave it running. 项目地址: https://gitcode.com/G…

2026/8/29 12:47:53 阅读更多 →
LiteParse 图片输入完整指南:JPG、PNG、SVG、WebP 零配置原生支持

LiteParse 图片输入完整指南:JPG、PNG、SVG、WebP 零配置原生支持

LiteParse 图片输入完整指南:JPG、PNG、SVG、WebP 零配置原生支持 【免费下载链接】liteparse A fast, helpful, and open-source document parser 项目地址: https://gitcode.com/GitHub_Trending/li/liteparse LiteParse 是一款快速、轻量、开源的文档解析…

2026/8/29 12:47:53 阅读更多 →
TradingAgents:多智能体 LLM 金融交易框架,7 个 AI 角色协作回测跑赢 5 类经典策略

TradingAgents:多智能体 LLM 金融交易框架,7 个 AI 角色协作回测跑赢 5 类经典策略

TradingAgents:多智能体 LLM 金融交易框架,7 个 AI 角色协作回测跑赢 5 类经典策略 【免费下载链接】TradingAgents-AI.github.io TradingAgents: Multi-Agents LLM Financial Trading Framework 项目地址: https://gitcode.com/GitHub_Trending/tr/Tr…

2026/8/29 12:47:53 阅读更多 →

最新新闻

天池AI Earth竞赛Task02实战:从遥感影像分割到模型部署全流程解析

天池AI Earth竞赛Task02实战:从遥感影像分割到模型部署全流程解析

1. 从零开始:理解天池AI Earth竞赛与Task02的定位 如果你对遥感、气象或者环境科学感兴趣,并且想用代码和模型来解决一些实际问题,那么“天池AI Earth”这个平台你一定不陌生。它不是一个简单的编程练习场,而是一个连接真实世界数…

2026/8/29 14:21:32 阅读更多 →
Windows Terminal 效率实践:4 个技巧让 npm、pip 命令启动更快

Windows Terminal 效率实践:4 个技巧让 npm、pip 命令启动更快

Windows Terminal 效率实践:4 个技巧让 npm、pip 命令启动更快 【免费下载链接】terminal The new Windows Terminal and the original Windows console host, all in the same place! 项目地址: https://gitcode.com/GitHub_Trending/term/terminal Windows…

2026/8/29 14:21:32 阅读更多 →
零基础转行AI完整学习路线:从Python到大模型应用

零基础转行AI完整学习路线:从Python到大模型应用

想转行做 AI 的同学越来越多,但大多数人起步时都踩过同样的坑:收藏了十几个 G 的学习资料,关注了几十个 AI 大V,结果打开第一课就卡在数学推导上,学了一个月还在跟线性代数较劲,最后简历上什么都没写出来。…

2026/8/29 14:21:32 阅读更多 →
AI生成代码如何合规使用?OpenJDK新规与Cursor实战指南

AI生成代码如何合规使用?OpenJDK新规与Cursor实战指南

最近开源圈和 AI 编程圈出了两条比较有代表性的新闻:甲骨文开始限制 OpenJDK 提交 AI 生成的代码,另一边 SpaceX 传出月底完成收购 Cursor 的消息。两条新闻看似一个在“开源治理”,一个在“商业收购”,但背后都指向同一个问题——…

2026/8/29 14:21:32 阅读更多 →
Vibe Coding 的快乐与审查门:AI 生成代码如何安全落地

Vibe Coding 的快乐与审查门:AI 生成代码如何安全落地

Vibe coding 的快乐:从一句话需求到能跑的代码,这中间还隔着一道审查的门如果你最近刷过技术社区,大概率看过“vibe coding”这个词。它听起来像是一种很轻松的状态:打开 AI 助手,用大白话描述自己的想法,然…

2026/8/29 14:21:32 阅读更多 →
OBS 直播画面发灰发暗?一份按输出目标对号入座的色彩管理配置方案

OBS 直播画面发灰发暗?一份按输出目标对号入座的色彩管理配置方案

OBS 直播画面发灰发暗?一份按输出目标对号入座的色彩管理配置方案 【免费下载链接】obs-studio OBS Studio - Free and open source software for live streaming and screen recording 项目地址: https://gitcode.com/GitHub_Trending/ob/obs-studio 播了 2…

2026/8/29 14:20:31 阅读更多 →

日新闻

etc目录下的profile.d文件目录设置环境变量和全局脚本shell

etc目录下的profile.d文件目录设置环境变量和全局脚本shell

一、设置环境变量etc目录下的profile.d文件目录 /etc/profile.d1、编写 vi test.sh文件内容# jdk变量 export ZHK_HOME/root export PATH$PATH:$ZHK_HOME/test # 可以取出来ZHK_HOME变量给ZZZ_HOME赋值 export ZZZ_HOME${ZHK_HOME}/test2、刷新 执行source /etc/profile 命令使…

2026/8/29 0:00:24 阅读更多 →
【JavaScript】内存管理-垃圾回收机制-内存泄露

【JavaScript】内存管理-垃圾回收机制-内存泄露

内存管理 C 语言这样的底层语言一般都有底层的内存管理接口,比如 malloc()和free()。 而 JavaScript 是在创建变量(对象,字符串等)时自动进行了分配内存,并且在不使用它们时“自动”释放。释放的过程称为垃圾回收。 整…

2026/8/29 0:00:24 阅读更多 →
Labgrid-MCP:为嵌入式硬件实验室接入AI Agent操控能力

Labgrid-MCP:为嵌入式硬件实验室接入AI Agent操控能力

Labgrid-MCP 的目标是把 MCP(Model Context Protocol)能力延伸到真实嵌入式硬件实验室:AI Agent 通过一个标准化的 MCP Server,就能查看目标板状态、控制上电断电、复位开发板、读取串口日志,甚至执行镜像刷写。对于经…

2026/8/29 0:00:24 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/28 11:23:26 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/28 23:05:07 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/28 19:47:53 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/29 4:34:53 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/28 17:43:04 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/29 2:05:18 阅读更多 →