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

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無料コマンドが利用可能な値を無料値より小さく出力するのはなぜですか?

答え1

利用可能なメモリは、システムからプログラムをロードするためにメモリが実際にどのように使用されるかについての推定値です。正確な値

あなたもすでに知っているように正常な行動つまり、使用可能なメモリーが使用可能なメモリーよりも大きくなります。ただし、お客様の場合はその逆が発生します、この見積もりを計算するために使用される統計は、より大きなキャッシュ/バッファ値によって役立ちますが、高いキャッシュやバッファがなく、他のすべての要素を考慮して負の数を考慮するため、システムでは不利益を受けるためです。 、利用可能なメモリがより悪い影響を受けます...したがって、利用可能なすべてのメモリのこの割合は単にローダです(特にプログラムをロードするとき、システムプロセスなどに関する情報を保存するにはますます多くのメモリが必要です。合理的なキャッシュとバッファ値を持つのと同じです...)。

githubから:

利用可能なメモリ:推定交換せずに新しいアプリケーションを起動するために使用できるメモリ量。 MemFree、SReclaimable、ファイルのLRUリストサイズ、および各地域の最低透かしに基づいて計算されます。推定システムが正常に動作するには、一部のページキャッシングが必要であり、プロジェクトが使用中であるため、すべてのリサイクル可能なスラブがリサイクル可能なわけではありません。これらの要因の影響はシステムによって異なります。より詳細な回答を得るには、/proc/meminfoの内容を公開する必要があります。

答え2

CentOS 7のマニュアルページを読むと、このフィールドはキャッシュおよび空きフィールドとは異なり、一部の項目(カーネルで使用可能なメモリなど)で使用されているため、すべての回収可能メモリが回収されるわけではないことを考慮して説明しますfreeavailable私はこれがあなたが見ている違いの理由だと思います。

使用可能:交換なしで新しいアプリケーションを開始するために使用できるメモリー量の見積もり。キャッシュまたはフリーフィールドによって提供されるデータとは異なり、このフィールドはページキャッシュを考慮し、プロジェクトが使用中であるため、すべての回収可能メモリボードが回収されるわけではありません(MemAvailable in /proc/meminfo、カーネル3.14で利用可能、使用可能)カーネル2.6 .27+、その他の場合は無料版と同じ)

関連情報