web-dev-qa-db-ja.com

利用可能なメモリがfreeコマンドの空きメモリより少ないのはなぜですか?

CentOS 7を使用していますが、使用可能なメモリが空きメモリより少ないのですが、なぜですか?

root@localhost:~# free -h
              total        used        free      shared  buff/cache   available
Mem:           251G        1.9G        249G        9.2M        260M        248G
Swap:           64M         49M         14M

同じ問題がありますが、答えは利用可能なものが無料より少ない理由を説明しませんでした、それは単にキャッシュについて話しているだけです。

centos7 freeコマンドの出力で利用可能な値がfreeの値よりも小さい理由

4
Index

使用可能なメモリは、システムでプログラムをロードするためにメモリが実際にどのように使用されるかの見積もりに過ぎないため、正確な値ではありません。

通常の動作は、使用可能なメモリを空きメモリよりも大きくすることですただし、あなたの場合は逆になります。値は、より大きなキャッシュ/バッファ値によって助けられますが、キャッシュまたはバッファが高くないため、システムでペナルティが課されます。また、他のすべての要素がマイナスのアカウントに含まれるため、使用可能なメモリはマイナスの影響を大きくします...そのため、すべての空きメモリのこのパーセンテージは、単純なロードプログラム以外の多くの場合に必要となるため、過小評価されている可能性があります(特にプログラムをロードする場合-システムは、情報を格納するためにますます多くのメモリを必要とします)プロセスとはるかに-キャッシュとバッファの妥当な値を持っているように……)。

Githubから:

MemAvailable:推定スワップせずに新しいアプリケーションを開始するために使用できるメモリの量。 MemFree、SReclaimable、ファイルLRUリストのサイズ、および各ゾーンの最低水準点から計算されます。 見積もりは、システムが適切に機能するためにページキャッシュが必要であること、およびアイテムが使用されているためにすべての再生可能なスラブが再生可能であるとは限らないことを考慮しています。これらの要因の影響は、システムによって異なります。より詳細な回答を得るには、/ proc/meminfoの内容を投稿する必要があります。

freeでCentOS 7のマニュアルページを読んだ場合、availableフィールドでは、一部のアイテムが使用されているためにすべての再利用可能なメモリが再利用されるわけではないことを説明しています。カーネルなど)、キャッシュや空きフィールドとは異なります。これがあなたが見ている違いの原因であると私は信じています。

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

1
L.Ray