Linuxキャッシュは完全に消去できず、数日後にRAM全体を埋めます。

Linuxキャッシュは完全に消去できず、数日後にRAM全体を埋めます。

私は仕事用にラップトップを使用しているので、システムをシャットダウンせずに毎日RAMにしばらく停止します。これにより、毎日すべてのアプリを再起動する必要がなくなります。

数日間「稼働時間」を送信した後、キャッシュがいっぱいになったことを確認しましたが、完全に消去することはできません。これによりスワップが使用され、OOMが発生します。

# echo 3 > /proc/sys/vm/drop_caches; free -wht
              total        used        free      shared     buffers       cache   available
Mem:           23Gi       2.2Gi        15Gi       4.7Gi       0.0Ki       5.2Gi        15Gi
Swap:         2.0Gi          0B       2.0Gi
Total:         25Gi       2.2Gi        17Gi
# free -wht
              total        used        free      shared     buffers       cache   available
Mem:           23Gi       4.4Gi       457Mi       9.1Gi       3.5Gi        14Gi       9.2Gi
Swap:         2.0Gi       0.0Ki       2.0Gi
Total:         25Gi       4.4Gi       2.4Gi
# echo 3 > /proc/sys/vm/drop_caches; free -wht
              total        used        free      shared     buffers       cache   available
Mem:           23Gi       4.3Gi       9.0Gi       9.0Gi       0.0Ki       9.8Gi       9.4Gi
Swap:         2.0Gi       0.0Ki       2.0Gi
Total:         25Gi       4.3Gi        11Gi
# echo 3 > /proc/sys/vm/drop_caches; free -wht
              total        used        free      shared     buffers       cache   available
Mem:           23Gi       4.3Gi       9.0Gi       9.0Gi       0.0Ki       9.8Gi       9.4Gi
Swap:         2.0Gi       0.0Ki       2.0Gi
Total:         25Gi       4.3Gi        11Gi
# uptime
 10:57:09  up 3 days 19:26,  5 users,  load average: 0.89, 1.94, 1.69
# uname -a
Linux xxxxx-00164 5.3.18-150300.59.76-preempt #1 SMP PREEMPT Thu Jun 16 04:23:47 UTC 2022 (2cc2ade) x86_64 x86_64 x86_64 GNU/Linux
# 

どのアプリやファイルがキャッシュに閉じ込められているかを確認する方法はまだわかりません。私は3> drop_cachesが削除されたと仮定します。みんなファイルキャッシュエントリ。しかし、私のラップトップはより長く動作するので、キャッシュを削除すると毎回確保されるリソースが減ります。上記の出力は約8時間続きます。 1秒以内に2回(最後の2つのechoコマンド)キャッシュを消去しようとしましたが、キャッシュに残っていた内容が利用可能なエントリから失われました。

そのような行動を分析する方法は?キャッシュには何が残っていますか?

とても感謝しています!ステファンK.

答え1

数日間「稼働時間」を送信した後、キャッシュがいっぱいになったことを確認しましたが、完全に消去することはできません。これによりスワップが使用され、OOMが発生します。

私はあなたが間違った問題を見ていると思います。 drop_cachesコマンドは、使用している項目を削除できません。したがって、ゼロにはなりません。しかし、これは通常問題ではありません。このサイトではおそらく12の答えがあります(例:Linuxシステムでバッファとキャッシュを消去する方法は?)これは一般的に意味がないと言います。

しかし、それでも数字を直接ゼロにecho 3 > /proc/sys/vm/drop_cachesすることができない理由を説明することはないと思います。cached私は影響を与える可能性がある少なくとも2つを知っています:ファイルtmpfs(まだ開いているが削除されている可能性があるファイルを含めるServerfaultへのこの回答)とzram(zramctlコマンドを参照).他にもいくつかあります。

基本的な問題は、キャッシュではなく、何かがメモリを使用していることです。本当に

関連情報