VPN 越しのファイルアクセスが遅いと、マルチチャネルの設定を解決策にしたくなりますが、その設定に働きかけるものが何もないことがよくあります。RSS のない仮想アダプターが 一つだけでは、チェックボックスがどう書かれていようと、トラフィックを複数のチャネルに分散できません。重要なのは SMB が両端で見る能力であり、ノート PC の物理 NIC の仕様ではありません。以下の手順は、アクティブなセッションから始めてアダプターの構成にさかのぼります。

NIC の仕様ではなくセッションから始める

まず、そのセッションがそもそもマルチチャネルを使えるかを確認します。この機能は SMB3 に属するため、アプライアンスや旧式サーバーとネゴシエートした古いダイアレクトでは、アダプターの話をする前に除外されます。次に、調べているノードとは別のノードに解決される名前では説得力はあるものの無関係な結果になるため、クライアントが実際にどのサーバーに接続したかを確認します。

Get-SmbConnection
Get-SmbClientConfiguration | Select-Object EnableMultichannel
Get-SmbClientNetworkInterface

最初のコマンドはダイアレクト、サーバー、共有を一行で示します。二番目はクライアントで機能が有効かを示し、三番目は SMB が認識しているインターフェイスを報告された能力とともに一覧します。RSS も RDMA も報告しない仮想アダプターは、構成がどこまで行けるかを教えてくれます。

ダイアレクトが SMB3 でない場合は、いったん止めてその問題を先に解決してください。そうしないと、以降のコマンドはすべて有効にならない機能を説明することになります。

クライアントのインターフェイスを正直に読む

SMB は既定ルートをどのアダプターが運ぶかを気にせず、使えるインターフェイスを列挙してそれぞれを評価します。Wi-Fi、Ethernet、VPN アダプターを備えたノート PC は三つのインターフェイスを示すことがあり、そのうち会話しているサーバーに到達できるのは一つだけかもしれません。ほかは候補であって、チャネルではありません。

リンク速度の列ではなく、RSS と RDMA の列を読みます。仮想アダプターは RSS 能力なしで高い公称速度を報告することが多く、公称速度はインターネットを通る経路ではなく仮想リンクを表します。どちらの数値も、セッションがいくつのチャネルを使うかは教えてくれません。

アダプターが RSS 能力を示さない場合、サポートされる修正は VPN ベンダーのドライバー側にあり、物理 NIC の詳細設定側にはありません。ハードウェアアダプターで RSS のチェックを入れても、仮想アダプターが SMB に見せる内容は変わりません。

選択されたチャネルと検出された候補を分ける

接続一覧は最も誤読されやすい部分です。未選択の候補を含めると、出力には SMB が検討したすべてが表示され、それはデータを運ぶチャネルの集合ではありません。関心のある特定のクライアントとサーバーのインターフェイスの組について、選択フラグとチャネル数を読みます。

Get-SmbMultichannelConnection -ServerName files.lab.example -IncludeNotSelected
Get-SmbMultichannelConnection -ServerName files.lab.example | Format-List *

サーバー名は自分のものに置き換えてください。二番目の形式は、インターフェイスのインデックスと現在のチャネル数を含む選択された接続のプロパティを出力し、重要なのはこの数値です。一つのアダプターで検出された複数のアドレスは、依然として一つのアダプターです。

検出されたアドレスは、VPN ポリシーにより、トンネルが運ばないローカルサブネットのアドレスや、サーバーが別のネットワークでのみ提供するアドレスであるために使えないこともあります。SMB が候補として挙げるのは、インターフェイスが存在するからであり、経路が機能するからではありません。

VPN アダプターが構成に与える影響

区別する価値がある構成は三つあり、複数のチャネルを生み出せるのはそのうち二つだけです。RSS のないアダプター一つでは一つのチャネルです。RSS 対応のアダプター一つは接続をコア間に分散できます。複数の使用可能なアダプターは RSS なしでも複数のチャネルを生み出せ、RSS を必須と決めつける人が忘れがちなのがこの構成です。

Layout SMB seesChannels possible
One adapter, no RSSOne
One adapter with RSSSeveral, spread across cores
Two or more usable adaptersSeveral, one path per adapter
Several adapters behind one tunnelSeveral, one shared bottleneck

VPN 越しに重要なのは最後の行です。すべてが同じ暗号化トンネルに入るチャネルは、トンネルのスループット、ゲートウェイの CPU、WAN リンクを共有します。そこにチャネルを足しても、容量を増やさずに仕事を再配分するだけで、測定がそれを示します。

比較している間は、無効にすると測定している対象が変わってしまうため、署名と暗号化を有効にしておいてください。セキュリティ設定を無効にすることに依存する性能結果は、展開できる結果ではありません。

実際に遅いワークロードを測る

何かを変える前に、大きな逐次コピー、一つのディレクトリ内の多数の小さなファイル、ハンドルを開閉するアプリケーションのいずれかとしてワークロードを名指ししてください。本当に独立した経路がある場合、マルチチャネルは最初のケースには役立ちますが、三番目のケースにはそこでコストが帯域ではなく依存した往復であるため、ほとんど役立ちません。

現在の構成で基準値を取り、一つだけ変えて、同じファイル群と同じ時間帯でもう一度取ります。選ばれた経路の数を数値の横に記録し、後から読む人が、変更が構成を変えたのか負荷だけを変えたのか判断できるようにします。

チャネルが変わっていないなら、性能の問いはトンネルの暗号化オーバーヘッド、経路の遅延、あるいはサーバー自身のディスクと CPU という別のところにあります。すでに十分なアダプターを持つノート PC にさらに一つ足す前に、これらを測る価値があります。

関連記事