このページでは、Filestore に関して予想される平均パフォーマンスと推奨パフォーマンスの設定について説明します。また、Filestore インスタンスのパフォーマンスをテストする方法も説明します。
予想パフォーマンス
Filestore の各サービス階層は、さまざまなレベルのパフォーマンスを実現します。キャッシュの使用、クライアント VM の数、クライアント VM のマシンタイプ、テストされたワークロードなど、さまざまな要因により、特定のインスタンスのパフォーマンスは予想される数とは異なる可能性があります。
次の表は、サービス階層と構成された容量に基づく Filestore インスタンスの予想されるパフォーマンスを示しています。
パフォーマンス | 容量(TiB ) |
読み取り / 書き込み IOPS | 読み取り / 書き込みスループット(MiB/s) |
---|---|---|---|
BASIC_HDD |
1–10 | 600/1,000 | 100/100 |
BASIC_HDD |
10–63.9 | 1,000/5,000 | 180/120 |
BASIC_SSD |
2.5–63.9 | 60,000/25,000 | 1,200/350 |
HIGH_SCALE_SSD |
10 | 92,000/26,000 | 2,600/880 |
HIGH_SCALE_SSD |
100 | 920,000/260,000 | 26,000/8,800 |
ENTERPRISE |
1 | 12,000/4,000 | 120/100 |
ENTERPRISE |
10 | 120,000/40,000 | 1,200/1,000 |
上記の表は、高スケールとエンタープライズの両方で、最大容量と最小容量で予想されるパフォーマンスを示しています。この上限と下限の間で、パフォーマンスは容量のスケーリングに応じて直線的にスケーリングします。たとえば、エンタープライズ インスタンスの容量が 1 TiB から 2 TiB に倍増すると、インスタンスの予想されるパフォーマンスは 12,000/4,000 読み取り / 書き込み IOPS から 24,000/8,000 読み取り / 書き込み IOPS に倍増します。
単一クライアントおよび少数のクライアントでは、最大の NFS パフォーマンスを達成するために、nconnect
マウント オプションで TCP 接続の数を増やす必要があります。高スケール階層の場合は最大 7
個の接続を指定し、エンタープライズ階層の場合は最大 2
個の接続を指定することをおすすめします。一般に、ファイル共有の容量が大きく、接続しているクライアント VM が少ないほど、nconnect
で追加の接続を指定することでパフォーマンスが向上します。
推奨されるクライアント マシンタイプ
16 Gbps
の下り(外向き)帯域幅を提供する Compute Engine マシンタイプ(n2-standard-8
など)を使用することをおすすめします。この下り(外向き)帯域幅により、クライアントはキャッシュが頻繁に行われるワークロードに対しておよそ 16 Gbps
の読み取り帯域幅を確保できます。詳細については、ネットワーク帯域幅をご覧ください。
Linux クライアントのマウント オプション
次の NFS マウント オプションを使用することをおすすめします。特に hard
マウントと async
を使用し、rsize
オプションと wsize
オプションを 1 MiB
に設定して、Linux クライアントの VM インスタンスでの最適なパフォーマンスを実現できます。NFS マウント オプションの詳細については、nfs をご覧ください。
デフォルト オプション | 説明 |
---|---|
hard |
NFS クライアントは、NFS リクエストを無期限に再試行します。 |
timeo=600 |
NFS クライアントは、NFS リクエストを再試行するまで 600 デシ秒(60 秒)待ちます。 |
retrans=3 |
NFS クライアントは、NFS リクエストを 3 回試行してから、さらに復旧処理を行います。 |
rsize=1048576 |
NFS クライアントは、READ リクエストごとに最大 1,048,576 バイト(1 MiB)を NFS サーバーから受け取ることができます。 |
wsize=1048576 |
NFS クライアントは、WRITE リクエストごとに最大 1,048,576 バイト(1 MiB)を NFS サーバーに送信することができます。 |
resvport |
NFS クライアントは、このマウント ポイントの NFS サーバーと通信するときに特権ソースポートを使用します。 |
async |
NFS クライアントは、特定の条件が満たされるまで、NFS サーバーへのアプリケーション書き込みの送信を遅らせます。 注意: sync オプションを使用すると、パフォーマンスが大幅に低下します。 |
単一および複数のクライアント VM のパフォーマンス
Filestore のスケーラブルなサービス階層は、単一のクライアント VM ではなく、複数のクライアント VM に対して最適化されたパフォーマンスです。
エンタープライズ階層のインスタンスと高スケール階層のインスタンスでは、フルパフォーマンスを確保するために、少なくとも 4 つのクライアント VM が必要です。これにより、基盤となる Filestore クラスタ内のすべての VM が最大限活用されます。
コンテキストを考慮して、最小のスケーラブルな Filestore クラスタには 4 つの VM があります。nconnect
マウント オプションを使用して指定されたクライアントごとの NFS 接続数に関係なく、各クライアント VM は 1 つの Filestore クラスタ VM と通信します。単一のクライアント VM を使用している場合、読み取り / 書き込みオペレーションは単一の Filestore クラスタ VM からのみ行われます。
Google Cloud リソース全体でパフォーマンスを向上させる
gsutil
を使用して Cloud Storage から Filestore インスタンスにデータをコピーするなど、複数の Google Cloud リソース間での操作が遅くなることがあります。パフォーマンスの問題を軽減するには、以下を試してください。
Cloud Storage バケット、クライアント VM、Filestore インスタンスがすべて同じリージョンにあることを確認します。
デュアルリージョンは、Cloud Storage に格納されるデータに対して最高のパフォーマンスを提供します。このオプションを使用する場合は、デュアルリージョンを構成する単一リージョンのいずれかに、他のリソースが存在することを確認してください。たとえば、Cloud Storage データが
us-central1,us-west1
にある場合、クライアント VM と Filestore インスタンスがus-central1
に存在することを確認します。比較のため、PD に接続された VM のパフォーマンスと Filestore インスタンスのパフォーマンスの比較をご覧ください。
PD に接続された VM は、Filestore インスタンスと比較してパフォーマンスが同等または低い場合に、Filestore に起因するパフォーマンスのボトルネックを示している可能性があります。Filestore 以外のリソースのベースライン パフォーマンスを向上させるには、次の手順を試してください。
Filestore インスタンスのパフォーマンスが PD に接続された VM よりも大幅に遅い場合は、オペレーションを複数の VM に分散してみてください。
これにより、Cloud Storage からの読み取りオペレーションのパフォーマンスが向上します。
エンタープライズ階層のインスタンスと高スケール階層のインスタンスでは、フルパフォーマンスを確保するために、少なくとも 4 つのクライアント VM が必要です。これにより、基盤となる Filestore クラスタ内のすべての VM が最大限活用されます。詳細については、単一クライアント VM と複数クライアント VM のパフォーマンスをご覧ください。
パフォーマンスのテスト
Linux を使用している場合は、fio ツールを使用して、基本階層インスタンスの読み取り / 書き込みスループットと IOPS のベンチマークを実施できます。 このセクションの例では、実行する必要が生じる可能性のある一般的なベンチマークを示しています。最大のパフォーマンスを実現するには、複数のクライアント VM インスタンスから fio を実行することが必要な場合があります。この方法でパフォーマンスのベンチマークを実施すると、エンタープライズ インスタンスと高スケールティアインスタンスで正確な結果が得られません。
次の例は、最大書き込みスループットのベンチマークを実施します。
fio --ioengine=libaio --filesize=32G --ramp_time=2s \ --runtime=5m --numjobs=16 --direct=1 --verify=0 --randrepeat=0 \ --group_reporting --directory=/mnt/nfs \ --name=write --blocksize=1m --iodepth=64 --readwrite=write
次の例は、最大書き込み IOPS のベンチマークを実施します。
fio --ioengine=libaio --filesize=32G --ramp_time=2s \ --runtime=5m --numjobs=16 --direct=1 --verify=0 --randrepeat=0 \ --group_reporting --directory=/mnt/nfs \ --name=randwrite --blocksize=4k --iodepth=256 --readwrite=randwrite
次の例は、最大読み取りスループットのベンチマークを実施します。
fio --ioengine=libaio --filesize=32G --ramp_time=2s \ --runtime=5m --numjobs=16 --direct=1 --verify=0 --randrepeat=0 \ --group_reporting --directory=/mnt/nfs \ --name=read --blocksize=1m --iodepth=64 --readwrite=read
次の例は、最大読み取り IOPS のベンチマークを実施します。
fio --ioengine=libaio --filesize=32G --ramp_time=2s \ --runtime=5m --numjobs=16 --direct=1 --verify=0 --randrepeat=0 \ --group_reporting --directory=/mnt/nfs \ --name=randread --blocksize=4k --iodepth=256 --readwrite=randread
次のステップ
- Filestore のパフォーマンス関連の問題をトラブルシューティングします。