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


48

出力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ですか?

回答:


41

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


基本的には、「2行目、バッファ/キャッシュのある行を見てください」。
ナネ

25

の出力の解釈free:出力リスト
の最初の行free

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

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

これらの2つの列はユーザ​​ーに割り当てられたメモリではなく、ユーザーの割り当てに必要な場合、ゾーンは(実質的にゼロに)縮小できるので、ある意味「空き」です。積極的にそれを必要とします。

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

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

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

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


メモリの読み取り値を探している人は、完全に空いているメモリの量にはまったく関心がありません(またはほとんど使用しません)。キャッシュされたメモリは「使用中」ですが、自由に使用できるので、それを確認する必要があります。
ナネ

どうしてそんなことを言うのかよく分からない?誰かが意図的にキャッシュを削除することを暗示しているようです(実際、これは悪いことです)。ポイントは、acuallのもの(使用するプログラムなど)をそのメモリにロードすることは実際にはオプションであるということです。112の数字をできるだけ小さくしたいのですが、理論上はプログラムを開くことができないということです。私の言う目標ではありません。また:キャッシュはちょうどディスクキャッシュではないこと、それはまた、システムキャッシュと同類だ
Nanne

@ナンネ、わかりました。私は男に同意します。修正していただきありがとうございます。同じことを反映するように回答を更新しました。
saji89

#####知識を共有してくれてありがとう@ Nanne @ devav2 @ saji89-あなたは素晴らしい#####
amoooc

10

@ 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列を追加するコミット


4

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は非アクティブなプログラムバッファ/キャッシュから取得されます。

編集:良い説明を提供するこのリンクを見つけました。


これは正しいとは思いません。キャッシュを破棄すると93MBが使用されるため、501個が残ります。
ナネ

なぜあなたはそれが正しくないと思いますか。OPシステムの空きメモリは112MB + 324MB(キャッシュされます)。そのため、新しいプログラムが起動すると、最初に112MBを使用し、次にキャッシュを使用します。
devav2

基本的に、595-93=501 and(丸めに1mbを与えるか、または取る)、そしてそれはちょっと112あなたがopが探していると思う数字であるかのように読み取ります。
ナネ

501は正しいです、それは私が説明しようとしているものです。595のうち、482が使用されます。プログラムで使用されるアクティブメモリは93だけです。したがって、112は使用可能な空き容量であり、さらに必要な場合は、以前に使用され、現在アクティブではないキャッシュからメモリを取得できます。
-devav2

わかりました、それから同意します:)
ナネ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.