本番環境では、dropキャッシュコマンドを実行してecho 3 > /proc/sys/vm/drop_caches
RAMを解放します。しかし、キャッシュを削除するのは良い習慣ではなく、プロセスにもっと多くのメモリが必要で、そのメモリが利用できない場合、OSはキャッシュを消去してそれに応じてメモリを割り当てるのであまり役に立ちません。
技術的価値もある書くことができるコマンドを実行する前後のメモリはdrop_caches
同じでなければなりません。
しかし、いくつかのテストを実行したときにキャッシュを削除すると、空きRAMを確保するのに役立つことがわかりました。
free -h
-キャッシュを削除する前に
total used free shared buff/cache available
Mem: 7.6G 4.2G 524M 306M 2.9G 2.8G
Swap: 4.0G 439M 3.6G
free-h
-キャッシュ削除後
total used free shared buff/cache available
Mem: 7.6G 3.3G 3.8G 306M 452M 3.8G
Swap: 4.0G 439M 3.6G
私たちが見ることができるように書くことができるメモリが1GB増えてもっと興味深いのは使用されるメモリがほぼ1GBほど減ります。これが私がとても混乱している部分です。drop_cache
コマンドを消去してはいけませんかcached memory
?いくつかの実行中のプロセス(例:使用されるメモリ)
誰かがこれを説明できますか?
- コマンドはどのように
echo 3 > /proc/sys/vm/drop_caches
機能しますか? - freeコマンドで利用可能なメモリを計算する方法(利用可能なメモリ分析)
編集後
私の質問の1つはまだ答えられていません。
技術的には、drop_cachesコマンドの実行前と実行後に使用可能なメモリ値は同じでなければなりません。
私たちが議論したように、書くことができるメモリには、回収可能なスラブオブジェクトが含まれます。
はい、リサイクル可能なスラブオブジェクトは、フリー、バッファ、またはキャッシュに含まれていないため、最終的に使用されることを意味します。 「使用可能」の定義には明示的に含まれているため、そこにも含まれます。
ただし、実行すると、echo 2 > /proc/sys/vm/drop_caches
回収可能なスラブオブジェクト(ディレクトリとinodeを含む)は解放されます。
キャッシュを削除する前に
total used free shared buff/cache available
Mem: 7.6G 4.2G 397M 331M 3.0G 2.7G
Swap: 4.0G 429M 3.6G
キャッシュ削除後
total used free shared buff/cache available
Mem: 7.6G 3.3G 3.8G 331M 483M 3.8G
Swap: 4.0G 429M 3.6G
ここで見るように書くことができるキャッシュ削除後にメモリが増えたのに、すでに使っているので、echo 2
ただ無料ですねreclaimable slab objects
。 〜のように書くことができるメモリには、常にreclaimable slab objects
実行時にecho 2 > /proc/sys/vm/drop_caches
変更してはいけない値が含まれています。書くことができるメモリ。
しかし、私の場合はそうではありません。