web-dev-qa-db-ja.com

「free -m」コマンドの出力を解釈する方法は?

free -mの出力は次のとおりです。

                     total    used    free    shared  buffers  cached
Mem:                  595      482     112         0       63     324
-/+ buffers/cache:              93     501
swap:                   0        0       0

使用されたメモリの正しい値は、482または93ですか?

48
amoooc

112 MBの完全に空きメモリがありますが、表示される501 MBには「キャッシュ」メモリがありません。これは、OSがメモリにいくつかのものを入れて高速化することを意味します。これは「使用済み」と呼ばれます(したがって、「無料」番号は112のみです)が、必要な場合は実際に使用できます。

未使用のメモリは無駄なメモリなので、これは良いことです。必要に応じて、キャッシュされたメモリをクリアできます。 Windows 95で使用していた古い「メモリのクリーンアップが必要」なものはここでは必要ありません。

探している番号は501無料です(-mのためにメガバイト単位)。

これらのページを参照してください:

http://www.linuxatemyram.com/
http://www.itworld.com/it-managementstrategy/280695/making-sense-memory-usage-linux

38
Nanne

freeの出力の解釈:
free出力の最初の行は次のとおりです。

  • total合計物理(仮想化なしと想定)メモリ
  • used現在どれだけ使用されているか(何でも)
  • freeどれだけ完全に無料か(まったく使用されていない)
  • shared(そこに何もない、その列を無視する)
  • buffersカーネルバッファーが使用するメモリ
  • cachedキャッシュに使用されるメモリ

キャッシュとバッファの最後の2つの項目は、特定のユーザープロセスに割り当てられないメモリです。全体的なパフォーマンスを向上させるためにカーネルによって予約されたメモリですが、「アプリケーション」メモリではありません。これらの領域は、キャッシング、メモリ負荷、アプリケーションI/Oパターンなどに関するカーネルポリシーに応じて拡大または縮小します。

これらの2つの列はユーザ​​ーに割り当てられたメモリではなく、ユーザーの割り当てに必要な場合、ゾーンは(実質的に0に)縮小できるため、「空き」という意味です-解放できるRAMアプリが積極的にそれを必要とする場合、カーネルによって。

これが2行目からわかります。 used列からバッファーとキャッシュメモリを削除し(-の意味)、free列に追加(+)します。 (ラウンドの問題が発生します。)

(最後の行は、スワップ空間の状態を示しています。)

礼儀:https://unix.stackexchange.com/a/33549/14497

したがって、あなたの場合112MBは完全に空きメモリであり、キャッシュに使用されるメモリを考慮に入れると、ユーザーアプリケーションに割り当てることができます、 必要に応じて;次に、501 MBは、使用可能な実際の最大メモリです。

25
saji89

@ saji89による答えは優れていますが、最近free -m-/+ buffers/cache行を出力しなくなり、代わりに利用可能なRAMの量を新しいavailable列に入れます最初の行に、たとえば:

ubuntu@pg_master:~$ free -m
              total        used        free      shared  buff/cache   available
Mem:          61406        1571         506       17131       59328       42150
Swap:             0           0           0
ubuntu@pg_master:~$ free -V
free from procps-ng 3.3.10

repo の行を削除したfree(1)へのコミットを読むことができます。また、 新しいavailable列を追加するコミット

10

freeコマンドは、未使用および使用済みのメモリとスワップ領域に関する情報を表示します。

以下は http://www.linfo.org/free.html によって提供される説明です。

Memとラベル付けされた最初の行は、バッファおよびキャッシュに割り当てられたメモリ量を含む物理メモリの使用率を表示します。バッファは、バッファメモリとも呼ばれ、通常、HDD、キーボード、プリンタ、ネットワークなどの外部デバイスとの間で送受信されるデータの一時的な保持場所として確保されるメモリの一部として定義されます。

-/ + buffers/cacheで始まるデータの2行目は、現在システムバッファキャッシュに割り当てられている物理メモリの量を示しています。これは、read()およびwrite()システムコール1を使用して実行されるシステム上のファイルからアクセスされるすべてのデータがこのキャッシュを通過するため、アプリケーションプログラムに関して特に意味があります。このキャッシュは、HDDまたは他のディスクからの読み取りまたは書き込みの必要性を削減または排除することにより、データへのアクセスを大幅に高速化できます。

Swapで始まる3番目の行には、合計スワップスペースと、現在使用されている量と使用可能な量が表示されます。

システムのメモリ使用量を分析できます

結果をメガバイトで表示するために使用されるfreeコマンドと '-m'オプションを使用しました

-m, --mega
              Display the amount of memory in megabytes.

合計メモリは595(使用済み+無料)

使用済み:482無料:112

595MBのうち482MBがシステムで使用され、アクティブなプログラムでは93MBのみが使用され、残りの324MBはキャッシュにあります

したがって、将来プログラムを実行するときは、120MBがさらに必要だと言います。 112MB(現在は無料)がすべて提供され、残りの8MBは非アクティブなプログラムバッファ/キャッシュから取得されます。

Edit:これを見つけてください link 、これは良い説明を提供します。

4
devav2