私が実行すると、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日に更新されたマニュアルページから)ファイルのフィールドのドキュメントが含まれていますが、まだ。cache
Cached
/proc/meminfo
man proc
meminfo
Cached
Shmem
これを実験的に見ることができます。メモリがあればfree
(ない場合available
)、tmpfsで次のファイルを作成できます。
dd bs=1M count=100 < /dev/zero > /dev/shm/test.tmp
その結果shared
、cached
数字はすべてfree -m
100ずつ増加します。
メモリのみがあり、正しくテストするにはavailable
不十分な場合は、できるだけ多くのページキャッシュを削除してメモリを作成できます。もちろん、ページキャッシュを削除することはパフォーマンスに非常に有害である可能性があります。物理サーバーではこれを行わないでください:-)。free
free
echo 1 | sudo tee /proc/sys/vm/drop_caches