プログラムが閉じられたときにキャッシュが自動的に同期されるように構成するにはどうすればよいですか?

プログラムが閉じられたときにキャッシュが自動的に同期されるように構成するにはどうすればよいですか?

現在のプログラムが終了時にスタック割り当てをキャンセルしないという問題に取り組んでいます。これはLinuxページキャッシュの自然な動作のようです。

デスクトップを開くと、約300〜500MB程度実行されます。 ArdorなどのRAMを多く使用する他のプログラムを開くためにブラウザを閉じた後使用されるラムは落ちたけど割り当てられたRAMは大幅に変更されていないか、最大2.2GBまで低下します。


同じ問題も議論中これワイヤー。私が見つけた解決策は、次のコマンドを実行してPageCacheだけを消去することでした。

sync; echo 1 > /proc/sys/vm/drop_caches

以下は、dentryとinodeを消去します。

sync; echo 2 > /proc/sys/vm/drop_caches

以下は、PageCace AND dentryとinodeを消去します。

sync; echo 3 > /proc/sys/vm/drop_caches

しかし、毎回これを実行したくありません。私は私のワークスペースがプログラム間でRAMのすべてのビットを自由に利用できるようにしたいと思います。

システムレベルでPageCacheを設定する方法はありますか、それともリスナーの種類でサービスを実行し、プログラムが閉じられたときに上記のコマンドをトリガーするなどの簡単なタスクを実行する必要がありますか?


Braveの電源を入れて、次の例を参照してください。

ブラウザが開いたときのhtopの写真

閉じた後にもう一つあります。

ブラウザを閉じた後のhtopの写真

起動時にRAMは次のようになります。

起動時のhtop

システムメッセージ:

カーネル: 5.10.56-1-lts

フラバ:アーチ

デスクトップ: i3-Gap

テスト済みプログラム: Brave、Chromium、Firefox、Ardor、Gimp、Inkscape

答え1

これは、「終了時にスタックの割り当てを解除しない」プログラムとは異なります。あなたが見ているのは、ディスク上のデータがRAMにキャッシュされていることです。これは、あなたがリンクした質問への回答で説明したように正常です。

未使用のRAMは無駄なRAMです。

キャッシュを削除して「修正」しようとしないでください。メモリが不足すると、カーネルは必要に応じてキャッシュされたデータ量を自動的に減らします。キャッシュにデータを保存すると、データにアクセスするのに必要な時間が短縮されます。

これが実際に機能していることを確認するには、Braveを起動して停止してから再起動してください。今すぐ停止し、キャッシュを削除して再起動して、どのくらい時間がかかるかを確認します。

ページキャッシュは、プログラムの終了時に自動的に消去できません。 1つの理由は、ページキャッシュの内容が特定のプロセスに関連していないためです。あなたできる特定のプロセスで使用されるページキャッシュの量を次の場所に配置して制限します。グループcgroupが使用できるメモリ量を制限します。これにはページキャッシュが含まれます。

答え2

あなたが求めるのは、コンピュータが後で何かを覚えておく必要がある場合に備えて、今何かを忘れてしまうことです。必要に応じてキャッシュされたデータ(ディスクから取得できるデータ)は削除されますが、以前は削除されません。ずっと前に忘れてしまえば惜しいです。忘却は費用が少ないため、最後の瞬間に忘却することができます。

データを誤って解釈しています。キャッシュとバッファメモリを「使用中」とは考えないでください。

答え3

この問題を発見した他の人の答えは次のとおりです。HDパラメータ表示される行を見つけてコメントを外しますwrite_cache = off。まだテストしていませんが、後で結果を返す必要があります。

技術的には、他の正解からわかるように、書き込み/読み込みキャッシュがデフォルトの理由があります。最大はい。 Linuxがメモリを管理する方法を乱すと、データが失われ、記憶媒体の早期パフォーマンスが低下する可能性があります。誰もが議論したいパフォーマンスの問題は言うまでもありません。

私にとってこれは問題ではありません。実際には重要ではないメモリを無視することが望ましい。

関連情報