14.04から16.04への「無料」出力の変更は何を意味しますか?


29

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行はなくなりました。新しい数字をどのように解釈すればよいですか?

  • Mem used / freeにはバッファとキャッシュが含まれますか?
  • 以前のバージョンの「+/- buffers / cache」行で使用されている番号と無料の番号に相当する番号はどれですか?

回答:


16

私の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

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された行が削除されたことです

詳細については、これらの変更が導入されたこれらのコミットを確認して ください

新しい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値の計算にバッファ/キャッシュが含まれます。
  • +/- buffers/cache以前のバージョンではそこに使用される値は、freeとして利用できるようになりました。
    • -/ + buffers / cacheused =現在のMem used列(その計算の詳細は上記)
    • -/ + buffers / cachefreeは、現在の新しい列のより正確な値として利用可能ですavailable

NB:kb_*変数名は、ソースコードで使用される内部名です。


1
この回答は、特定の回答= "tl; dr部分"を上部に配置し、詳細を下に配置することで改善できます(現在は逆です)。
ニカナレクラビクス

これは素晴らしい説明ですが、ubuntu 16.04を実行しているOpenVZでは、「available」は前の「free」の「+/- buffers / cache」の空きカラムに近づきさえしていません。同じアプリを実行していると、14.04で120 MB、16.04で0近くになります。ラムの使用法がこれら2つのシステムで完全に異なるか、1つのフリーのパッケージが間違っています(または、OpenVZがこれらのことを混乱させています)。
サンドロアントヌッチ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.