パフォーマンスに関する注意事項

このページでは、最高のパフォーマンスを実現するように Google Cloud Managed Lustre 環境を構成するためのガイダンスを提供します。

パフォーマンス仕様

次のパフォーマンス値は、おおよその最大値です。

IOPS

最大 IOPS は、プロビジョニングされたインスタンス容量の TiB あたりで線形にスケーリングされます。

スループット ティア 読み取り IOPS(TiB あたり) 書き込み IOPS(TiB あたり)
125 MBps per TiB 725 700
250 MBps per TiB 1,450 1,400
500 MBps per TiB 2,900 2,800
1000 MBps per TiB 5,800 5,600

メタデータ オペレーション

プロビジョニングされたスループット 72 GBps ごとに、メタデータ オペレーションの最大数が段階的に増加します。

ファイル統計情報 ファイル作成 ファイルの削除
72 GBps あたり 410,000/秒 115,000/秒 95,000/秒

容量増加後のパフォーマンス

既存のインスタンスのストレージ容量を増やすと、最大スループットと IOPS が増加し、メタデータ パフォーマンスも向上する可能性があります。

新しいデータが書き込まれ、追加ストレージに再分配されるにつれて、読み取りスループットのパフォーマンスが徐々に向上します。書き込みスループットのパフォーマンスがすぐに向上します。

VPC ネットワークの最大伝送単位(MTU)

VPC ネットワークを作成するときに、mtu(最大伝送単位: このネットワーク上で送信可能な最大の IP パケットサイズ)の値を、デフォルトの 1, 460 バイトから、許可されている最大値の 8, 896 バイトに設定すると、性能が最大で約 10 %向上します。

ネットワークの現在の MTU 値は、次のコマンドで確認できます。

gcloud compute networks describe NETWORK_NAME --format="value(mtu)"

ネットワークの MTU 値は、ネットワークの作成後に更新できますが、重要な考慮事項があります。詳細については、ネットワークの MTU を変更するをご覧ください。

Compute Engine のマシンタイプ

ネットワーク スループットは、選択したマシンタイプの影響を受ける可能性があります。一般に、最適なスループットを得るには:

  • vCPU の数を増やします。インスタンスあたりの最大下り(外向き)帯域幅は、通常は vCPU あたり 2 Gbps で、マシンタイプの上限までです。
  • より高い上り(内向き)と下り(外向き)の制限をサポートするマシンシリーズを選択します。たとえば、Tier_1 ネットワーキング対応の C2 インスタンスでは、最大 100 Gbps の下り(外向き)帯域幅がサポートされます。Tier_1 ネットワーキング対応の C3 インスタンスでは、最大 200 Gbps がサポートされます。
  • より大きいマシンタイプを使用して、VM あたりの Tier_1 ネットワーキング パフォーマンスを有効にします。
  • Google Virtual NIC(gVNIC)を使用します。gVNIC は、第 3 世代以降のマシンタイプでの唯一のオプションです。Tier_1 ネットワーキングを使用する場合は、gVNIC が必要です。

詳細については、ネットワーク帯域幅をご覧ください。

マルチ NIC 構成

Lustre の組み込みマルチレール機能を使用すると、クライアントは複数のネットワーク インターフェース カード(マルチ NIC)にネットワーク トラフィックをストライピングできます。これにより、帯域幅が集約され、大容量の Managed Lustre インスタンスが飽和状態になります。

マルチ NIC を構成するには、次の操作を行う必要があります。

  • 複数の物理 NIC を備えたマシンタイプを選択します。
  • NIC ごとにサブネットを作成し、各 NIC をそのサブネットに割り当てます。
  • Compute Engine または GKE から接続する場合は、マルチ NIC の手順に沿って操作します。

トラフィック バランシングを確認する

マルチ NIC を構成したら、データが正しく分散されていることを確認します。

Compute Engine

Managed Lustre バックエンドにトラフィックを生成しながら、nload を使用して構成されたネットワーク インターフェース(eth0eth1 など)をモニタリングすることで、VM でデータ バランシングを直接確認します。

nload -m eth0 eth1

マルチ NIC 構成が成功すると、構成されたすべてのインターフェースで送信ビットレートがほぼ同等になります。

GKE

ワークロードから複数の NIC にネットワーク トラフィックが分散されていることを確認するには、ワークロードがスケジュールされているノードに一時的なネットワーク デバッガ Pod をデプロイします。

  1. ワークロードがスケジュールされているノードを特定します。

    kubectl get pod POD_NAME -o wide
    

    POD_NAME は、Pod の名前に置き換えます。コマンド出力で、NODE 列の名前をメモします。

  2. そのノードでネットワーク デバッガを起動します。

    kubectl run multi-nic-debug --rm -i --tty --image=nicolaka/netshoot \
      --overrides='{"spec": {"hostNetwork": true, "nodeSelector": {"kubernetes.io/hostname": "NODE_NAME"}, "tolerations": [{"key": "nvidia.com/gpu", "operator": "Exists", "effect": "NoSchedule"}]}}' \
      -- /bin/bash -c "apk update && apk add nload && nload -m eth0 eth1"
    

    NODE_NAME は、前の手順のノード名に置き換えます。

  3. 出力で、eth0eth1 の [Outgoing] 列のビットレートを分析します。構成が成功すると、ビットレートはほぼ同等になります。出力は次のようになります。

    Device eth0 [10.1.0.50] (1/2):
    ==========================================================================
    Incoming:                               Outgoing:
    Curr: 1.63 MBit/s                       Curr: 1.46 GBit/s
    Avg: 1.60 MBit/s                        Avg: 1.44 GBit/s
    Min: 1.40 MBit/s                        Min: 1.25 GBit/s
    Max: 1.64 MBit/s                        Max: 1.47 GBit/s
    Ttl: 590.94 GByte                       Ttl: 405.19 GByte
    
    Device eth1 [172.16.15.5] (2/2):
    ==========================================================================
    Incoming:                               Outgoing:
    Curr: 1.64 MBit/s                       Curr: 1.47 GBit/s
    Avg: 1.62 MBit/s                        Avg: 1.44 GBit/s
    Min: 1.42 MBit/s                        Min: 1.26 GBit/s
    Max: 1.66 MBit/s                        Max: 1.47 GBit/s
    Ttl: 587.68 GByte                       Ttl: 406.36 GByte
    
  4. Ctrl+C キーを押してデバッガを終了します。

単一クライアントのパフォーマンスを測定する

単一の Compute Engine クライアントから読み取りと書き込みのパフォーマンスをテストするには、fioFlexible I/O テスター)コマンドライン ツールを使用します。

  1. fio をインストールします。

    Rocky 8

    sudo dnf install fio -y
    

    Ubuntu 20.04 と 22.04

    sudo apt update
    sudo install fio
    
  2. 次のコマンドを実行します。

    fio --ioengine=libaio --filesize=32G --ramp_time=2s \
    --runtime=5m --numjobs=16 --direct=1 --verify=0 --randrepeat=0 \
    --group_reporting --directory=/lustre --buffer_compress_percentage=50 \
    --name=read --blocksize=1m --iodepth=64 --readwrite=read
    

テストの完了には、約 5 分かかります。完了すると、結果が表示されます。構成によっては、VM の最大ネットワーク速度までのスループットと、TiB あたり数千の IOPS が期待できます。