このページでは、NetApp Volumes エクスポートをマウントする Linux NFS クライアントをチューニングする方法について説明します。多くのワークロードでは、チューニングは必要ありません。スループットの向上、IOPS の増加、ボリュームのメタデータ負荷の軽減、特定のキャッシュ保存動作が必要な場合を除き、Google Cloud コンソールのマウント コマンドを使用します。
接続手順、エクスポート ポリシーの設定、マウント コマンドの詳細については、NFS クライアントを接続するをご覧ください。
クライアントを構成する
次の順序で Linux NFS 設定を構成します。
カーネルの同時実行: ファイル システムをマウントする前に、NFS リクエスト スロットの数(NFSv3 のスロット テーブル エントリまたは NFSv4.1 のセッション スロット)を設定します。設定を変更する場合は、ファイル システムを再マウントする必要があります。詳細については、Linux NFS の同時実行をご覧ください。
マウント オプション: マウント時にプロトコル バージョン、I/O サイズ、TCP 接続数、ロック、キャッシュ関連のオプションを選択します。詳細については、Linux NFS マウント オプションをご覧ください。
先読み: ボリュームのマウント後に、マウント ポイントごとにシーケンシャル読み取りプリフェッチを調整します。詳細については、Linux NFS の先読みをご覧ください。
次の表に、これらの構成手順の概要を示します。
| ステップ | 日時 | 制御対象 | 構成場所 | ガイド |
|---|---|---|---|---|
| 1 | 初回マウント前、または再マウント前 | TCP 接続あたりの未処理の RPC オペレーション、セッションあたりの NFSv4.1 コマンド | /etc/sysctl.conf、/etc/modprobe.d/ |
Linux NFS の同時実行 |
| 2 | マウント時 | プロトコル、I/O 転送サイズ、接続数、ロック、属性キャッシュ | mount -o、/etc/fstab |
Linux NFS マウント オプション |
| 3 | マウント後 | 順次読み取りプリフェッチ | /sys/class/bdi/.../read_ahead_kb、udev ルール |
Linux NFS 先読み |
設定の連携方法
Linux カーネルは接続ごとの同時実行性を定義します(上の表のステップ 1)。nconnect マウント オプション(上の表のステップ 2)を使用すると、1 つのクライアントから同じボリューム IP アドレスに複数の TCP 接続を開くことができます。
1 つのクライアントの概算の同時実行数は次のように計算されます。
(slots per connection)×(nconnect value)
NetApp Volumes NFS エンドポイントへの各 TCP 接続は、NFSv3 の接続ごとに最大 128 個の未処理オペレーションをサポートします。NFSv4.1 はセッション レベルの制限もネゴシエートします。単一の TCP 接続で、有効な同時実行数をセッションの最大値未満に制限できます。詳細については、Linux NFS の同時実行をご覧ください。
複数のクライアントが同じボリューム IP アドレスをマウントする場合は、クライアント フリート全体の未処理オペレーションの合計が推奨される上限内に収まるように、クライアントあたりのスロット上限を小さくします。
先読みはマウント ポイントごとに構成します(前述の表のステップ 3)。これは、rsize マウント オプションと Linux ディストリビューションのデフォルトによって異なります。一部のディストリビューションでは、rsize に関係なく 128 KiB の固定リード アヘッドが使用されます。このため、調整するまでシーケンシャル読み取りのパフォーマンスが低下する可能性があります。
マウント オプションとカーネル設定は、エクスポート ポリシー、Kerberos 構成、ファイアウォール要件、ボリューム サービスレベルのスループットと IOPS の上限を変更しません。
ワークロードの開始点
次の表に、開始点を示します。アプリケーション、Linux ディストリビューション、ネットワーク パスを使用して設定を検証します。
| ワークロード | カーネルの同時実行 | マウント オプション | 先読み |
|---|---|---|---|
| 汎用 | オペレーティング システムのデフォルト | Google Cloud コンソールのマウント手順を使用する | オペレーティング システムのデフォルト |
| 単一 VM、高スループット/高 IOPS |
|
|
ワークロードがシーケンシャル読み取りバウンドの場合はチューニングする |
| 多くのクライアント(EDA/HPC/レンダーファーム) |
|
|
大規模な静的データセットでは高くなることが多い |
| Kerberos NFSv4.1 |
|
|
シーケンシャル読み取りに必要な場合 |
| アドバイザリ ロックのない NFSv3 | オペレーティング システムのデフォルト |
|
必要に応じて |
チューニングの測定と検証
クライアント設定を更新したら、次の手順を行います。
クライアントで
nfsiostat、mountstats、nfsstatを実行します。詳細については、パフォーマンスをモニタリングするをご覧ください。結果をパフォーマンス ベンチマークと比較します。これらのベンチマークでは、Red Hat Enterprise Linux 9 の一部の NFSv3 テストに
nconnect=16、rsize=65536、wsize=65536が使用されました。
クライアントを調整すると、仮想マシン(VM)のボリュームへのネットワーク パスの使用効率が向上します。ただし、ボリューム容量、サービスレベル、ストレージ プールの上限、Compute Engine VM のサイズによって結果が制限される可能性があります。
次のステップ
同時実行を調整する: Linux NFS の同時実行。
マウント オプションを調整する: Linux NFS マウント オプション。
シーケンシャル読み取りを調整する: Linux NFS の先読み。