web-dev-qa-db-ja.com

Linux "free -m":合計、使用済み、および空きメモリの値が合計されない

Linuxシステムでは、 "free"を使用しているときの値は次のとおりです。

         total      used      free    shared  buff/cache   available
Mem:  26755612    873224    389320    286944    25493068    25311948
Swap:        0         0         0

合計、使用済み、無料の値は合算されません。合計=使用済み+無料を期待しています。

質問:ここで何が欠けていますか?

17
Michael Massey

メインメモリの場合、メモリの実際のサイズは_used+free+buffers+cache_ OR _used+free+buffers/cache_として計算できます- _buffers/cache = buffer+cache_

freeのmanページはusedUsed memory (calculated as total - free - buffers - cache)として強調表示しています

無料のmanページが言うように:-

totalインストールされているメモリの合計(/ proc/meminfoのMemTotalおよびSwapTotal)

used使用済みメモリ(合計-空き-バッファ-キャッシュとして計算)

free未使用のメモリ(/ proc/meminfoのMemFreeおよびSwapFree)

shared tmpfsによって(主に)使用されているメモリ(カーネル2.6.32では/ proc/meminfoのShmem、ゼロとして表示)利用できない場合)

buffersカーネルバッファが使用するメモリ(/ proc/meminfoのバッファ)

cacheページキャッシュとスラブによって使用されるメモリ(/ proc/meminfoのキャッシュとスラブ)

buff/cacheバッファとキャッシュの合計

availableスワップせずに新しいアプリケーションを開始するために使用できるメモリの推定量。キャッシュまたは空きフィールドによって提供されるデータとは異なり、このフィールドではページキャッシュが考慮されます。また、使用中のアイテム(/ proc/meminfoでMemAvailable、カーネル3.14で利用可能、カーネル2.6.27以降、それ以外はfreeと同じ)

あなたの場合、


873224(使用済み)+ 389320(無料)+ 25493068(バフ/キャッシュ)= 26755612(合計)


16
Am_I_Helpful

Linuxは、開くすべてのファイルをキャッシュするのが好きです。 Linuxは読み取り用にファイルを開くたびにファイルをキャッシュしますが、システム上のプロセスがより多くのメモリを割り当てたい場合など、より重要なメモリが必要な場合はそれらのキャッシュをドロップします。同じファイルが何度も何度も使用される場合、メモリ内のこれらのキャッシュは単にLinuxを高速化します。ファイルを読み取ろうとするたびに実際にディスクにアクセスするのではなく、メモリから取得するだけで、メモリはディスクよりはるかに高速です。そのため、システムはbuff/cacheで25493068が使用されていることを示していますが、25311948が使用可能であることも示しています。システムが必要とする場合、キャッシュされたデータの多くは解放できます。

10
GeorgeB