読者です 読者をやめる 読者になる 読者になる

Windows7のネットワークが異様に遅い問題



この記事は2010年に書かれたものです。気休め程度にいじってみてください。
あと、I/O書き込みのたびにCPUが張り付くのでメモリ8GにふやしてSSD換装してみたら、下記の方法を試さなくても「ネットワークが遅い」問題が解決されました。(2013.06.10 追記)

家庭内の共有ファイルアクセスも遅くてこまるし頻繁にネットワークが切断される(というかタイムアウトしてる?)のでどうにかせにゃなーと検索してみた。64bit版でアプリケーション自体の速度は問題ない(ややメモリが使いすぎな感があるが)けどネットワークは本当に遅い。くだりが平均20k、早くても50k…Visual Studio試用版のネットワークインストールが半日たっても終わらない…

チェックサムは、ネットワークを介して転送されるデータの完全性をチェックするシンプルなエラー検出方式です。TCP/IP/UDPなどの通信プロトコルでは、この方式が実装され、受信データがネットワーク上で破損していないかどうかの確認に使用されます。IPv4データグラムの送信元は、データに基づいてチェックサムの値を計算し、それをフレームに埋め込みます。受信側もチェックサムを独自に計算し、その結果に基づいてデータの完全性を確認します。同様に、IPデータグラムのペイロードになるTCP/UDPデータについても、チェックサムが計算され、その値がTCP/UDPフレームに埋め込まれます。
一般に、Fast Ethernetシステムでは、この計算はCPU上で実行されるドライバ・ソフトウェアによって実行されます。しかし、Gigabit Ethernetや10Gbpsの通信速度によるデータ転送では、ソフトウェア・ドライバによるチェックサムの計算はCPUにとって大きな負担になります。このことがホストの最大の課題のひとつであり、アプリケーション処理にまわすCPUサイクルが減少する原因になっています。その結果、ネットワークのフル活用が不可能になり、パフォーマンスが低下してしまうのです。

ということなのだが10Gbpsもあるはずがない家のネットワークではチェックサムオフロード機能はいらんだろう…だいたいデュアルコアなんだからCPUもうちょっと働けむしろ(´∀` )オマエガナーと思ったのでとりあえずIPv6だけ切ってみた。

  1. [コントロールパネル]-[ネットワークと共有センター]-[アダプターの設定の変更]と進んで、ローカルエリア接続の右クリックメニューからプロパティを開く。
  2. ついでなのでインターネットプロトコルバージョン6のチェックをはずして(個人的にはこれはおまじない程度だと思っている)OKののちもう一度同じようにプロパティを開く。
  3. [構成]でネットワークアダプタのプロパティを開いて詳細設定タブをクリック
  4. TCP チェックサムオフロード(IPv6), UDPチェックサムオフロード(IPv6),一括送信オフロード v2(IPv6)をすべて無効にしてOK

ネットワークが一度切断されるけどすぐに再接続される。
転送速度をみると20k->1800k


ちょwwwwwおまwwwwwwwwwwwwwwwww


IPv4のほうもはずしてみたんだけどそしたら900kくらいになったのではずさなくてもいいのかも。XPでははずしてなかったし(というかデフォルトにしていた)Vistaでも問題がない(もちろんデフォルトまま)なので、そこら辺はネットワークカード上のチップとCPUのトレードオフになるあたりなのかも。

IPv6がどうも悪者扱いされているようだが、別に悪いわけじゃないんだけどなぁ。おまじないではなく正しい対処法が広まってほしい。
http://blog.penchi.jp/archives/558.html
http://www.akakagemaru.info/port/windows7ipv6.html

これはネットワークがブツブツ途切れる場合の対処法。ネットワークの切り替えが頻繁に行われるための切断もありうるので、特にブラウジングをしているわけでもないのにネットワークが切断と再接続を繰り返している場合は上記のリンク先の対処法をするのが正しい。

一方でページのロード含め、ネットワーク使用中に切断される場合は、ネットワークの太さに対してデータが大きすぎるために待ち時間が発生していると考えたほうがよい。この場合IPv6を切っても意味がない。なぜならそこが原因ではないからだ。特にブラウジングをしていないときにネットワークが切断される現象が起きないのなら、余計な計算や処理をしているために待ち時間が発生してタイムアウト→切断→再接続になっていると思われる。
のでここで書いてある方法か
http://netserc.blog63.fc2.com/blog-entry-231.html
ここら辺を参考にするのがよいかと。


この記事がもう少しいろんな人に読まれるといいんだがなぁ。



追記:一応PCスペックをかいておきます。メモリの搭載量が少ないPCだと効果でないかも。あとよいネットワークカード使ってるならそっちに任せたほうがよっぽどあれです。CPUのスペックが低くても本体のCPUが張り付いちゃうと性能でないと思うのでちょくちょく100%になってたりする場合はネットワークカードに処理をやらせたほうがよいですね。

OS:Windows7 64bit 日本語版
メモリ:4G
CPU:Intel Celeron 2.20GHz
ネットワークカード:Realtek PCIe GBE (1Gじゃねーすかしらんかた)


まぁあとはおれの場合数kbpsしか出てなかったつうのもあるので、すでに数Mbps出ている人は別のところに問題があるのかも。意外にHDD書き込みが食ってたりとかね。I/OかきこみってCPU食うからなぁ。


追記:
http://answers.microsoft.com/ja-jp/windows/forum/windows_7-networking/windows-7-%E3%81%A7%E3%81%AE-web/6d04fdad-1a26-40b5-82d4-978a7b38bce0

ルーターファームウェアが古い場合もあるみたい。これだと解決なのかどうかはよくわからんが、ルーターWindows7対応かどうかを疑ってみるのも手なんだなぁ。どうやってアップデートするかはしらんけども…