このページでは、Cloud Storage FUSE で使用可能なキャッシュ オプションと、各キャッシュ タイプを構成する方法について説明します。
データ取得のパフォーマンスを向上させるため、Cloud Storage FUSE には次の 4 種類のキャッシュ保存機能がオプションとして用意されています。
考慮事項
ファイル キャッシュ、統計情報キャッシュ、型キャッシュ、リスト キャッシュを有効にすると、パフォーマンスは向上しますが、整合性が低下します。これは通常、変更率の高い複数のクライアントを使用して同じバケットにアクセスする場合に発生します。整合性への影響を軽減するため、バケットを読み取り専用としてマウントすることをおすすめします。キャッシュ保存の動作の詳細については、GitHub の Cloud Storage FUSE セマンティクスのドキュメントをご覧ください。
有効期間(TTL)に基づいてファイル キャッシュ エントリがまだ期限切れになっておらず、ファイルがキャッシュにある場合、そのファイルに対する読み取りオペレーションは、Cloud Storage にリクエストが発行されることなく、ローカル クライアント キャッシュから処理されます。
ファイル キャッシュ エントリが TTL に基づいて期限切れになった場合、最初に Cloud Storage に対して
GET
ファイル属性呼び出しが行われます。ファイルがキャッシュにない場合、またはファイルの属性でファイル コンテンツが変更されたことが示されている場合は、Cloud Storage からファイル コンテンツが取得されます。どちらのオペレーションもネットワーク レイテンシの影響を受けます。キャッシュに保存されたファイル属性が無効になっていても、ファイル コンテンツがキャッシュに存在し、そのオブジェクト生成が変更されていない場合は、GET
ファイル属性呼び出しでファイル コンテンツの有効性が確認されてからでなければ、ファイル コンテンツはキャッシュから提供されません。Cloud Storage FUSE クライアントがキャッシュに保存されたファイルのコンテンツまたはファイル属性を変更すると、そのファイルのキャッシュ エントリはすぐに無効になり、同じクライアントによる次の読み取りで整合性が保証されます。ただし、複数のクライアントが同じファイル コンテンツまたはそのファイル属性にアクセスし、それぞれのエントリがキャッシュに保存されている場合、これらのクライアントは、個々の有効期間(TTL)設定によって無効になるまで、ファイル コンテンツまたはそのファイル属性のキャッシュ保存バージョンを読み取り続けます。
キャッシュ スラッシングを回避するため、データセット全体がキャッシュ容量に収まるようにしてください。また、キャッシュ メディアが提供できる最大容量とパフォーマンスも考慮してください。プロビジョニングされたキャッシュのパフォーマンス、容量の上限、またはその両方に達した場合は、Cloud Storage FUSE よりも上限がはるかに高い Cloud Storage から直接読み取ることをおすすめします。
キャッシュ保存されたデータの読み取りパス
Cloud Storage FUSE キャッシュは、キャッシュに取り込まれた後の反復読み取りを高速化します。初回読み取りとキャッシュミスは、どちらも Cloud Storage に直接送信され、通常の Cloud Storage ネットワークのレイテンシの影響を受けます。初回読み取りのパフォーマンスを改善するには、メタデータ キャッシュに事前入力するをご覧ください。
ファイルのキャッシュ保存の概要
Cloud Storage FUSE のファイル キャッシュは、ローカル ファイル システムを基盤とするキャッシュ ストレージからファイルを繰り返し読み取る、クライアント ベースの読み取りキャッシュです。ファイル キャッシュの詳細については、ファイル キャッシュのページをご覧ください。
並列ダウンロード
ファイル キャッシュを有効にすると、Cloud Storage FUSE バージョン 2.12 以降で並列ダウンロードが自動的に有効になります。並列ダウンロードでは、ファイル キャッシュ ディレクトリをプリフェッチ バッファとして使用して、複数のワーカーでファイルを並列にダウンロードすることで、1 GB を超えるサイズの大きいファイル(初回読み取りを含む)の読み取りパフォーマンスを高速化します。並列ダウンロードを使用すると、モデル提供、チェックポイントの復元、大規模なオブジェクトのトレーニングなど、AI と ML のワークロードのパフォーマンスを最適化できます。並列ダウンロードの詳細については、並列ダウンロードをご覧ください。
ファイル キャッシュを構成する
ファイル キャッシュ保存を構成する方法については、Cloud Storage FUSE ファイル キャッシュを使用するをご覧ください。
統計情報キャッシュ保存の概要
Cloud Storage FUSE 統計情報キャッシュは、オブジェクト メタデータのキャッシュです。サイズ、変更時間、権限などのファイル属性に固有のオペレーションのパフォーマンスを向上させます。統計キャッシュを使用すると、レイテンシが短縮されます。Cloud Storage に統計オブジェクト リクエストを送信する代わりに、キャッシュに保存されたデータを使用してオペレーションを実行するからです。統計情報キャッシュ保存の詳細については、GitHub の Semantics のドキュメントをご覧ください。
統計情報のキャッシュを構成する
統計情報キャッシュはデフォルトで有効になっており、Cloud Storage FUSE 構成ファイルを使用して構成できます。キャッシュの最大サイズは、次のいずれかの方法で制御されます。
統計情報キャッシュのデフォルト値と推奨値の詳細については、Cloud Storage FUSE の CLI オプションと構成ファイルのページをご覧ください。
ネガティブな統計情報のキャッシュ保存を構成する
Cloud Storage FUSE には、ネガティブな統計情報キャッシュ機能もあります。これにより、存在しないファイルまたはネガティブな結果の統計情報キャッシュ エントリに TTL を設定できます。ネガティブな統計情報キャッシュの TTL は、次のいずれかの方法で制御されます。
型のキャッシュ保存の概要
Cloud Storage FUSE 型キャッシュは、ファイル、ディレクトリ、シンボリック リンクなどのキャッシュに保存された型情報を保存し、ファイルまたはディレクトリの存在に固有のメタデータ オペレーションのパフォーマンスを高速化するメタデータ キャッシュです。型キャッシュを使用すると、ファイルまたはディレクトリが存在するかどうかの情報をローカルに保存することで、この情報を確認するために Cloud Storage に送信されるリクエストの数を減らすことによって、レイテンシを短縮できます。タイプ キャッシュ保存の詳細については、GitHub の Semantics のドキュメントをご覧ください。
タイプ キャッシュを構成する
タイプ キャッシュはデフォルトで有効になっており、Cloud Storage FUSE 構成ファイルまたは Cloud Storage FUSE CLI を使用して構成できます。キャッシュの最大サイズは、次のいずれかの方法で制御されます。
タイプ キャッシュ保存と推奨値の詳細については、CLI オプションまたは構成ファイルのページをご覧ください。
キャッシュの TTL は、次のいずれかの方法で制御されます。
リスト キャッシュ保存の概要
Cloud Storage FUSE リスト キャッシュは、ディレクトリとファイルリスト、または ls
のレスポンス用です。これにより、リスト オペレーションの速度が向上します。リスト キャッシュは、AI / ML トレーニングの実行など、実行の一部としてディレクトリ全体の一覧取得を繰り返すワークロードに特に便利です。
リスト キャッシュはページ キャッシュのメモリに保持され、メモリの可用性に基づいてカーネルによって制御されます。これは、マシンのメモリに保持され、Cloud Storage FUSE によって制御される統計情報キャッシュや型キャッシュとは対照的です。
リスト キャッシュ保存を構成する
リスト キャッシュを有効にするには、次のいずれかの方法を使用します。
リスト キャッシュを有効にして構成するには、Cloud Storage FUSE 構成ファイルまたは Cloud Storage FUSE CLI オプションのページをご覧ください。
ファイル、統計情報、タイプ キャッシュ保存の無効化を構成する
以降のセクションでは、すべてのキャッシュ タイプに対してキャッシュの無効化を構成する方法について説明します。
ファイル キャッシュ、統計情報キャッシュ、タイプ キャッシュの場合、次のいずれかの方法を使用して、キャッシュに保存されるメタデータの TTL(Cloud Storage から取得されてから期限切れになるまでの期間)を秒単位で指定します。
0
より大きい値を指定すると、ファイル キャッシュのメタデータは、指定した時間だけ有効になります。ファイル キャッシュの場合、整合性確保の必要性とのバランスを取りながら、繰り返しの読み取りにかかると予測される間隔に基づいて値を増やすことをおすすめします。データ変更の重要度と頻度に基づいて、ワークロードで許容される範囲で値を設定することをおすすめします。メタデータ エントリが無効になると、後続の読み取りが Cloud Storage からクエリされます。
キャッシュに保存されたメタデータが期限切れになり、更新が必要になるまでの時間(TTL)を秒単位で指定できるほか、次の値を使用してファイルの読み取り方法を指定することもできます。
0
: Cloud Storage に対してGET
metadata 呼び出しを発行し、キャッシュの整合性が保たれているか確認するために、Cloud Storage のデータ提供元のファイルを検証することで、最新のデータを含むファイルが読み込まれるようにします。キャッシュ内のファイルが最新である場合、ファイルがキャッシュから直接提供されます。0
以外の値を指定すると、最初にメタデータを確認するために Cloud Storage に対する呼び出しを行う必要があるため、パフォーマンスが低下する可能性があります。ファイルがキャッシュに存在し、変更されていない場合、GET
metadata 呼び出し後にキャッシュからファイルが整合性を保たれた状態で提供されます。-1
: キャッシュが使用可能な場合にファイルが必ずキャッシュから読み取られます。その場合、整合性チェックは行われません。整合性チェックを行わずにファイルを提供すると、整合性のないデータが提供される場合があるため、この方法は、データが変化しないジョブで実行されるワークロードにのみ一時的に使用してください。たとえば、同じデータが複数のエポックで変更なしで読み取られる ML トレーニングでは、-1
の値を使用すると便利です。
リスト キャッシュの無効化
リスト キャッシュの無効化は、次のいずれかの方法で 0
より大きい値を指定することで設定できます。
--kernel-list-cache-ttl-secs
CLI オプションfile-system:kernel-list-cache-ttl-secs
フィールド
ディレクトリ リストのレスポンスはカーネルのページ キャッシュに保持され、指定した期間、有効になります。-1
の値を指定すると、Cloud Storage FUSE はリスト キャッシュの有効期限を無効にし、キャッシュから利用可能であれば、キャッシュからリスト レスポンスを返します。値 0
を指定すると、リスト キャッシュが無効になります。
次のステップ
ファイルのキャッシュ保存の使用と構成の方法を確認する。
パフォーマンスを改善する方法の詳細を確認する。