新闻详情

新闻详情

首页 / 资讯中心 / 详情

5 分钟跑通 zram:Linux 内存优化、监控与排障避坑指南

发布时间:2026/8/31 22:48:41来源:尧图网络
5 分钟跑通 zram:Linux 内存优化、监控与排障避坑指南
5 分钟跑通 zramLinux 内存优化、监控与排障避坑指南【免费下载链接】linuxLinux kernel source tree项目地址: https://gitcode.com/GitHub_Trending/li/linuxzram 把不活跃的内存页在 RAM 内压缩存放用压缩块设备代替磁盘 swap是应对内存紧张的快速手段。本文讲清 zram used_mem 监控口径、压缩比与写回配置以及常见问题排查面向有 Linux 基础但不读内核源码的读者。一个真实的内存告急现场凌晨三点一台 4GB 的实例被打满top里 si/so 飙到 50、100free -h中 swap 快满dmesg滚出 OOM 记录业务线程全卡在做交换。扩容之前其实可以先问一句这些被换出的页有多少能在内存里直接压下去这就是 zram 的活。5 分钟上手把 zram 跑起来zram 由drivers/block/zram/驱动实现会创建/dev/zram0这类纯 RAM 块设备写进去的页先压缩再落盘读取也快因为根本不碰磁盘。加载模块、选算法、设大小、挂 swap四步走modprobe zram num_devices1 cat /sys/block/zram0/comp_algorithm echo lz4 /sys/block/zram0/comp_algorithm echo 512M /sys/block/zram0/disksize mkswap /dev/zram0 swapon /dev/zram0第一段输出里方括号标出当前算法cat即可查看全部候选。注意两点算法只能在disksize初始化之前改disksize一般别超过物理内存的两倍——压缩比按 2:1 估算开太大只会浪费。看懂内存账本used_mem 与 mm_stat先说避坑/sys/block/zram0/used_mem这个节点在 5.9 之后的内核里已经合并进mm_stat所以监控 zram 实际占用读mm_stat第三列就对了。下面这条命令一次打印三个关键值并算出压缩比awk {printf used%dMB orig%dMB compr%dMB ratio%.2f\n, $3/1048576, $1/1048576, $2/1048576, $1/$2} /sys/block/zram0/mm_statmm_stat各字段如下均为单行空格分隔字节为单位字段定义以官方文档为准Documentation/admin-guide/blockdev/zram.rst字段单位含义判断参考orig_data_size字节未压缩数据总量与 compr 相除即压缩比compr_data_size字节压缩后实际占用比值 1.5 说明算法不匹配mem_used_total字节总分配量含碎片与元数据它就是历史上的 used_memmem_limit字节内存上限0 为不限制未设置时留意峰值mem_used_max字节历史峰值逼近 mem_limit 要扩容或写回same_pages页数同值页不占内存纯白页越多越好pages_compacted页数内存整理释放的页数触发 compact 后看变化huge_pages页数当前不可压缩页持续增长考虑写回huge_pages_since页数启动以来不可压缩页总数配合 huge 看增速经验阈值健康压缩比在 2:1 左右mem_used_total长期超过compr_data_size的 1.5 倍说明碎片或元数据开销偏高可用echo 1 /sys/block/zram0/compact整理后再读一次对比。调优三板斧算法、内存上限与写回策略先选算法cat /sys/block/zram0/comp_algorithm echo zstd /sys/block/zram0/comp_algorithm选型一句话吞吐敏感选lzo/lz4内存极度紧张、愿意多花点 CPU 选zstd。改完用上一节的压缩比公式验证数字说话。再设内存上限echo 256M /sys/block/zram0/mem_limit给 zram 的分配画一条天花板防止它挤占前台应用该值支持运行期随时修改不写或写 0则不设限。何时该用多租户共享内存、或 zram 与数据库争抢内存的机器上。最后配写回echo /dev/sda5 /sys/block/zram0/backing_dev echo huge /sys/block/zram0/writeback第一条必须在disksize之前执行且只支持分区。writeback的取值huge只挪走不可压缩页idle挪走冷页huge_idle两者都挪——何时该用mm_stat里huge_pages占比高、或希望冷数据最终落盘以释放内存时。排障速查Q压缩比低于 1.5怎么查A读mm_stat看huge_pages占比。不可压缩数据天然压不动先换更强的算法comp_algorithm压不动的部分再走写回。Qused 只涨不降A对照orig_data_size。数据量没涨而mem_used_total涨怀疑泄漏走上游报障两者一起涨说明交换活跃属正常调大mem_limit或开writeback兜底。Q交换 I/O 失败A看io_stat的failed_reads/failed_writes两列cat /sys/block/zram0/io_stat非零时优先检查mem_limit是否卡死分配、disksize是否超卖。Qmem_used_max逼近上限A写mem_used_max文件可清零峰值计数但真正的处理是扩mem_limit或把冷页写回后端。进阶可选读两个功能默认都关闭需要对应内核配置CONFIG_ZRAM_MEMORY_TRACKING打开后/sys/kernel/debug/zram/zram0/block_state逐块输出访问时间加状态位s同值页、h不可压缩、i空闲、r已重压缩、n全算法失败配合 pagemap 能定位到具体进程的冷页。CONFIG_ZRAM_MULTI_COMP打开后可用recomp_algorithm指定次级算法再执行echo typeidle priority1 /sys/block/zram0/recompress让空闲页用更高压缩比重压一遍——适合夜间低峰期跑进一步压低mem_used_total。收尾把它变成日常动作思路一句话先用 zram 在内存里消化冷页再用mm_stat持续验证压缩效果最后用限流与写回兜底。建议每天 30 秒扫一眼压缩比、mem_used_max、io_stat失败计数三项任一异常就按上面的速查表处理。字段细节与高级特性查官方文档 Documentation/admin-guide/blockdev/zram.rst 即可。【免费下载链接】linuxLinux kernel source tree项目地址: https://gitcode.com/GitHub_Trending/li/linux创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

