drop_caches が「利用可能な」メモリを増やすのはなぜですか

drop_caches が「利用可能な」メモリを増やすのはなぜですか

私が管理している proxmox 7 ノードでメモリ不足の問題が発生しています。同様の問題について読んでいるときに、linuxatemyram.com に誘導され、このページを読んだ後、「使用済み」メモリではなく「使用可能」メモリを監視し始めました。しかし、問題は解決しませんでした (使用可能メモリは稼働時間とともに減少します)。

その後、コマンドを発行することで Linux キャッシュを強制的に解放できることが分かりましたecho 3 > /proc/sys/vm/drop_caches。「使用済み」メモリが解放されることを期待していましたが、「使用可能」メモリが増加するとは予想していませんでした。私の理解では、使用可能メモリも Linux によってキャッシュに使用されるため、使用されているとみなされるためです。

しかし、以下に示すように、drop_caches 後に「使用可能な」メモリが増加しました。

root@proxmox13:~$ free -h
               total        used        free      shared  buff/cache   available
Mem:            31Gi        29Gi       1.1Gi        67Mi       258Mi       977Mi
Swap:             0B          0B          0B
root@proxmox13:~$ echo 2 > /proc/sys/vm/drop_caches
root@proxmox13:~$ free -h
               total        used        free      shared  buff/cache   available
Mem:            31Gi        26Gi       4.1Gi        67Mi       205Mi       3.9Gi
Swap:             0B          0B          0B

なぜ増加したのですか? 解放されたメモリがキャッシュに使用されていた場合、以前は使用可能であるとみなされなかったのはなぜですか?

ご協力いただきありがとうございます。

答え1

高いレベルでは、無料で利用できるプラス人間の利便性のために、キャッシュやその他の簡単に回収できるもの。https://www.linuxatemyram.com/何が起こっているかを説明するために available を使用します。free を除外したさまざまなキャッシュ用の他のカウンターも存在します。

実際には、Linux VMMは複雑で厄介です。メモリ使用量が単純な計算で正確に合計されることはほとんどありません。/proc/meminfoにキャッシュされているのはページキャッシュを意味しますでも、あなたも落ちたdentry と inode. そのため、無料の buff/cache はあまり変更されませんでした。カーネル オブジェクトを詳細に調べる必要がある場合は、slabtop を試してください。

32 GB のうち 1 GB しか使用できないのは、容量計画の観点からは十分ではありません。VM ホストあたりのゲスト数を減らすか、物理メモリを増やすことを検討してください。

キャッシュを削除し、ディスクからデータを再読み込みする作業によりパフォーマンスが低下する可能性があるので、使用しないでください/proc/sys/vm/drop_caches。これは、ホストを再起動するのが面倒な場合に、コールド ストレージのパフォーマンス テストを行うためのものです。

再起動について言えば、利用可能なメモリが徐々に減少するためにプログラムがメモリをリークする必要はありません。VM ホストと内部のゲストはおそらく何千ものタスクを実行しており、そのうちのいくつかは実行され続け、さまざまなメモリ割り当てを維持します。ソフトウェアの更新のために数か月ごとに再起動する必要があるため、「リーク」がゆっくりである限り、詳細に調査する価値はないかもしれません。

メモリ監視を改善するには、以下も確認してください。圧力失速情報私が実際に気にしている指標は、タスクがメモリ不足のために停止しているかどうかであり、PSI はそれを追跡します。

関連情報