ソフマップ・ドットコム

Windows Server での仮想環境( Windows Server 2012 と SCVMM )での検証や勉強した事を書き綴る技術色の強いブログです。

Windows 7 のネットワークが遅い時に試す 3 つの方法


Windows 7 のネットワークが遅くなる時の対処法として過去に投稿した以下の 2 記事ですが有難い事に、それなりに需要があり、アクセスを日々多くいただいております。

そこで、2 記事に記載している情報をここで、まとめて解説をさせていただきます。

ネットワークが遅くなる

SNP の無効化

Windows 7 でネットワークが極端に遅くなる理由の 1 つとして、SNP( Scalable Networking Pack )が原因と言われています。
SNP とは、通常は PC 上のプロセッサが行っているネットワーク処理を、PC 内部 の NIC( ネットワークインタフェースカード )に担当させるなどしてプロセッサの負荷を下げる機能です。

SNP は 3 つから構成される機能で、以下の 1 つでも有効化されている場合の事を指します。

  • TCP Chimney Offload
  • Receive Side Scaling( RSS )
  • Network Direct Memory Access( NetDMA )

以上の 3 つの機能の詳細はコチラをご覧ください。

しかし、NIC が SNP に対応していない限り、全く意味のない機能ですので、この SNP を無効にする事で、ネットワークの改善が図れる可能性があります。

まず、コマンドプロントを管理者権限で起動して以下のコマンドを実行し、SNP の状態を確認します。

netsh int tcp show global

赤線で囲ってある 3 つの部分が SNP の状態を示しています。多くの場合、以下の様な状態になっていると思います。

  • Receive Side Scaling が enabled
  • Chimney オフロード状態が automatic
  • NetDMA 状態が enabled

この上記の状態では SNP の機能が有効になっているのが確認できます。

SNP の状態

TCP Chimney Offload を無効化するため、以下のコマンドを実行します。

netsh int tcp set global chimney=disabled

実行後、OK と表示されれば、TCP Chimney Offload が無効化されたました。

TCP Chimney Offload の無効化

次に、Receive-Side Scaling( RSS )を無効化するため、以下のコマンドを実行します。

netsh int tcp set global rss=disabled

実行後、OK と表示されれば、Receive-Side Scaling( RSS )が無効化されました。

Receive-Side Scaling( RSS )の無効化

最後に Network Direct Memory Access( NetDMA )の無効化をするため、以下のコマンドを実行します。

netsh int tcp set global netdma=disabled

実行後、OK と表示されれば、Network Direct Memory Access( NetDMA )が無効化されました。

Network Direct Memory Access( NetDMA )の無効化

これで、SNP の機能を全て無効化しましたので、再度、一番最初に使用したコマンドを使用して、SNP の状態を確認します。

netsh int tcp show global

赤線で囲った箇所が全て disabled と表示されていれば SNP の無効化は完了です。

SNP の状態を確認

NIC のオフロードを手動で無効化する

次に、ネットワークの速度が遅くなった時の対処法で、NIC の設定にある、オフロードを無効にするといった方法があります。

このオフロードですが、Hyper-V との相性が非常に悪いらしく、Hyper-V で構築した仮想マシンとのレスポンスが著しく悪くなる事があります。
通信フォーマンスを向上させるためのオフロードが仮想環境ではボトルネックとなるとは、何とも微妙な結果・・・。

NIC のオフロードを無効化するには、ネットワークと共有センターを開き、アダプタ設定の変更をクリックしてローカルエリア接続のプロパティを開きます。プロパティを開くとネットワークタブにある、構成ボタンをクリックします。

構成ボタンをクリック

ネットワークアダプタのプロパティが開いたら、詳細設定のタブを選択し、プロパティにある、オフロードと名前の付いた項目を全て無効化します。
※ 環境や NIC の種類によっては項目名が異なります。私の環境では以下の項目を全てオフロードを無効化します。

  • IPSec オフロード
  • IPv4 Checksum Offload
  • Large Send Offload Version 2 ( IPv4 )
  • Large Send Offload Version 2 ( IPv6 )
  • TCP Checksum Offload( IPv4 )
  • TCP Checksum Offload( IPv6 )
  • UDP Checksum Offload( IPv4 )
  • UDP Checksum Offload( IPv6 )

オフロードを無効化

レジストリを変更し、OS 全体でオフロードを無効化する

最後はレジストリの設定を変更し OS そのものから、オフロードの機能を無効化させる方法です。
ファイル名を指定して実行から regedit と入力し、レジストリエディタを起動します。
エディタが起動したら、以下のレジストリキーを展開します。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

上記のキーを展開後、DWORD 値を作成します。

レジストリキーを展開

作成した DWORD 値の名前を DisableTaskOffload に変更します。

DisableTaskOffload

作成した DisableTaskOffload をダブルクリックして、値のデータを 1 を入力します。

値のデータを 1 と入力

レジストリの編集が完了したら、システムを再起動して変更を反映させれば完了です。


, , ,


Facebook ページへの「いいね!」もお願いします。 Facebook ページで最新記事のお知らせと、外部サイトの紹介を行っています。
是非「いいね!」をしていただき、最新の情報を Facebook で受け取ってください。



Comments are currently closed.