关于Debian 12使用更多内存一事:其实并没有
Debian 12于本月(2023年6月)推出,在第一时间安装体验后,发现内存占用相比于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