キャッシュ: ARC アクセス
ARC は Adaptive Replacement Cache を意味し、ファイルシステムおよびボリュームデータのための DRAM 内のキャッシュです。この統計は、ARC へのアクセスを表示し、ARC の使用状況とパフォーマンスを観測できます。
チェックするタイミング
パフォーマンスの問題の検査中、現在のワークロードが ARC にどのようにキャッシュされているかをチェックするとき。
内訳
キャッシュ ARC アクセスの使用可能な内訳は次のとおりです。
Table 3-4 ARC アクセスの内訳
|
|
hit/miss
|
ARC ルックアップの結果。hit/miss の状態は、下の表で説明します。
|
ファイル名
|
ARC からリクエストされたファイル名。この内訳を使用すると階層モードを使用でき、ファイルシステムのディレクトリをナビゲートできます。
|
L2ARC 適格性
|
これは、ARC アクセスの時点で測定された L2ARC キャッシュ適格性です。L2ARC 適格データの ARC ミスが高い場合、そのワークロードにはレベル 2 キャッシュデバイスが有益となる可能性があります。
|
プロジェクト
|
これは ARC にアクセスしているプロジェクトを示します。
|
シェア
|
これは ARC にアクセスしているシェアを示します。
|
LUN
|
これは ARC にアクセスしている LUN を示します。
|
|
オーバーヘッドで説明したように、ファイル名による内訳などを有効なままにすると、もっとも高い負荷がかかります。
hit/miss 状態は次のとおりです。
Table 3-5 hit/miss の内訳
|
|
データ hit 数
|
データブロックが ARC DRAM キャッシュに存在し、返されました。
|
データ miss 数
|
データブロックは ARC DRAM キャッシュに存在しませんでした。データは L2ARC キャッシュデバイスから読み取られるか (使用可能でデータがキャッシュされている場合)、またはプールディスクから読み取られます。
|
メタデータ hit 数
|
メタデータブロックが ARC DRAM キャッシュに存在し、返されました。メタデータは、データブロックを参照するディスク上のファイルシステムフレームワークを含みます。その他の例についてはあとで示します。
|
メタデータ miss 数
|
メタデータブロックは ARC DRAM キャッシュに存在しませんでした。データは L2ARC キャッシュデバイスから読み取られるか (使用可能でデータがキャッシュされている場合)、またはプールディスクから読み取られます。
|
プリフェッチデータ/メタデータ hit/miss 数
|
アプリケーションからの直接リクエストでなく、プリフェッチメカニズムによってトリガーされた ARC アクセス。プリフェッチの詳細についてはあとで示します。
|
|
詳細
メタデータ
メタデータの例は次のとおりです。
-
ファイルシステムのブロックポインタ
-
ディレクトリ情報
-
データ複製解除テーブル
-
ZFS uberblock
プリフェッチ
プリフェッチはストリーミング読み取りのワークロードのパフォーマンスを向上させるメカニズムです。このメカニズムでは、入出力アクティビティーを検査して逐次読み取りであることを識別し、余分の読み取りを前もって実行することで、アプリケーションがデータをリクエストする前にデータをキャッシュに入れることができます。プリフェッチは ARC へのアクセスを実行することによって ARC よりも前に発生します。プリフェッチ ARC アクティビティーを理解しようとするときは、このことに注意してください。次に例を示します。
Table 3-6 プリフェッチタイプ
|
|
プリフェッチデータ miss 数
|
プリフェッチによって逐次ワークロードであることが識別され、データに対して ARC アクセスを実行することによってデータを前もって ARC にキャッシュすることがリクエストされました。データはキャッシュに存在しなかったため、これは「ミス」でデータはディスクから読み取られます。これは正常であり、プリフェッチによってディスクから ARC にデータを取り込む方法を示しています。
|
プリフェッチデータ hit 数
|
プリフェッチによって逐次ワークロードであることが識別され、データに対して ARC アクセスを実行することによってデータを前もって ARC にキャッシュすることがリクエストされました。ところがデータは ARC にすでに存在していたため、アクセスは「ヒット」を返し、プリフェッチ ARC アクセスは実際は不要でした。この現象は、キャッシュされたデータが逐次的な方法で繰り返し読み込まれる場合に起こります。
|
|
データがプリフェッチされたあと、アプリケーションはそれ自身の ARC アクセスによってデータをリクエストする場合があります。サイズが異なる場合があることに注意が必要です。プリフェッチは 128K バイトの入出力サイズで実行され、アプリケーションは 8K バイトの入出力サイズで読み取ることがあります。たとえば、次のデータは直接関係がないように見えます。
-
データ hit 数: 368
-
プリフェッチデータ miss 数: 23
ただし、プリフェッチが 128K バイトの入出力サイズでリクエストしていれば、これは 23 x 128 = 2944K バイトです。また、アプリケーションが 8K バイトの入出力サイズでリクエストしていれば、これも 368 x 8 = 2944K バイトです。
追加の分析
ARC ミスを調査するには、「キャッシュ: ARC サイズ」を使用して、ARC が増加して使用可能な DRAM をどの程度使用しているかチェックします。