Scalable Networking Pack (SNP) を無効化する方法

このサイトを検索 | Search this site
Receive Side Scaling (RSS)有効
TCP Chimney Offload値なし
Network Direct Memory Access
(NetDMA)
値なし

当方のPCは、イベントログにDNSエラー(Event ID 1014)が記録されることがあるので原因を調べていたらSNPに辿りつきました。

SNPはWindows Server 2003 Service Pack 1以降のOSに実装されたTCPに関するネットワーク処理を向上させるための技術です。

冒頭の表に記載した3つの技術で構成されています。

そして、
次の3つがSNPに対応している時に効力を発揮します。
  • Windows OS
  • NIC(ネットワークインターフェースカード)
  • NICのミニポートドライバー

SNPを無効化

私調べでは、

SNPがネットワークの不安定要素になっていることがわかりました。

TechNetの記事を読むと、SNPは日常的に数Gbpsの通信が行われる大規模ファイルサーバーなどのコンピューターを対象としているそうです。(TechNetの記事はあとがきをお読みください)

従って、当方の貧弱なノートPCにはSNPはオーバースペックだと判断したので無効化しました。

この記事は次の情報を共有させていただきます。
  • Windows 10 v1909のSNP既定値
  • SNPの状態を確認するコマンド
  • RSS, Chimney, NetDMAの状態を変更するコマンド


Windows 10 v1909の既定値

TechNetの記事によると、SNPは3つの技術で構成されています。
  • Receive Side Scaling (RSS)
  • TCP Chimney Offload
  • Network Direct Memory Access (NetDMA)

当方のWindows 10 v1909では [RSS: enabled] のみ表示されました。

SNPの状態を確認するコマンド

管理者特権で起動したコマンドプロンプトから次のコマンドを実行します。

>netsh int tcp show global

c:\_
管理者:コマンド プロンプトー □ × 
C:\WINDOWS\system32>netsh int tcp show global
アクティブ状態を照会しています...

TCP グローバル パラメーター
----------------------------------------------
Receive-Side Scaling 状態 : enabled 受信ウィンドウ自動チューニング レベル: normal アドオン輻輳制御プロバイダー : default ECN 機能 : disabled RFC 1323 タイムスタンプ : disabled 初期 RTO : 1000 Receive Segment Coalescing 状態 : enabled 非 Sack の Rtt 回復性 : disabled 最大 SYN 再送信数 : 4 Fast Open : enabled Fast Open フォールバック : enabled HyStart : enabled ペーシング プロファイル : off

RSS, Chimney, NetDMAの状態を変更するコマンド

RSS, Chimney, NetDMAの状態を変更するコマンドを記載します。

実行後はPCを再起動しましょう。

rss
c:\_
管理者:コマンド プロンプトー □ × 
既定値(有効)
C:\>netsh int tcp set global rss=default

有効
C:\>netsh int tcp set global rss=enabled

無効
C:\>netsh int tcp set global rss=disabled

chimney
c:\_
管理者:コマンド プロンプトー □ × 
既定値(有効)
C:\>netsh int tcp set global chimney=default

有効
C:\>netsh int tcp set global chimney=enabled

無効
C:\>netsh int tcp set global chimney=disabled

netdma
c:\_
管理者:コマンド プロンプトー □ × 
既定値(有効)
C:\>netsh int tcp set global netdma=default

有効
C:\>netsh int tcp set global netdma=enabled

無効
C:\>netsh int tcp set global netdma=disabled


各種設定の初期化
c:\_
管理者:コマンド プロンプトー □ × 
C:\WINDOWS\system32>netsh int tcp set global default

レジストリの場所

TechNetは、次の場所でSNPの状態を確認できるとありましたが、私の環境は3つとも存在しなかったので名前が変わったのかもしれません。

\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

[値の名前]
  • EnableRSS
  • EnableTCPChimney
  • EnableTCPA

まとめ

ChimneyはWindows10 April 2018 Update, v1803から利用出来なくなりました。
NetDMAは、Windows8.1, Windows10ではサポート対象外です。

Windows 10ユーザーでネット接続に問題を抱えている時は、SNPが問題を引き起こしている可能性があります。

SNPが有効になっている場合、ネットゲームなどのネットワーク通信と同時にマルチスレッド処理を行うアプリケーションが動作しているとネットワークが不安定になる可能性があります。

TechNetの記事

TechNet

SNP とは TCP に関するネットワーク処理を、ネットワーク インターフェース カード (NIC) および NIC のミニポート ドライバーを利用して最適化するためのテクノロジー及びその実装の総称です。

従いまして、SNP を利用するためには、SNP に対応した NIC および NIC ドライバーが必要となります。 なお、以下、本文書では、特に区別が必要な場合を除いて、NIC と NIC のミニポート ドライバーを合わせて、NIC と呼びます。

SNP の目的は、大規模ファイル サーバーなど、日常的に数 Gbps 程度の通信が行われるコンピューター上で、TCP ネットワークの処理を効率的に行い、ホスト コンピューター側の CPU 負荷を軽減することを目的としています。
social.technet.microsoft.com
検証:Windows 10 Pro November 2019 Update, v1909.18363.535
SC2
Windowsランキング 将棋ランキング スマホ・携帯ランキング にほんブログ村 IT技術ブログ ライフハックへ にほんブログ村 その他趣味ブログ 将棋へ

このサイトを検索 | Search this site