A-A+
为什么Debian 12占用内存比Debian 11高?根源是procps
Debian 12于本月(2023年6月)推出,【VPS全科网vpsqk.com】在第一时间安装体验后,发现内存占用相比于Debian 11高了一大截。从Debian 11版本的70M内存占用突增到250M,不禁让人疑惑为什么Debian 12内存占用比Debian 11大了这么多。
事实上,内存占用根本没有变大,是procps
的原因。
绝大部分人默认使用free
命令查看内存占用,恰好free
依赖的procps
在4.0.2-1版本的更新中,修改了计算方法。具体日志如下。受此影响,包括但不限于free
和top
都无法"正确"的识别占用的内存了。
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
然后是htop
命令,显示占用内存110M
作为对比,我们直接从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