Linux: ディスクキャッシュなどに使用される RAM を削減する

Linux: ディスクキャッシュなどに使用される RAM を削減する

仮想サーバーを所有しており、プロバイダーはリソース使用量に基づいて料金を請求します。最大 RAM の制限を設定できますが、最大値ではなく実際に使用した RAM に対して料金が請求されます (料金は実際の使用量に基づいて 5 分ごとに計算されます)。

通常、すべての RAM を使用することは問題ありませんが、Linux ポリシーの「未使用の RAM は無駄な RAM」は、この種の計算には不十分です。マシンは最終的にすべての使用可能な RAM を使用することになり、その大部分がディスク キャッシュのみであっても、その費用を支払う必要があるためです。

RAM のピーク需要に対応するために、プロバイダーの制限を少し高めに設定したいのですが、キャッシュなどに使用されるメモリの量を何らかの方法で制限できますか? たとえば、3 GB を予約し、アプリケーション + システム サービスで通常 1 GB 必要だとします。ただし、本当に必要な場合は、アプリケーションで 2 GB の RAM を追加で使用できますが、アイドル状態のときは、キャッシュが最大 500 MB の空き RAM のみを使用するように制限し、常に 3 GB の料金を支払わなくても済むようにします。

答え1

リンクされた回答Linux システムでバッファとキャッシュを空にする方法キャッシュ (ページキャッシュ、dentry、inode) を解放する方法を示します。この解放アクティビティは、おそらく cron から繰り返し実行する必要があります。OpenVZ のメモリ管理は複雑であるように思われるため (または十分に文書化されていないため)、OpenVZ コンテナーで希望どおりに動作するかどうかはわかりません。OpenVZ を批判するつもりはありません。OpenVZ は優れた仮想化ソリューションであり、多くのシステムを物理サーバーに詰め込むことができます。

いいね、Linux-ftools についてファイルごとに使用されているキャッシュ ページの数を確認するのに役立ちます。

実験してみるのもいいでしょうスワップネス、積極的なスワッピングの場合は 100 に設定します。

関連情報