Windows版のネットワーク最適化 | シロコメのブログ

シロコメのブログ

パソコン関係、ピグ関係をメインに書いています。

Windows Server 2003 R2以降のOSは、SNPと呼ばれるネットワークを最適化する機能を
持っています。
このSNPは、PC上のプロセッサが行っているネットワーク処理を、PC内部のNICに担当
させるなどしてプロセッサの負荷を下げる機能です。
ハードウェアの対応が必要な上に効果があるのが10Gbps以上かららしいので、1Gbpsまで
しか搭載していないパソコンでは、効果はなさそうです。
さらに、このSNPが有効であると、ネットワーク処理が不安定になったり、ネットワーク
処理とは関係ないアプリケーションの処理に影響を与えたりする可能性があるそうです。
なので、SNP関係の設定を無効にします。

下記の3つをコマンドで無効化に設定することができます。

TCP Chimney Offload の無効化
Receive-Side Scaling(RSS)の無効化
Network Direct Memory Access(NetDMA)の無効化

また、WindowsVista以降では、MTU、RWINは、自動的に最適化されるようになっています。

http://forums.speedguide.net/cgi-bin/optd/optd.cgi

この自動的に最適化するレベルをコマンドで変更することができます。

受信ウィンドウ自動チューニングレベル「autotuninglevel」の設定値は、以下の通りです。

・disabled     : 自動最適化を無効にします
・highlyrestricted : 既定値より受信ウィンドウを保守的に拡大します
・restricted    : 既定値より受信ウィンドウを制限的に拡大します
・normal      : 既定値に戻します
・experimental   : 実験的なシチュエーションで使用します

家の環境では、highlyrestrictedがすべてPCで転送が速かったです。
使用しているOS、ネット環境によりますが、一般的にrestrictedかhighlyrestrictedに
すると効果あるといわれています。
どの設定がいいか下記のサイトで測定して比較し、もっともよかったものを選んでください。

http://netspeed.studio-radish.com/index.html
http://speed.rbbtoday.com/


コマンドでの設定方法について説明します。

C:\Windows\system32\cmd.exeを選んで、右クリックして「管理者として実行」をクリックして、
コマンドプロンプトで起動させます。
注)OSが64bit版の場合、syswow64にあるcmd.exeを使うと設定ができないので、system32
にあるcmd.exeを使ってください。

$WhiteCometのブログ



1.netsh int tcp show globalで現在の設定を確認します。

2.SNP関係を無効化するので、下記の3つを設定します。

  netsh int tcp set global chimney=disabled
  netsh int tcp set global rss=disabled
  netsh int tcp set global netdma=disabled

  設定後、「netsh int tcp show global」で設定が変更になったかを確認します。

3.受信ウィンドウ自動チューニングレベルの設定です。

  netsh interface tcp set global autotuninglevel=highlyrestricted

  設定後、「netsh int tcp show global」で設定が変更になったかを確認します。

4.アドオン混雑制御プロバイダに設定

  netsh interface tcp set global congestionprovider=ctcp

  設定後、「netsh int tcp show global」で設定が変更になったかを確認します。


#デフォルト
$WhiteCometのブログ

#最適化後
$WhiteCometのブログ