free
コマンドのレポートがTrustyとXenialの間でどこかで変わったことに気付きました。以下は、Trustyコンピューターの1つで表示される「free -m」です。
$ free -m
total used free shared buffers cached
Mem: 7916 7645 271 99 455 1764
-/+ buffers/cache: 5426 2490
Swap: 24999 805 24194
(異なる)Xenialシステムの同等物は次のとおりです。
$ free -m
total used free shared buff/cache available
Mem: 3553 1192 857 16 1504 2277
Swap: 3689 0 3689
主に見ていた+/- buffers/cache行はなくなりました。新しい数字をどのように解釈すればよいですか?
Ubuntu 12.04
のfree
コマンドから得たサンプル出力を考慮してください。
total used free shared buffers cached
Mem: 8074640 6187480 1887160 377056 365128 2113156
-/+ buffers/cache: 3709196 4365444
Swap: 15998972 82120 15916852
Mem used
(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/cache値は次のように計算されます:
buffers = kb_main_used - buffers_plus_cached = 6187480 - 2478284 = 3709196
/
cache = kb_main_free + buffers_plus_cached = 1887160 + 2478284 = 4365444
新しいバフ/キャッシュ値は、次のように計算されます。
buff/cache = kb_main_buffers+kb_main_cached = 365128 + 2113156 = 2478284
これは、以前のバージョンで使用されていたbuffers_plus_cached
と同じですが、以前は内部で使用されていたが、現在は直接表示され、さらに計算された行-/+ buffers/cache
は削除されました
詳細については、これらの変更が導入されたこれらのコミットを確認してください: https://gitlab.com/procps-ng/procps/commit/f47001c9e91a1e9b12db4497051a212cf49a87b1https://gitlab.com/procps-ng/procps/commit/c9908b59712d1afd6b9bf7971ba1d8900ae5adb8
新しいavailable
フィールドの時点で、2.6.27より古いLinuxカーネルの場合、その値はfree
の値と同じですが、それ以降のバージョンのカーネルでは少し異なります:
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
値の計算にバッファー/キャッシュが含まれています。free
の以前のバージョンに存在していた+/- buffers/cache
値は、次のように利用可能になりました。used
= Current Mem used
列(その計算の詳細は上記)free
は、現在の新しい列のより正確な値として利用可能available
N.B:kb_*
変数名は、ソースコードで使用される内部名です。