ネトゲのラグを悪魔的に減らすネットワーク設定のお話
2021/01/18
「最新のPCを買ったのにネトゲがイマイチ快適ではないのはなぜだろう?」
それはもしかしたらWindows標準のネットワーク設定のせいかもしれません。
Contents
CPUの負荷を減らすネットワーク機能が仇となる
パソコンはCPUが頭脳です。
しかしCPUになんでもやらせているとCPUがいっぱいいっぱいになってしまいます。
そこで「ネットワークはネットワークアダプタに管理させよう」という考え方が出てきました。
それは大容量高速通信に恩恵を生みました。
しかし、ネットゲームの場合にはラグが発生することがあったのです。
そこで今回はラグを解消するWindowsのネットワークチューニング方法を紹介します。
※通信ができなくなることはないと思いますが、あくまでも自己責任でお願いします。
注意:コマンドプロンプトの設定はすべて管理者権限で
Windowsのコマンドプロンプトを使って操作します。
コマンドプロンプトでの作業時、管理者として実行をしないとエラーになります。
コマンドプロンプトを管理者として実行しよう
コマンドプロンプトを管理者権限で起動するには
- 検索窓に「cmd」と入力する
- 出てきた「コマンドプロンプト」アプリの「管理者として実行」を押す
これが多分最も早いです。
CPUにガッツリネットワーク担当させる各種設定
SNP(Scalable Networking Pack)
SNPはMicrosoft Windowsに実装される機能です。
ネットワークの高速化に伴って負荷がCPUに集中し、CPUやメモリ帯域幅のボトルネックを発生させることが露呈されたために実装されました。
次の3つの機能をSNPと呼びます。
- RSS(Recieve-Side Scaling)
- TCP Chimney Offload
- NetDMA
機能の概要についてはMicrosoftから引用します。
RSS(Recieve-Side Scaling)
マルチコア、マルチスレッドを使用してCPUを効率的に使うための設定です。
受信側スケーリングでは、ネットワークアダプタからの負荷をマルチプロセッサコンピュータ内の複数のCPUに分散させることができます。この機能は、Windows Server 2008で使用できました。WindowsServer 2008 R2では、起動時の初期化とCPUの選択、パフォーマンスを調整するためのレジストリキー、および新しいパフォーマンスカウンタが追加されました。
これをオフにするには、コマンドプロンプト(管理者権限)で以下を入力してEnter後、PCを再起動します。
netsh int tcp set global rss=disabled
TCP Chimney Offload
TCP/IPの処理をCPUからネットワークアダプタに任せることで、CPUの処理を少なくさせる機能です。
TCP Chimney Offloadは、ネットワークデータ転送中にTCP / IPプロトコル処理をCPUからネットワークアダプタに転送します。この機能はWindows Server 2008でも利用できました。WindowsServer 2008 R2では自動モードが追加され、新しいパフォーマンスモニターカウンターが追加されました。
※Windows10 Version 1804以降では設定項目がありません。
Win7、Win8、Win8.1、Win10 ver 1804以前でこれをオフにするには、コマンドプロンプト(管理者権限)で以下を入力してEnter後、PCを再起動します。
netsh int tcp set global chimney=disabled
NetDMA
DMA(Direct Memory Access)は、ネットワークアダプタが受信したパケットデータをシステムのメモリに直接移動させることの出来る技術です。
NetDMAは、ネットワークパケットを専用のDMAエンジンに受信するときにネットワークサブシステムによって実行されるメモリコピー操作のオフロードを提供します。この機能は、Windows Server 2008で使用できました。WindowsServer 2008 R2には変更は加えられていません。
Windows7には意味がありますが、大塚商会によればWindows8以降(Windows10含む)では非実装(無効)です。
Windows7でこれをオフにするには、コマンドプロンプト(管理者権限)で以下を入力してEnter後、PCを再起動します。
netsh int tcp set global netdma=disabled
タスクオフロード
TCP/IPのネットワーク処理で、CPUに負荷がかかる処理をネットワークアダプタで行う機能です。
これをオフにするには、コマンドプロンプト(管理者権限)で以下を入力してEnter後、PCを再起動します。
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters /v DisableTaskOffload /t REG_DWORD /d 1 /f
受信ウィンドウ自動チューニングレベル
通信におけるMTU値やRWIN値を自動で調整する機能です。
例えば大容量のDLをする時と、細かなデータをこまめにやり取りする時では受信サイズが異なるでしょう。
この機能ではその際に自動で調整するレベルを提供します。
これをオフにするには、コマンドプロンプト(管理者権限)で以下を1行ずつ入力してEnter後、PCを再起動します。
netsh interface tcp set global autotuninglevel=disabled
netsh int tcp show global
何をしたのかをまとめると…
SNPやタスクオフロードによって、OS(&CPU)ではなくネットワークアダプタ側でネットワーク制御ができます。
受信ウィンドウ自動チューニングレベルによって、通信サイズを最適化する機能が提供されています。
CPUの性能にネットワークスピードが依存していたわけですが、SNPなどによってCPUの使用率などを下げつつ高速通信を可能にしたのです。
そして、Windowsではこれらすべてが標準でオンになっていますが、ネットゲームの場合はオフにすることで安定性が上がる場合があります。
SNPやオフロードなどをオフにするリスクは?
もちろん、SNPなどをオフにすることで機能的に以下がトレードオフになる可能性がある点に留意してください。
- CPUの負荷が高くなる可能性
- ネットワーキングスピードが落ちる可能性
- それらによって安定性が落ちる可能性
つまりCPUの性能が高ければSNP由来のネットワークトラブルは解決する可能性があるのですが、CPUに余裕がない環境だとネットワーク自体もまた不安定になる可能性があるということです。
なのでこれは実際に設定を変更して効果を試し、悪化した場合は戻せるようにしなければなりません。
ただ、2019年現在のWindows10(ver1809)においても、SNPやオフロードを無効にしたほうがネトゲでの安定性は上がりました。
SNP、オフロード等をバッチで簡単に変更する方法
コマンドプロンプトに長い文章を打つのはちょっと…という方に向けて、大塚商会がSNPなどの設定を簡単に変更するためのバッチファイルを提供しています。
つまり、一流のIT系ソリューションベンダーがWindows7~Windows10に向けて提供するほど、これらの設定はネットワークに影響があるということです。
上記ページの「無効化にする設定方法」から「SNP/タスクオフロード/受信ウィンドウ自動チューニング無効設定ファイル(ZIPファイル)」をDLして実行します。
このバッチによって以下の設定が行われます。
1_SNP_disabled.bat(SNPの無効化)
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
2_taskoffload_disabled.bat(タスクオフロードの無効化)
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters /v DisableTaskOffload /t REG_DWORD /d 1 /f
3_windowcontrol_disabled.bat(受信ウィンドウ自動チューニングレベルの無効化)
netsh interface tcp set global autotuninglevel=disabled
netsh int tcp show global
手順等も上記ページに書いてあります。
簡単に言えば「解凍したバッチファイルをそれぞれ右クリック>管理者として実行し、全部終わったら再起動」という非常に簡単な手順です。
管理者として実行をしないと、権限の関係でバッチファイルを動かせないので注意してください。
また、ページ下部には「設定を元に戻す方法(有効化)」もありますので、もし効果を体感できなかった場合も同様の手順で戻すことが出来ます。
元に戻すためのファイルはOSごとに異なっているので注意してください。
注意:環境によっては通信が劇的に遅くなるケースもあるようです
ご報告いただいたケースを掲載します。
『3_windowcontrol_disabled.bat(受信ウィンドウ自動チューニングレベルの無効化)』を実施したところ、インターネットの速度が1/10になってしまったので、念のため報告します。
回線はNuro光で、隣のPCからは400-500Mbps程出ています(Chromeのスピードテスト調べ)が、これを実施したPCでは42Mbpsになりました。再現性ありです。
特徴としては、不具合で有名になったIntel I225-Vを使っています。
私もゲームや仕事で使う際は同じチューニングを行っていたのですが、一部環境や新しいOSビルド等では遅くなってしまうこともあるということなのかもしれません。ちなみに、2台のPCでiperfで計測した際に900Mbps出ていたので、NICの不具合ではないことがわかりました
ネットワークアダプタも手動でオフロードをオフに
上記のSNPやタスクオフロードの設定などに加えて、ネットワークアダプタ側にもオフロード設定など、見直したほうが良い項目があります。
ネットワークアダプタのプロパティの開き方
タスクバーのネットワークのアイコンを押し、出てきたメニューから「ネットワークとインターネットの設定」を押します。
状態ウインドウが表示されます。「アダプターのオプションを変更する」を押します。
接続されているネットワークを右クリックして、「プロパティ」を選びます。
ネットワークアダプタのプロパティ画面が開きました。
「QoSパケットスケジューラ」をオフにする
QoSとはQuality of Serviceのこと。通信の種類に応じてネット接続の優先度などを決めるサービスです。
ラグの原因になるという話を聞くことがあり、無効化しています。
QoSを利用すると,音楽や映像ファイルなど,ある程度の帯域幅を必要とするデータが,ネットワークを利用して確実にやりとりできるように,帯域が確保される。しかしこの仕組みは,ネットワークのパフォーマンスを落としてしまう原因ともなる。
この通りであれば、全力で通信したいとしてもある程度マージンを残しておくサービスのように受け取れますね。
安定性に関わる可能性があるので、もし不具合が出たらオンに戻しておいたほうが良いと思います。
ネットワークアダプタの「構成」からオフロード関係をオフにする
この画面から「構成」ボタンを押すと、ネットワークアダプタのプロパティ画面になります。
ここからはアダプタの種類ごとに内容が変わるのですが、以下の内容を「無効」や「Disable」にしていきます。
- ○○のオフロードすべて
- ジャンボパケット関連すべて
とりあえず私がやっているのはこれくらいです。
TcpAckFrequency(TAF)=1の設定
TCPの受信確認(ACK)の頻度を高頻度に設定します。
時間あたりの通信の処理量が増えるので、MOBやPOT連打などの動きが早く滑らかになったりするものです。
この設定方法は以下の記事で手順を書いています。
Windows7では明らかに効果がありましたが、Win10だとまだよくわかりません。
結果:通信時のひっかかりが解消した
私のWindows10ではこれらの設定を行うことで、ネトゲの通信快適度がかなり上がりました。
ディスク読み込みやGPU負荷が上がったわけでもないのにガクっと画面が一瞬止まることがあったのですが、その時にタスクマネージャーを見てみると通信が一気に増えているタイミングだったんですね。
そういった引っかかりが減ったように感じます。
通信がスムーズになって処理が円滑に行えるようになったのかもしれません。
ゲーマー御用達の「NURO光」での効果
私はネット回線にNURO光を使っています。
今回ご紹介したネットワーク設定は安定性を重視するものなので、通信効率は落ちます。
私が契約しているNURO光の通信速度ですが、アップロードの速度は半分以下まで落ちました。
それでもこれくらいの速度が出ていれば実用的には問題ないですね。
もし本記事の設定をして通信速度が落ちてしまった場合は、プロバイダを変えてみるのも手です。
NURO光はPING値も低くて安定しているので、おすすめですよ。
以下の記事では申し込みから工事の詳細などのレポを書いています。
記事の内容は執筆、更新日時時点の情報であり、現在は異なっている場合があります。 記載されている会社名・製品名・システム名などは、各社の商標、または登録商標です。
【今日のおすすめ】
【auひかり】最大10Gbpsの超高速通信!最大126,000円還元キャンペーンキャッシュバックで初期工事費も実質無料!