神策数据秋招笔试指南:数据链路、算法与SQL考点全解析 2026/9/1 15:51:25

神策数据秋招笔试指南:数据链路、算法与SQL考点全解析

神策数据2023秋招技术岗第三批笔试,是不少准备进数据方向的同学绕不开的一场考试。神策这家公司大家应该不陌生,做用户行为分析、智能运营、CDP起家,技术栈以Java/Go后端、ClickHouse、Kafka、Spark/Flink这套为主,笔试的出题思路…

阅读更多 →
电商订单如何与微信沟通打通?个人微信API接口可以承担哪些环节 2026/9/1 15:51:25

电商订单如何与微信沟通打通?个人微信API接口可以承担哪些环节

一个电商订单走完完整生命周期有 5 个环节:下单 → 支付 → 发货 → 售后 → 复购。Eyun API 能承担其中 4 个环节的微信沟通打通,支付环节因为涉及微信支付官方能力不在覆盖范围内。 本文按订单生命周期依次拆解每个环节能做什么、怎么做。 环节1&…

阅读更多 →
让微信机器人听懂业务指令:个人微信API接口与规则引擎的结合思路 2026/9/1 15:51:25

让微信机器人听懂业务指令:个人微信API接口与规则引擎的结合思路

"听懂"不是让机器人理解自然语言的每个字,而是让它能识别用户说的话对应哪个业务操作。Eyun API 负责把用户的话传过来,规则引擎负责"听懂"——两者组合起来就是一个能干活的微信机器人。 纯大模型不稳,今天用户说"…

阅读更多 →
个人微信API接口开发微信机器人时,哪些接口能力是必不可少的 2026/9/1 15:51:25

个人微信API接口开发微信机器人时,哪些接口能力是必不可少的

"必不可少"没了这个,机器人就跑不起来。核心环节就三个:收消息 → 处理 → 发回复。倒推出来4个接口能力是绝对不能少的。 1. Webhook消息事件回调 —— 机器人的"耳朵" 没有Webhook回调,机器人就是个聋子。Eyun Webho…

阅读更多 →
从人工操作到智能执行,个人微信二次开发与AI结合有哪些值得研究的方向 2026/9/1 15:51:25

从人工操作到智能执行,个人微信二次开发与AI结合有哪些值得研究的方向

人工操作微信的逻辑很直白——人手点手机,每一步都是有意识的动作:打开聊天框、打字、点发送。智能执行要做的就是让程序自动完成这些动作,而 Eyun API 让"程序能操作微信"这件事变得可行。结合AI之后有4个值得深耕的研究方向&…

阅读更多 →
SQL:博客后端的数据表设计与索引约束实战 2026/9/1 15:48:25

SQL:博客后端的数据表设计与索引约束实战

文章目录一、后端业务有几张表二、用户表:小表大智慧2.1 为什么用户表要「瘦」2.2 字段设计2.3 索引怎么建2.4 建表语句2.5 索引到底有哪几类?三、头像表:图片为什么不进数据库3.1 思路:图片存文件,元信息存数据库3.2 …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