パフォーマンス

このページでは、Filestore の予想される平均パフォーマンスと推奨パフォーマンスの設定について説明します。 また、Filestore インスタンスのパフォーマンスをテストする方法についても説明します。

予想パフォーマンス

Filestore の各サービス階層は、さまざまなレベルのパフォーマンスを実現します。基本階層では、10 TB のインスタンス容量を超える一貫したパフォーマンスを実現します。高スケール階層インスタンスでは、容量がスケールアップまたはスケールダウンされるにつれて、パフォーマンスが直線的に増減します。

クライアントまたはサーバーでのキャッシュの使用、クライアント VM インスタンスで使用されている Compute Engine のマシンタイプ、テスト対象のワークロードなど、さまざまな要因により、所定のインスタンスのパフォーマンスはレポートされた数値とは異なる場合があります。

次の表は、サービス階層と構成された容量に基づく Filestore インスタンスの予想されるパフォーマンスを示しています。

パフォーマンス 容量(TB 読み取り / 書き込み IOPS 読み取り / 書き込みのスループット(MB/秒)
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 60 90,000/30,000 3,000/660
HIGH_SCALE_SSD 320 480,000/160,000 16,000/3,520

高スケール SSD 階層のパフォーマンスのスケーリングとクライアントごとのパフォーマンス

高スケール階層のインスタンスのパフォーマンスは、10 TB ステップで割り当てられた容量に比例して増減します。次の表に、10 TB の容量ごとに得られたパフォーマンスを示します。

仕様 最大持続 IOPS1 最大持続スループット2(MB/秒)
10TB あたりの読み取り 15,000 500
10TB あたりの書き込み 5,000 110

これらのパフォーマンス値は、インスタンスごとのクライアントごとのパフォーマンス上限にも対応します。たとえば、容量が 60 TB のハイスケール階層インスタンスの合計持続最大読み取り / 書き込みスループットは 3,000 / 660 MB/秒ですが、クライアントあたりの最大スループットは 500 / 110 MB/秒です。基本階層のインスタンスには、クライアントごとのパフォーマンス上限はありません。

推奨されるクライアント マシンタイプ

クライアント VM インスタンスに対して、n1-standard-8 以上の Compute Engine マシンタイプを使用することをおすすめします。これにより、クライアントはキャッシュが頻繁に行われるワークロードに対しておよそ 16 Gbps の読み取り帯域幅を確保できます。

Linux クライアントのマウント オプション

デフォルトの NFS マウント オプションを使用することをおすすめします。特に、hard マウントと async を使用し、rsizewsize のオプションを 1 MB に設定して、Linux クライアント VM インスタンスで最適なパフォーマンスを得られるようにします。NFS マウント オプションの詳細については、nfs をご覧ください。

クリックして展開 - デフォルトの NFS mount オプション

デフォルト オプション 説明
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 オプションを使用すると、パフォーマンスが大幅に低下します。

パフォーマンスのテスト

Linux を使用している場合は、fio ツールを使用して、基本階層インスタンスの読み取り / 書き込みスループットと IOPS のベンチマークを実施できます。 このセクションの例では、実行する必要が生じる可能性のある一般的なベンチマークを示しています。最大のパフォーマンスを実現するには、複数のクライアント VM インスタンスから fio を実行することが必要な場合があります。この方法でパフォーマンスのベンチマークを実施すると、高スケール階層のインスタンスでは正確な結果が得られません。

次の例は、最大書き込みスループットのベンチマークを実施します。

fio --ioengine=sync --direct=0 \
--fsync_on_close=1 --randrepeat=0 --nrfiles=1  --name=seqwrite --rw=write \
--bs=1m --size=20G --end_fsync=1 --fallocate=none  --overwrite=0 --numjobs=1 \
--directory=/mnt/gcfs --loops=10

次の例は、最大書き込み IOPS のベンチマークを実施します。

fio --ioengine=sync --direct=0 \
--fsync_on_close=1 --randrepeat=0 --nrfiles=1  --name=randwrite --rw=randwrite \
--bs=4K --size=1G --end_fsync=1 --fallocate=none  --overwrite=0 --numjobs=80 \
--sync=1 --directory=/mnt/standard --loops=10

次の例は、最大読み取りスループットのベンチマークを実施します。

fio --ioengine=sync --direct=0 \
--fsync_on_close=1 --randrepeat=0 --nrfiles=1  --name=seqread --rw=read \
--bs=1m --size=240G --end_fsync=1 --fallocate=none  --overwrite=0 --numjobs=1 \
--directory=/mnt/ssd --invalidate=1 --loops=10

次の例は、最大読み取り IOPS のベンチマークを実施します。

fio --ioengine=sync --direct=0 \
--fsync_on_close=1 --randrepeat=0 --nrfiles=1  --name=randread --rw=randread \
--bs=4K --size=1G --end_fsync=1 --fallocate=none  --overwrite=0 --numjobs=20 \
--sync=1 --invalidate=1 --directory=/mnt/standard  --loops=10

  1. 数値は、4K の読み取り/書き込み IO に基づいて測定されます。 

  2. 数値は 1M 読み取り / 書き込み IO に基づいて測定されます。