ディスクキャッシュ/バッファをクリアするには、通常、次のコマンドを実行します。
# sync && echo 3 > /proc/sys/vm/drop_caches
ただし、コマンドを入力した後は、free
実際に列に何も報告されませ0
んbuff/cache
。例は次のとおりです。
# free -m
total used free shared buff/cache available
Mem: 7.6Gi 2.9Gi 3.6Gi 238Mi 1.1Gi 4.1Gi
Swap: 9.8Gi 1.0Mi 9.8Gi
Total: 17Gi 2.9Gi 13Gi
# sync && echo 3 > /proc/sys/vm/drop_caches
# free -m
total used free shared buff/cache available
Mem: 7.6Gi 2.8Gi 4.2Gi 224Mi 588Mi 4.2Gi
Swap: 9.8Gi 1.0Mi 9.8Gi
Total: 17Gi 2.8Gi 13Gi
したがって、キャッシュにあっ1.1G
た588M
。
これを588M
減らすことができますか0
? (おそらく)そうでない場合、その理由は何ですか?そして、sync
ファイルをエクスポートして書き込んだ後にキャッシュ/バッファがどれだけ残っているかを事前に知る方法はありますか/proc/sys/vm/drop_caches
?
答え1
いいえ、キャッシュには(通常は開いている)ファイルのバッファだけでなく返品実行中のアプリケーションとライブラリのディスクイメージ。
そして、同期を実行して/proc/sys/vm/drop_cachesファイルに書き込んだ後、事前にキャッシュ/バッファの量を知る方法はありますか?
私にとって、これは非常にマイナーな作業のようですが、解決策があるかもしれません。開いているアプリケーション/ライブラリファイルのサイズを計算すると、正しい方向が得られますが、そうではありません。たとえば、Google Chromeを実行している場合、バイナリサイズは160 MBですが、完全にキャッシュされません。すべての機能が同時に実行されるわけではありません。
必要な答えに近づく必要があるメモリ範囲を計算し/proc/$PID/maps
、実行中のアプリケーション間で共有される範囲も確認できます。