
私が読んでいるこの記事新しいLinux VMがRAMの3分の1を占めるので、バッファ/キャッシュを消去するために以下を実行しました。
sync; echo 1 > /proc/sys/vm/drop_caches
問題はすぐに解決されたので、cronjobに追加しました。この記事では、clearcache.sh
次の内容でファイルを生成するように指示します。
#!/bin/bash
# Note, we are using "echo 3", but it is not recommended in production instead use "echo 1"
echo "echo 3 > /proc/sys/vm/drop_caches"
どうしたのsync
?動作するには実行する必要はありませんか?このコマンドを実行するためにcronjobでエコーがエコーされるのはなぜですか?コマンドラインでこれを試しましたが、期待どおりにコマンドがエコーされました。
# echo "echo 3 > /proc/sys/vm/drop_caches"
echo 3 > /proc/sys/vm/drop_caches
これは私が知らない魔法のクローン機能ですか?
答え1
LinuxがRAMを使用する方法のポイント/哲学を完全に見逃しました。
RAMは完全に空で、OSがファイルをインポートするためにHDDにアクセスする必要がある場合に無駄になるリソースです。したがって、Linuxでは、パフォーマンスを向上させるために多くのRAMを消費するバッファとキャッシュを維持します。
このRAMはプロセスでいつでも使用できます(実際はキャッシュです)。
ディスクからデータを読み出すことは、(実際の)メモリにアクセスするのに比べて非常に遅いです。さらに、比較的短い時間内にディスクの同じ部分を何度も読み取ることが一般的である。たとえば、最初に電子メールを読んでから返信したときにエディタで手紙を読み、次にフォルダにコピーしたときにメールプログラムから再度読み取ることができます。あるいは、ユーザーが多くのシステムで ls コマンドがどれだけ頻繁に実行されるかを検討してください。ディスクから情報を一度だけ読み込み、必要なくなるまでメモリに保存すると、最初の読み込みを除くすべての読み込み速度が速くなる可能性があります。これをディスクバッファリングといい、そのために使用されるメモリをバッファキャッシュと呼びます。
はい
$ free -hw
total used free shared buffers cache available
Mem: 992M 76M 202M 12M 68M 645M 739M
Swap: 2.0G 0B 2.0G
この出力では、私のVMのサイズは約992MBで、そのうち202MBしか使用できないようです。しかし、これはまさに多くの人々が混乱/誤解を招く点です。
このLinuxシステムには、実際に739MBの空き容量があります(利用可能な列)。
どうやってこれができますか?
単純な。 Linuxは、毎回これらのファイルを取得するために遅いHDDを使用するのではなく、RAM(バッファとキャッシュ)にファイル、ライブラリなどを保持してパフォーマンスを向上させるためにRAMを使用します。
Linuxカーネルはこの方法でバッファとキャッシュを使用し、いつでもメモリマネージャ(カーネルの一部)がより多くのRAMを必要とするプロセスの圧力を検出すると、カーネルは実際に処理中のすべてのデータを削除できます。すぐにRAMを増やすにはここにキャッシュしてください。
あなたの問題
あなたの質問はスクリプトに関するものですclearcache.sh
。答えは簡単です。これを書いた人のタイプミスです。次のようにする必要があります。
$ echo "echo 3 > /proc/sys/vm/drop_caches" | sudo sh
この質問に対する私のU&L Q&Aの回答を誤ってコピー/貼り付けた可能性があります。Linuxシステムでバッファとキャッシュを消去する方法は?