Cloud Storage FUSE のパフォーマンスとベスト プラクティス

このページでは、Cloud Storage FUSE のパフォーマンス(レイテンシ、帯域幅、キャッシュ、再試行)と、Cloud Storage FUSE を使用する際のベスト プラクティスについて説明します。

読み取りと書き込み

Cloud Storage FUSE は、ランダムな読み書きワークロードよりも、順次読み取り / 書き込みワークロードに対して優れたパフォーマンスを発揮します。Cloud Storage FUSE は、ヒューリスティックを使用して、ファイルが順次読み取られることを検出します。これにより、同じ TCP 接続を使用して Cloud Storage FUSE から Cloud Storage により少ない読み取りで大きな読み取りリクエストを発行できます。

シーケンシャル読み取りパフォーマンスを最適化するには、5 MB から 200 MB のサイズのファイルをアップロードして読み取ることをおすすめします。ランダムな読み取りパフォーマンスを最適化するには、約 2 MB のサイズのファイルをアップロードして読み取ることをおすすめします。

IOPS(1 秒あたりのクエリ数)

Filestore は、高い 1 秒あたりの入出力オペレーション(IOPS)(Cloud Storage では「秒間クエリ数」とも呼ばれる)を必要とするワークロードの場合、Cloud Storage FUSE よりも優れたオプションとなります。また、Filestore は、単一ファイル システム上の非常に高い IOPS と、低いレイテンシを実現する優れたオプションです。

レイテンシとスループット

Cloud Storage FUSE のレイテンシは、ローカル ファイル システムよりも長くなっています。小さなファイルを 1 つずつ読み取る / 書き込むと、複数の API 呼び出しが発生するため、スループットは低下します。複数の大きなファイルを一度に読み書きすると、スループットが向上する場合があります。

Cloud Storage FUSE のファイル システムのレイテンシは rsync に影響します。これにより、ファイルの読み取りと書き込みは一度に 1 つのみ行われます。バケットで複数のファイルを並列転送するには、gsutil -m rsync を実行して gsutil を試してください。 詳細については、gsutil rsync のドキュメントをご確認ください。

レート制限

Cloud Storage FUSE が Cloud Storage に送信するトラフィックのレートを制限するには、gcsfuse mount コマンドの一部として次のオプションを使用できます。

  • --limit-ops-per-sec オプションは、Cloud Storage FUSE が Cloud Storage にリクエストを送信するレートを制御します。

  • --limit-bytes-per-sec オプションは、Cloud Storage FUSE が Cloud Storage からデータをダウンロードする帯域幅を制御します。

これらのオプションの詳細については、gcsfuse mount のドキュメントをご覧ください。

すべてのレート制限は概算で、8 時間の時間枠にわたって実行されます。デフォルトでは、レート制限は適用されません。

アップロード手順の制御

デフォルトでは、Cloud Storage FUSE から Cloud Storage への失敗したリクエストは、指定されたバックオフ期間まで、デフォルトでは 1 値(1 分)まで指数バックオフで再試行されます。バックオフ期間が指定した上限を超えると、再試行が停止します。--max-retry-sleep オプションを gcsfuse mount 呼び出しの一部として使用して、バックオフ期間を指定できます。値を 0 に設定すると、再試行が無効になります。

--max-retry-sleep オプションの詳細については、gcsfuse mount ドキュメントをご覧ください。

キャッシュ

デフォルトでは、Cloud Storage FUSE は統計キャッシュとタイプ キャッシュを使用します。gcsfuse mount 呼び出しの一部として --stat-cache-capacity--stat-cache-ttl--type-cache-ttl オプションを使用すると、Cloud Storage FUSE のキャッシュ動作を制御できます。

  • --stat-cache-capacity オプションは、統計キャッシュのサイズを制御します。

  • --stat-cache-ttl オプションは、Cloud Storage FUSE が統計エントリをキャッシュに保存する期間を指定します。

  • --type-cache-ttl オプションは、Cloud Storage FUSE が Cloud Storage 内のオブジェクトのマッピングをファイルまたはディレクトリなどの対応するタイプにキャッシュする期間を指定します。

統計キャッシングとタイプ キャッシング オプションの詳細については、gcsfuse mount のドキュメントをご覧ください。

考慮事項

マウントされたバケット内のすべてのオブジェクト(ls の実行など)を一覧表示すると、Cloud Storage FUSE は Cloud Storage の Objects: list API を呼び出します。この API は結果をページ分けします。つまり、バケット内のオブジェクトの数によっては、Cloud Storage FUSE で複数の呼び出しを発行する必要が生じる場合があります。これにより、リスト オペレーションが高コストで遅くなる可能性があります。

ベンチマーク

Cloud Storage FUSE の負荷テストを実行する手順については、GitHub ドキュメントのパフォーマンス ベンチマークをご覧ください。