Windows ServerのNICチューニングをしよう

ITインフラ系

Windows Serverのネットワークパフォーマンスを最大限に引き出すためには、NIC(ネットワークインターフェースカード)のチューニングが重要です。この記事では、基本的なチューニング手順と一般的な設定について説明します。

某AIにドラフトを書いてもらって編集しておりますが、結構間違いがあったことに気づいたのでかなり加筆修正しております

NICチューニングとは何か?

NICチューニングとは、ネットワークインターフェースカード(NIC)の設定を調整し、ネットワーク通信のパフォーマンスを改善するプロセスです。これには、データの送信/受信の効率を向上させるための設定変更が含まれます。

NICチューニングの手順

powershellでncpaを打つと出てくるNIC設定から、対象のNICを右クリックしてプロパティ→構成→詳細設定からNICの設定ができます

1.ドライバの更新

NICドライバーはベンダー起因の不具合を起こしている可能性があるので、とりあえず各ベンダーのページから最新のドライバを持ってきて更新しましょう。

2.オフロード機能の無効化

NICには一部のネットワーク処理をオフロードする機能があります。これにより、CPUの負荷を軽減し、全体的なパフォーマンスを向上させることができます。とのことですが、NICに処理を渡すと遅延が発生するので無効がおすすめとのこと

弱いCPUだと有効のほうが効果がある可能性もなくはないとは思います。かなり昔の記事ですがCPU使用率の軽減に一定の効果があったとされています。

高速ネットワークでのサーバー負荷を大きく軽減する p2

しかしCPUが進化しているので本当に化石のようなCPUを使っている人でないなら無効にするのが良いと思います。

TCPチェックサムオフロード、UDPチェックサムオフロード、Large Send Offload(LSO)などのオフロード機能を無効にしてみましょう。

3.バッファサイズの調整

ネットワークトラフィックの量に応じて、送信バッファサイズと受信バッファサイズを調整することで、パフォーマンスを最適化することができます。

Transmit Bufferのような名前で設定ができると思います。デフォルトは512で、メモリに余裕がある場合に1024や2048等に増やすとよいとされます。

4.RSS(Receive Side Scaling)の有効化

RSSは、受信ネットワークトラフィックを複数のCPUコアに分散する機能です。これにより、単一のCPUコアがネットワーク処理で飽和するのを防ぎ、パフォーマンスを向上させることができます。

RSSを有効にしてからRSSのコア割り当て設定などを行うと効果が実感できるかもしれません。もし同一NICで同じCPUのコアを使っていると処理が頭打ちになり性能が低下します。
RSSでコア割り当てを変更したり、複数コアを使える様にすることで処理を分散してNICパフォーマンスを最大化することができます。
Receive Side Scaling (RSS) の概要 – Windows drivers | Microsoft Learn
またこれは詳しく記事にしたいと思います。

5.Jumbo Framesの設定

Jumbo Frameは、標準的なEthernetフレームよりも大きいパケットを送受信することができます。これにより、ネットワーク上でのパケット数が減少し、ネットワークオーバーヘッドが減り、結果的にパフォーマンスが向上します。ただし、ネットワーク全体でJumbo Frameをサポートしていること、そしてこの設定が不適切な場合にはパフォーマンスが低下する可能性があることを理解しておく必要があります。

Jumbo Frameは基本無効で良いと思います。効果が発揮されるのはネットワークストレージなどですべての機器がJunbo Frameに対応していれば速くなるとかでしょうか、、、

6.VMQ (Virtual Machine Queue)の有効化

ハイパーバイザー上で複数のVMを実行している場合、VMQを有効にすることで、ネットワークトラフィックをVMごとに分離し、パフォーマンスを向上させることができます。VMQは、ネットワークトラフィックを効率的に処理し、各VMのネットワークパフォーマンスを最適化します。

RSSと同じくVMQの詳しい設定を行うことでパフォーマンスを上げることが出来ます。僕自身あまり活用できてないのでもうちょっと検証して記事にできればと思ってます。

7.フローコントロールの最適化

フローコントロールは、ネットワークトラフィックの適切な制御を行うための重要な機能です。以下の設定を確認し、最適化しましょう。

フロー制御(Flow Control)という設定があれば受信も送信も有効にしてみます。

相手側と通信速度を合わせる機能だそうです。

まとめ

様々な設定があり、チューニングしがいがあると思います。ただ一つだけ言わせてください
CPUを強いのにしよ

軽自動車をチューニングしてすごい早い軽自動車にするよりスポーツカーのほうが早いんです

NICはシングルスレッドの処理がかなり多いと思いますので、強いCPUが一番の解決策でしょう。

とは言っても、強いCPUを持つサーバーに変えるのは厳しいと思いますので、このチューニングを上手く利用してみてください。
またNIC系の記事が思いついたら書きたいと思います。

タイトルとURLをコピーしました