Debian 12于本月(2023年6月)推出,在第一时间安装体验后,发现内存占用相比于Debian 11搞了一大截。从Debian 11版本的70M内存占用突增到250M,不禁让人疑惑为什么Debian 12内存占用比Debian 11大了这么多。

事实上,内存占用根本没有变大,是procps的原因。

绝大部分人默认使用free命令查看内存占用,恰好free依赖的procps在4.0.2-1版本的更新中,修改了计算方法。具体日志如下。受此影响,包括但不限于freetop都无法"正确"的识别占用的内存了。

procps (2:4.0.2-1) unstable; urgency=medium

  * New libproc2 library moved into sid
    library: total new API
    free: Used field is now Total - Available
    free: Added Comitted memory option
    pgrep: -A to ignore ancestors
    pgrep: Can select version 2 cgroup paths
    ps: many new fields
    sysctl: Support systemd glob patterns
    sysctl: Check resolved path is under /proc/sys
    top: many new fields
    top: extra wide views for CPU and memory stats
    top: bottom window to display supplementary data

 -- Craig Small <csmall@debian.org>  Mon, 05 Dec 2022 21:59:09 +1100

但是,htop并没有依赖procps,所以是可以准确识别占用的内存的。对比如下:

首先是free命令,显示占用内存295M
free.jpg

然后是htop命令,显示占用内存110M
htop.jpg

作为对比,我们直接从kernel中读取内存(内容如下),发现htop是正确的,而free则“错误”了。Debian 12确实比Debian 11需要更大内存,但是只是从70M变成了100M的水平,并不是250M的水平。

MemTotal:        2014492 kB
MemFree:          372632 kB
MemAvailable:    1703344 kB
Buffers:          268300 kB
Cached:          1114676 kB
SwapCached:           36 kB
Active:           993052 kB
Inactive:         415376 kB
Active(anon):       1220 kB
Inactive(anon):    30716 kB
Active(file):     991832 kB
Inactive(file):   384660 kB
Unevictable:       16644 kB
Mlocked:           15108 kB

标签: linux

添加新评论