请考虑我从free
命令中获得的示例输出Ubuntu 12.04
:
total used free shared buffers cached
Mem: 8074640 6187480 1887160 377056 365128 2113156
-/+ buffers/cache: 3709196 4365444
Swap: 15998972 82120 15916852
现在,Memused
(kb_main_used)字段值的计算如下:
used = total - free - cached - buffers
以前,它曾经是:
used = total - free
在以下提交中引入了此更改https://gitlab.com/procps-ng/procps/commit/6cb75efef85f735b72e6c96f197f358f511f8ed9
中间值:
buffers_plus_cached = buffers (kb_main_buffers) + cached (kb_main_cached) = 365128 + 2113156 = 2478284
+/-缓冲区/缓存值的计算如下:
buffers = kb_main_used - buffers_plus_cached = 6187480 - 2478284 = 3709196
/
cache = kb_main_free + buffers_plus_cached = 1887160 + 2478284 = 4365444
新的buff / cache值的计算如下:
buff/cache = kb_main_buffers+kb_main_cached = 365128 + 2113156 = 2478284
这与buffers_plus_cached
以前版本中使用的相同,不同之处在于以前在内部使用它,现在直接显示它,并且进一步计算的行-/+ buffers/cache
已被删除。
有关更多信息,请检查引入了这些更改的这些落实:https
:
//gitlab.com/procps-ng/procps/commit/f47001c9e91a1e9b12db4497051a212cf49a87b1 https://gitlab.com/procps-ng/procps/commit/c9908b59712d1afd6b9b9bfae1ba1
从新available
字段开始,对于早于2.6.27的Linux内核,其值与该free
值相同,但是对于较早版本的Kernel,则有所不同:
Estimation of how much memory is available for starting new
applications, without swapping. Unlike the data provided by the
cache or free fields, this field takes into account page cache
and also that not all reclaimable memory slabs will be reclaimed
due to items being in use (MemAvailable in /proc/meminfo,
available on kernels 3.14, emulated on kernels 2.6.27+,
otherwise the same as free)
礼貌:
http : //manpages.ubuntu.com/manpages/xenial/en/man1/free.1.html
因此,对您问题的具体答案将是:
- 新版本的
free
包括在Mem used/free
值计算中的缓冲区/缓存。
- 在
+/- buffers/cache
曾经是那里的早期版本中值free
现在可作为:
- -/ + buffers / cache
used
=当前Mem used
列(其计算已在上面详细说明)
- -/ +缓冲区/高速缓存
free
作为当前新列中的更准确值提供available
NB:该kb_*
变量名是在源代码中使用的内部名称。