キャッシュメモリと共有メモリの合計がメモリ全体を超えています。

キャッシュメモリと共有メモリの合計がメモリ全体を超えています。

私が実行すると、free -h次のようになります。

             total       used       free     shared    buffers     cached
Mem:          251G       208G        43G       179G       144M       190G
-/+ buffers/cache:        17G       233G
Swap:         5.6G       5.6G       1.1M

共有メモリ(179G)+キャッシュメモリ(190G)がどのように合計メモリ(251G)を超えるのですか?メモリはキャッシュメモリと共有メモリと見なすことができますか?

ベストアンサー1

すべてのsharedメモリも重要ですcached

sharedメモリはtmpfs内部で実装されます。 tmpfsバックアップストア(スワップ可能を除く)なしでページキャッシュの周りに薄いラッパーとして実装されますtmpfs


man freeこれについての説明はありません。少なくとも私のシステムでは、(procps-ngによって提供され、2016-06-03に最後に更新されました)。申し訳ありません。すべては、これがからインポートされたman freeことを示しています。 (2017年9月15日に更新されたマニュアルページから)ファイルのフィールドのドキュメントが含まれていますが、まだ。cacheCached/proc/meminfoman procmeminfoCachedShmem

これを実験的に見ることができます。メモリがあればfree(ない場合available)、tmpfsで次のファイルを作成できます。

dd bs=1M count=100 < /dev/zero > /dev/shm/test.tmp

その結果sharedcached数字はすべてfree -m100ずつ増加します。

メモリのみがあり、正しくテストするにはavailable不十分な場合は、できるだけ多くのページキャッシュを削除してメモリを作成できます。もちろん、ページキャッシュを削除することはパフォーマンスに非常に有害である可能性があります。物理サーバーではこれを行わないでください:-)。freefreeecho 1 | sudo tee /proc/sys/vm/drop_caches

おすすめ記事