パフォーマンス

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

予想パフォーマンス

Filestore の各サービス階層は、さまざまなレベルのパフォーマンスを実現します。インスタンスのパフォーマンスは、予想される数値とは異なる場合があります。これには、キャッシュの使用、クライアント VM のマシンタイプ、テスト対象のワークロードなどのさまざまな要因があります。

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

パフォーマンス 容量(TiB 読み取り / 書き込み IOPS 読み取り / 書き込みスループット(MiB/秒)
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 に倍増します。

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

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

パフォーマンスのテスト

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

次のステップ