Articles

Linuxでキャッシュをクリアする方法

LINUXファイルシステムキャッシュ(ページキャッシュ)は、IO操作を高速化するために使用されます。 特定の状況下では、管理者または開発者がキャッシュを手動でクリアする必要がある場合があります。 この記事では、Linuxファイルシステムキャッシュがどのように機能するかを説明します。 次に、キャッシュの使用状況を監視する方法と、キャッシュをクリアする方法を示します。 キャッシュが期待どおりに動作していること、およびキャッシュのフラッシュとクリアの手順も期待どおりに動作していることを確認するた

Linuxファイルシステムキャッシュの仕組み

カーネルは、全体的なパフォーマンスを高速化するために、ファイルシステムディスクアクセ Linuxのキャッシュはページキャッシュと呼ばれます。 ページキャッシュのサイズは、大量のディスクブロックをキャッシュするために有効な寛大なデフォルトで設定可能です。 キャッシュの最大サイズと、キャッシュからデータを削除するタイミングのポリシーは、カーネルパラメータで調整できます。 Linuxキャッシュのアプローチは、ライトバックキャッシュと呼ばれます。 つまり、データがディスクに書き込まれると、キャッシュにメモリに書き込まれ、ディスクに同期されるまでキャッシュ内でダーティとマークされます。 カーネルは内部データ構造を維持して、キャッシュ内でより多くの領域が必要なときにキャッシュから削除するデータを最適化します。

Linuxの読み取りシステムコール中に、カーネルは要求されたデータがキャッシュ内のデータブロックに格納されているかどうかをチェックします。 キャッシュミスの場合、データはIOシステムからフェッチされ、この同じデータが再び要求される可能性があるため、キャッシュポリシーに基づいてキャッ

メモリ使用量の特定のしきい値に達すると、バックグラウンドタスクは、メモリキャッシュをクリアしていることを確認するために、ダーティ これらは、メモリとCPUを集中的に使用するアプリケーションのパフォーマンスに影響を与え、管理者や開発者による調整が必要になる可能性があ

Freeコマンドを使用してキャッシュ使用量を表示する

システムメモリとキャッシュに割り当てられたメモリ量を分析するために、コマン 以下のコマンドを参照してください。

#free-m

上記のfreeコマンドからわかるのは、このシステムに7.5GBのRAMが このうち209MBのみが使用され、6.5MBは無料です。 バッファキャッシュでは667MBが使用されます。 次に、コマンドを実行して1ギガバイトのファイルを生成し、ファイルを読み取ることで、その数を増やしてみましょう。 以下のコマンドは、約100MBのランダムデータを生成し、ファイルの10個のコピーを1つのlarge_fileに追加します。#dd if=/dev/random of=/root/data_file count=1400000#for i in`seq1 10`;do echo dat i;cat data_file>>large_file;donediv>

今、私たちはこの1ギグファイルを読んでから、再びfreeコマンドをチェックすることを確認します:/dev/null
#free-m

バッファキャッシュの使用量が667から1735メガバイトに増加していることがわかります。バッファキャッシュの使用量がギガバイト増加します。

Proc Sys VM Drop Caches Command

linuxカーネルはキャッシュを削除するためのインターフェイスを提供しますこれらのコマンドを試してみて、free設定への影響を見てみましょう。

#echo1>/proc/sys/vm/drop_caches
#free-m

バッファキャッシュ割り当ての大部分がこのコマンドで解放されたことがわかります。

Drop Cachesが動作する実験的検証

キャッシュを使用してファイルを読み取るパフォーマンス検証を行うことはできますか? ディスクからファイルを読み取るのにかかる時間をテストするために、ファイルを読み込んで/dev/nullに書き戻しましょう。 私たちは時間コマンドでそれを時間を計ります。 上記のコマンドでキャッシュをクリアした直後にこのコマンドを実行します。p>

ファイルを読み取るのに8.4秒かかりました。 ファイルがファイルシステムキャッシュにあるはずなので、もう一度読んで、今どれくらいの時間がかかるか見てみましょう。p>

ブーム! それは唯一のかかりました。ファイルがキャッシュされていないときに読み取るのに2秒と比較して8.4秒。 確認するには、最初にキャッシュをクリアしてからファイルを2回読み込むことで、これをもう一度繰り返します。p>

期待どおりに完全に機能しました。 8.キャッシュされていない読み取りとのための5秒。キャッシュされた読み取りのための2秒。

結論

ページキャッシュはLinuxシステムで自動的に有効になり、最近使用したデータをキャッシュに格納することにより、IOを透過的に高速化します。 手動でキャッシュを消去したい場合は、echoコマンドを/procファイルシステムに送信して、キャッシュを削除し、キャッシュに使用されるメモリを解放す この記事では、コマンドを実行するための手順を上記に示し、フラッシュの前後のキャッシュ動作の実験的な検証も示しました。