怎么在Linux利用Free-L查看内存低水位线配置以优化系统的内核回收策略

落雪君_7029

落雪君_7029

2026-04-29

1086人浏览

原创

free 命令不支持 -L 选项,查内存 low 水位须用 cat /proc/zoneinfo;其值单位为页,可换算为 MB;调整需通过 vm.min_free_kbytes 或 vm.watermark_scale_factor。

怎么在linux利用free-l查看内存低水位线配置以优化系统的内核回收策略

Linux里没有 free -L 这个选项,free 命令根本不支持 -L 参数。想查内存水位线,得绕开这个不存在的命令,直接看内核暴露的原始数据。

为什么 free -L 会报错或静默忽略

这是最常踩的第一个坑:把其他工具(比如某些定制监控脚本或误传的文档)里的参数当成标准用法。实际执行 free -L,你会看到类似 free: invalid option -- 'L' 的错误,或者什么也不输出就退出——因为 free 根本不识别它。

  • free 只支持 -h、-m、-g、-w 等有限参数,源码里没定义 L
  • 有人可能混淆了 free 和 vmstat 或 cat /proc/zoneinfo 的输出字段,误以为“low”水位能直接从 free 里读出来
  • 即使加了 -L,free 也不会报错退出(取决于版本),而是默默忽略,导致你以为“查到了”,其实啥也没显示

真正能查到 low watermark 的方式是 cat /proc/zoneinfo

/proc/zoneinfo 是内核为每个内存 zone(如 Normal、DMA32)生成的详细水位快照,里面明确列出了 low、min、high 三档水位值,单位是页(page),不是字节或 MB。

  • 执行 grep -A 5 "low.*water" /proc/zoneinfo 可快速定位所有 zone 的 low 水位行
  • 注意每段输出对应一个 zone,例如 Node 0, zone Normal 后面紧跟着的 low 行才是你要的数据
  • 如果只关心数值,可用 awk '/low.*water/ {print $NF}' /proc/zoneinfo 提取全部 low 值(单位:页)
  • 换算成 MB:乘以 4(假设标准页大小 4KB),再除以 1024,即 pages * 4 / 1024 = MB

调整 low watermark 实际上是调 vm.min_free_kbytes

你不能直接写 /proc/sys/vm/low_watermark——它是只读统计值。真正可调、且影响所有水位线(包括 low)的参数只有 vm.min_free_kbytes。

Linuxdo Application
Linuxdo Application

为 Linux.do 注册撰写高通过率、去 AI 化的中文小作文。进行自适应调查以了解申请人的真实背景,...

下载
  • 修改后,内核会按各 zone 的 managed_pages 比例重新计算每个 zone 的 min、low、high
  • 例如:一台 64GB 内存机器,设 vm.min_free_kbytes=2097152(即 2GB),通常会让 low 水位落在 3–4GB 区间(具体看 zone 分布)
  • 临时生效:sysctl -w vm.min_free_kbytes=2097152
  • 永久生效:写入 /etc/sysctl.conf 并运行 sysctl -p
  • 调太大会浪费内存;调太小会导致 min 水位过低,容易触发直接回收和卡顿

更安全的调优路径:优先用 watermark_scale_factor 控制 low/min 差距

如果你只是想让 kswapd 更早启动(即抬高 low 水位,但不动 min),推荐改 vm.watermark_scale_factor,而不是猛拉 min_free_kbytes。

  • 默认值是 10,代表 low - min 和 high - low 各占总内存的 0.1%
  • 设为 100,差值扩大到 1%;设为 500,就是 5% —— 这样既抬高了 low,又保留了 min 的底线弹性
  • 该参数对 page cache 密集型服务(如 Redis、Elasticsearch)特别有效,能显著减少直接回收频率
  • 验证效果:改完后再次跑 grep -A 5 "low.*water" /proc/zoneinfo,对比 min 和 low 的差值是否变大

真正关键的不是记住哪条命令“看起来像在查 low”,而是理解 low 不是独立配置项,它由 min_free_kbytes 和 watermark_scale_factor 共同决定;而 /proc/zoneinfo 是唯一反映实时水位状态的权威来源。任何跳过它、依赖封装命令或猜测参数的行为,都会让你调了半天却不知道水位到底变了没。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

linux

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

4550

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3793

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

3133

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

7770

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

7382

7

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.20

4193

8

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

2023.07.20

3665

4

linux查看cpu使用率
linux查看cpu使用率

在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。本专题为大家带来了linux查看cpu使用率的相关文章,感兴趣的朋友千万不要错过了。

2023.07.25

3919

6

linux查找文件命令
linux查找文件命令

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.31

297

3

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习