インテル 10 ギガイーサネットドライバのパフォーマンス調整

10 ギガイーサは最大 10G ビット／秒で通信できるイーサネットです。Windows で 10G ビットの最大パフォーマンスを発揮するためにドライバの調整が必要になる場合があります。この記事では 23 歳の新入社員向けに 10 ギガイーサのドライバの設定内容を説明します。

# 10 ギガイーサの製品例
2017年頃から安価な10ギガイーサのイーサネットカードが登場し、大学の研究室や小規模オフィスで導入しやすい状況となってます。

|種類|メーカ|型名|価格|
|---|---|---|---|
|NIC|10GTek|[X520-10G-1S-X8<BR> / X540-10G-T1-X8](https://www.amazon.co.jp/dp/B01N03LCWA)|17,000|
|NIC|QNAP|[QNA-T310G1T<BR> / QNA-T310G1S](https://www.amazon.co.jp/dp/B07KTLGTXB)|42,000|
|ハブ|QNAP|[QSW-1208-8C](https://www.amazon.co.jp/dp/B07CDJ9YGM)|140,000|
|ハブ|バッファロー|[LXW-10G2/2G4](https://www.yodobashi.com/product/100000001005320183/)|24,000|
|ケーブル|10Gtek|[10G SFP+ DAC ケーブル](https://www.amazon.co.jp/dp/B01B346BM2/)|2,000|
|ケーブル|10Gtek|[10GBase-SR SFP+モジュール](https://www.amazon.co.jp/dp/B01B2SE0DG/)|4,000|
|ケーブル|10Gtek|[OM3 LC/LC デュプレックス<BR>50/125 ファイバーパッチケーブル](https://www.amazon.co.jp/dp/B01B443FBG/)|1,000|
|ケーブル|エレコム|[LD-GPAT](https://www.yodobashi.com/product/100000001007225696/)|2,000|

# ドライバを調整する目的
Windows の初期設定では、一般的な10/100/1000BASE-Tとの互換性を優先し、かつ、性能の低いパソコンでも問題なく動作させるために、控えめな動作設定になっています。そのため、デフォルトの設定では理想のパフォーマンスを実現できない場合があります。

図1：デフォルト構成の特徴イメージ

![312.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3160433/c7128c6d-df06-3f1e-ff0f-93c78eaa237b.png)

ネットワークに求められる特性は環境やアプリケーションによって異なります。音声や映像の配信システムでは低いレイテンシが求められます。ファイルサーバーは高いスループットが必要とされます。

ここではインテル社の [「イーサネット アダプターユーザーガイド」](
https://www.intel.co.jp/content/www/jp/ja/download/19373/adapter-user-guide-for-intel-ethernet-adapters.html) を参考に３種類の目的に合わせたドライバのチューニング内容を紹介します。

1. [リアルタイム性の向上](#遅延時間を短くするための最適化)
2. [時間当たりのデータ転送量の増加](#データ転送量を増やすための最適化)
2. [CPU 負荷の減少](#cpu-使用率を下げるための最適化)

# ネットワークアダプタのドライバ設定を確認・変更する方法
 スタートボタンを右クリックし、コンテキストメニューが表示されたら、「**デバイスマネージャー**」をクリックします。

![133.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3160433/0116a1dc-8d06-fb24-2638-37fde59e8f55.png)

「デバイスマネージャー」 が表示されたら、「ネットワーク アダプタ」の中にある対象インタフェースを右クリックし、「プロパティ」をクリックします。

![457.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3160433/009c1686-cc50-5453-f80e-7ce94c6fc137.png)

「プロパティ」が表示されたら「詳細設定」タブをクリックします。

![125.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3160433/41e9bc63-c5e3-7b9c-3df0-1e9835f4bed3.png)

# ドライバの調整内容
## 遅延時間を短くするための最適化
ビデオサーバ、制御システム、ハイパフォーマンス コンピューティングといったリアルタイム性が要求される場合の推奨設定は 以下の通りです。個別のプロパティの説明はそれぞれのリンク先をご覧ください。

さらにミリ秒より短い遅延時間が求められる場合、コンピューターの BIOS で  「**C 状態を無効にして High Performance (高パフォーマンス)**」にする、 オペレーティング システムの電源管理プロファイルを「**高パフォーマンス システム**」に設定する、ことも重要です。

|プロパティ|設定|
|---|---|
|[割り込み加減率](#割り込み加減率)|「**オフ**」にします|
|[割り込み加減](#割り込み加減)|「**無効**」にします|
|[大量送信オフロード V2 (IPv4)](#大量送信オフロード-v2)|「**無効**」にします|
|[大量送信オフロード V2 (IPv6)](#大量送信オフロード-v2)|「**無効**」にします|
|[ジャンボパケット](#ジャンボパケット)|「**無効**」にします|
|[送信バッファー](#送信バッファー)|数を大きくします|
|[受信バッファー](#受信バッファー)|数を大きくします|
|[RSS キューの最大数](#rss-キューの最大数)|数を大きくします|

![321.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3160433/ad797e9a-c988-a739-1308-289a16974400.png)

## データ転送量を増やすための最適化
複数の 10ギガイーサのインタフェースを搭載するファイルサーバ向けの推奨設定は以下の通りです。

|プロパティ|設定|
|---|---|
|[ジャンボパケット](#ジャンボパケット)|「**9014 バイト**」にします|
|[送信バッファー](#送信バッファー)|数を大きくします|
|[受信バッファー](#受信バッファー)|数を大きくします|
|[RSS ロード・バランシング・プロファイル](#rss-ロードバランシングプロファイル)|NUMA をサポートするシステムの場合、「**NUMA スケーリング**」にします|

![331.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3160433/7bcb864a-7588-7d0f-da94-9dd8fe762ec7.png)

## CPU 使用率を下げるための最適化
クラウド環境のような限られた CPU 数や RAM 容量で動くアプリケーション、ウェブ、メール、およびデータベース・サーバー向けの推奨設定は以下の通りです。

|プロパティ|設定|
|---|---|
|[割り込み加減率](#割り込み加減率)|「**最大**」に設定します|
|[割り込み加減](#割り込み加減)|「**有効**」にします|
|[受信バッファー](#受信バッファー)|初期値のまま、大きな数を設定する事を避けます|
|[RSS キューの最大数](#rss-キューの最大数)|数を小さくします|

![341.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3160433/51fd2aab-577d-9b0f-8491-1e2dd7680d11.png)

# 詳細設定の解説
## ジャンボパケット
イーサネット標準の1500（正確には1518）バイトよりも大きいフレームを送信できるようにする機能です。スループットの向上、CPU負荷の削減ができることがあります。

初期値は「**無効**」です。

![413.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3160433/14d6cb5d-e336-15eb-8c60-b9d90917c2b7.png)

## 割り込み加減率
割り込み加減率（Interrupt Moderation Rate）は、ネットワークアダプタがCPUに割り込みを発生させる頻度を制御する設定です。ネットワークアダプタはデータの送受信や処理において、CPUに対して割り込みを通知しますが、その頻度を調整することができます。

割り込み加減率を調整することにより、ネットワークトラフィックが多い状況でも、効率的にCPUリソースを使用することが可能です。通常、割り込み加減率を増やすと、アダプタがより頻繁に割り込みを発生させ、データの処理が早くなりますが、同時にCPUリソースをより多く消費することになります。

初期値は「**アダプティブ**」です。

### 設定可能な値

|設定値|割り込みの頻度（InterruptThrottleRate）|
|---|---|
|オフ|ITR = 0、割り込み回数の制限なし|
|最小|ITR = 200 回/秒|
|低|ITR = 400 回/秒|
|中|ITR = 950 回/秒|
|高|ITR = 2000 回/秒|
|最大|ITR = 3600 回/秒|
|アダプティブ|ITR=-1、ドライバーが動的に変更|

![423.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3160433/03dc48c0-61c7-7a22-6213-e071a247b78c.png)
## 割り込み加減
割り込み加減（Interrupt Moderation）はネットワークトラフィックに対する割り込みの頻度を制御する機能です。ネットワークアダプタがデータを送受信するたびに、それがCPUに割り込みを発生させ、CPUがデータを処理する役割を果たします。このオプションを「**有効**」にすると、ネットワークアダプタは割り込み発生を最小限に抑え、トラフィックのパフォーマンス向上を図ります。「**無効**」にすると、より頻繁に割り込みが発生します。

初期値は「**有効**」です。

![427.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3160433/6613c164-c319-a81e-83e5-99a5220d4abc.png)
## 大量送信オフロード V2
大量送信オフロード V2（Large Send Offload V2）は、TCP/IPスタックがハードウェアによってサポートされた大きな　TCP データを生成し、その分割をネットワークアダプタにオフロードします。通常、TCPデータは小さなセグメント（MTU）に分割されて送信されますが、LSOv2ではハードウェアがセグメントを作成し、これを一度に送信することができます。IPv4 および IPv6 用に個別に設定することができます。

初期値は「**有効**」です。

![433.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3160433/20371347-52fe-dc38-f0c8-20078b4944aa.png)
## TCP チェックサムのオフロード
アダプターが着信したパケットの TCP チェックサムを検証し、送信パケットのチェックサムを計算できるようにします。この機能を有効にすると、TCP パフォーマンスを向上させ、CPU の使用率を下げることが可能になります。IPv4 および IPv6 用に個別に設定することができます。

初期値は「**受信/送信 有効**」です。

![443.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3160433/81865e22-f862-0b2e-a633-910e05fbc4d3.png)
##  UDP チェックサムのオフロード
アダプターが着信したパケットの UDP チェックサムを検証し、送信パケットのチェックサムを計算できるようにします。この機能を有効にすると、UDP パフォーマンスを向上させ、CPU の使用率を下げることが可能になります。IPv4 および IPv6 用に個別に設定することができます。

初期値は「**受信/送信 有効**」です。

## 受信バッファー

受信バッファー（Receive Buffers）は、ネットワークアダプタが受信データを格納するためのメモリバッファーの数を指定する機能です。これにより、アダプタは同時に多くの受信データを格納でき、効率的にネットワークトラフィックを処理することが期待されます。

受信バッファ―の最大数は、アダプタの種類によって異なります。

![453.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3160433/4b2b5dfb-487f-b364-293e-0a0fde1c3ada.png)
## 送信バッファー

送信バッファー（Send Buffers）は、ネットワークアダプタがデータを送信する際に使用するメモリバッファーの数を指定する機能です。これにより、アダプタは同時に多くのデータを送信でき、ネットワーク通信のパフォーマンスが向上することが期待されます。

送信バッファーの最大数は、アダプタの種類によって異なります。

![457.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3160433/f44e0dcc-4fe8-44e6-59b9-39f8276a4be8.png)
## 受信側スケーリング(RSS)

受信側スケーリング（Receive Side Scaling、RSS）はネットワークトラフィックの受信処理を複数のCPUコアに分散して処理するための技術です。これにより、マルチコアプロセッサシステムにおいてネットワークトラフィックの処理性能が向上し、ボトルネックを回避できるようになります。

初期値は「**有効**」です。

![463.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3160433/1a157be1-19f4-c4ee-e1da-6257268a7241.png)
## RSS キューの最大数

RSSキューの最大数（Maximum Number of RSS Queues）は、ネットワークアダプタが受信側スケーリング（RSS）をサポートする際に、受信データを処理するために使用されるキューの数を指定します。RSSキューの最大数は、ハードウェアやアダプタの機能によって異なります。

![473.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3160433/4a6f23ee-ea0e-75d0-dc1b-18301d2c70d1.png)
## RSS ロード・バランシング・プロファイル
RSS ロード・バランシング・プロファイル（RSS Load Balancing Profile）は、ネットワークトラフィックの受信側スケーリング（RSS）に関連する設定の一部です。RSSは、受信トラフィックを複数のCPUコアに分散して処理するための機能であり、これを制御するためのプロファイルが存在します。これによってネットワークアダプタがトラフィックをどのように処理するかが設定されます。

初期値は「**最も近いプロセッサー**」です。

### 設定可能な値
|設定値|割り込みの頻度|
|---|---|
|最も近いプロセッサー|既定の動作は、Windows Server 2008 R2 の動作と一致します。|
|最も近いプロセッサー・スタティック|動的負荷分散なし - 分散しますが、実行時に負荷分散しません。|
|NUMA スケーリング|すべての NUMA ノードにラウンド ロビンベースで RSS CPU を割り当てて、NUMA サーバーで実行されているアプリケーションが適切にスケーリングできるようにします|
|NUMA スケーリング・スタティック|RSS プロセッサの選択は、動的負荷分散のない NUMA スケーラビリティの場合と同じです。|
|コンサーバティブ・スケーリング|RSS では、負荷を維持するために可能な限り少数のプロセッサを使用します。 このオプションは、割り込みの数を減らすために役立ちます。|

![483.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3160433/9e49c98d-c564-dd08-694a-b2e44f7922d9.png)
# 参考文献
-  インテル・イーサネット・アダプター・ユーザーガイド > 4.20 Performance Options
https://www.intel.co.jp/content/www/jp/ja/download/19373/adapter-user-guide-for-intel-ethernet-adapters.html
<!-- 
- インテル イーサネットアダプターとデバイス ユーザーガイド
https://dl.dell.com/manuals/all-products/esuprt_data_center_infra_int/esuprt_data_center_infra_network_adapters/intel-pro-adapters_users-guide_ja-jp.pdf
 -->
- マイクロソフト > ネットワーク アダプターのパフォーマンスを調整する
https://learn.microsoft.com/ja-jp/windows-server/networking/technologies/network-subsystem/net-sub-performance-tuning-nics
- マイクロソフト > TCP/IP タスク オフロードの概要
https://learn.microsoft.com/ja-jp/windows-hardware/drivers/network/task-offload
- マイクロソフト > Receive Side Scaling の概要
https://learn.microsoft.com/ja-jp/windows-hardware/drivers/network/introduction-to-receive-side-scaling
<!--- インテル® イーサネット・アダプターの詳細設定
https://www.intel.co.jp/content/www/jp/ja/support/articles/000005593/ethernet-products.html -->
- INTERNET Watch > 10GbEでは「Jumbo Frame」が効果的、1Gとの混在環境ではMTUサイズに注意
https://internet.watch.impress.co.jp/docs/column/nettech/1088812.html