パフォーマンスの問題に直面していて、それがキャッシュの使用に関連している可能性があると思われますか?通常、キャッシュの使用率が高いとパフォーマンスの問題が発生することはありませんが、まれに根本的な原因になる場合があります。
メモリキャッシュとは
操作を高速化し、ディスク I/O を削減するために、カーネルは通常、メモリと同じ量のキャッシュを実行します 設計上、キャッシュされたデータを含むページは、オンデマンドで他の用途 (アプリなど) に転用できます。手付かずの元のページを主張するよりも遅くはありません.
/proc/sys/vm/drop_caches の目的は何ですか
/proc/sys/vm/drop_caches に書き込むことで、カーネルにできるだけ多くのクリーンなキャッシュ データをすぐに削除するよう要求できます。これにより、通常、一部のメモリがより明らかに利用可能になります。ただし、通常の状況では、これは必要ありません。
/proc/sys/vm/drop_caches を使用してメモリ キャッシュをクリアする方法
ファイル /proc/sys/vm/drop_caches に適切な値を書き込む カーネルがクリーンなキャッシュ、dentry、inode をメモリから削除し、そのメモリを解放します。
<強い>1. PageCache のみをクリアするには、次を実行します:
# sync; echo 1 > /proc/sys/vm/drop_caches
<強い>2. dentry (ディレクトリ キャッシュとも呼ばれます) と inode をクリアするには、次のコマンドを実行します:
# sync; echo 2 > /proc/sys/vm/drop_caches
<強い>3. PageCache をクリアするために、dentry と inode が実行されます:
# sync; echo 3 > /proc/sys/vm/drop_caches
同期を実行すると、ダーティ ページがディスクに書き込まれます。通常、ダーティ ページは使用中のメモリであるため、解放することはできません。そのため、同期を実行すると、後続のドロップ操作でより多くのメモリを解放するのに役立ちます。
ページ キャッシュ ファイルを読み取った後に保持されるメモリです。 Linux カーネルは、一度読み取られたファイルが近い将来再び読み取られる可能性が最も高いと想定して、未使用のページ キャッシュを保持することを好むため、ディスク IO のパフォーマンスへの影響を回避します。
dentry と inode_cache open() や stat() などのディレクトリ/ファイル属性を読み取った後に保持されるメモリです。 dentry はすべてのファイル システムで共通ですが、inode_cache はファイル システムごとに異なります。 Linux カーネルは、近い将来再び必要になると想定してこの情報を保持することを好むため、ディスク IO を回避します。
注意 :上記の 3 つのコマンドに示すように、sync コマンドで開始することはオプションです。 sync コマンドを使用すると、カーネルは可能な限り多くのダーティ キャッシュ ページをディスクに書き込むことができます (削除できるデータ キャッシュ ページの数を最大化するため)。sysctl を使用してメモリ キャッシュをクリアする方法
sysctl -w vm.drop_caches=[number] を使用して、キャッシュ ドロップをトリガーすることもできます。 指図。
<強い>1.ページキャッシュ、dentry、inode を解放するには、以下のコマンドを使用してください。
sysctl -w vm.drop_caches=3
<強い>2. dentry と inode のみを解放するには、次のコマンドを使用します。
sysctl -w vm.drop_caches=2
<強い>3.ページキャッシュのみを解放するには、以下のコマンドを使用してください。
sysctl -w vm.drop_caches=1注意 :システムのメモリと I/O 負荷が高い場合、vm.drop_caches を使用するとデッドロックが発生する可能性があります!!!
「クリーン」なキャッシュ データは削除の対象となります。 「ダーティ」なキャッシュ データは、どこかに書き込む必要があります。 vm.drop_caches を使用しても、カーネルがダーティ キャッシュをドロップすることはありません。