Debian 12于本月(2023年6月)推出,在第一时间安装体验后,发现内存占用相比于Debian 11搞了一大截。从Debian 11版本的70M内存占用突增到250M,不禁让人疑惑为什么Debian 12内存占用比Debian 11大了这么多。
事实上,内存占用根本没有变大那么多,是procps的“BUG”导致的
绝大部分人默认使用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 <[email protected]> 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
有理有据,令人信服,但是更新还是再观望观望
70 - 100 多了 30 而已,debian yyds
这个数值应该和Debian10时比较的,很早之前测试过,Debian11占用的资源要比Debian10多的多。
但是从目前普遍都说128G内存起的机器来说,确实不是很大
procps做出这种改变肯定是经过深思熟虑的,现在应该才是反应的真实内存情况,以前used中不包含那些无法被内核回收的buffer/shared/cache,现在这种used = total - available应该才是最精准的,
我有个200m内存的kvm小鸡几个月前就升到了12,内存占用没有差别
@1号城管 #4

豁然开朗,这样确实有道理
我还在用debian10
目前来说,还得是Debian11最好用
目前先留在11
所以,我AZ100那1G1C的小鸡应该装Debian10?