それでもまだ遅いネットワーク解消手段~SNPを疑え~

Windows 7 / 8 / 8.1からは、SNP(Scalable Networking Pack)機能がデフォルトで有効になっている。この機能を有効にすることで、ネットワーク通信を行う場合、通常、CPUで処理させるところを、LANチップ(NIC)に処理させることで、負荷分散を行い、ネットワーク通信を高速化させようという技術だ。このSNPを無効にすることで、通信遅延が回復する場合がある。

しかしながら、このSNPが有効になっているため、通信が遅いということもありえる。SNPの設定状態を確認するには、「netsh int tcp show global」コマンドで確認ができる。

このうち、上部3項目、Receive Side Scaling(RSS)、TCP Chimney Offload、Network Direct Memory Access(NetDMA)が該当する。無効にするには、「disabled」にするわけだ。コマンド方法は次の通りだ。コマンドを打つのが面倒臭ければ、下記の内容を「○○.bat」にして、走らせる方法も1つの方法だ。

これら3つの主な働きは以下の通り。
・Receive Side Scaling・・・マルチコアCPUであっても、無効の場合はシングルコアで処理させられる
・TCP Chimery Offload・・・有効にすることでCPUで処理を行うところをNIC側で行い負荷分散を行う
・Network Direct Memory Access・・・CPU処理で行うところをチップ側全体で補うことで負荷分散を行う

レジストリで修正したい場合は次の箇所を修正すればよい。修正後は、再起動しよう。

値の場所: HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters
値の名前: EnableRSS、EnableTCPChimney、EnableTCPA 3箇所
値の種類: REG_DWORD
設定値: 0x1 (有効、16進数の1) 0x0 (無効、16進数の0)

先日のネットワーク管理コマンドで異常が見当たらない場合は、このSNPの変更でネットワーク最適かも1つの方法だ。

(参考)予期せぬ挙動が!? 新機能 Scalable Networking Pack をご存知ですか?(Microsoft公式blog)
(参考)[Windows 7編]ネットワーク設定を標準で使ってはいけない(ITPro)