Windows 中 NIC 詳細設定一次整理 - Jumbo Packet、RSS、LSO、RSC、Flow Control、EEE、Wake on LAN 到底要怎麼設

· · Windows, 網路, NIC, Ethernet, 效能調校, Windows 開發

Windows 的 NIC 在 [進階] 索引標籤上,排了一堆看起來很陌生的字眼。
Jumbo PacketLarge Send OffloadInterrupt ModerationReceive Side ScalingFlow ControlEnergy Efficient Ethernet。光看名字會想把全部都開起來,但實際上 要以什麼為優先,答案會完全不一樣。

  • 是想提升大量傳輸的吞吐量嗎
  • 是想把小封包的延遲壓低嗎
  • 是想降低 CPU 使用率嗎
  • 是想讓睡眠喚醒和 Wake on LAN 穩定下來嗎
  • 是想分離驅動程式或交換器的相容性問題嗎

這一層如果沒釐清就「先全部開起來」「先給他個 Jumbo 9014」「慢就固定在 1Gbps Full」的話,相當正常地會出事。

本文主要針對 Windows 10 / 11 / Windows Server 的有線 Ethernet 介面卡,整理在實務中動到 NIC 詳細設定時的思考方式。
設定的意義、把值調高 / 調低 / 開啟 / 關閉時容易發生什麼事、在什麼情境下才值得動,整理成可以一眼掃完的內容。

另外,NIC 的顯示名稱與可選項 會因廠商與驅動程式而差異很大
Jumbo Packet 有時會顯示成 Jumbo FramesReceive Buffers 會變成 Receive DescriptorsPriority & VLAN 會變成 Packet Priority & VLAN。本文會把意思相近的項目歸在一起討論。

1. 先說結論

先把實務上比較難錯的結論放前面。

  • Speed & Duplex 原則 Auto。遇到降速到 100Mbps 的問題時,直接硬固定成 1.0 Gbps Full Duplex 是最後的選項。
  • Checksum Offload / RSS / LSO / RSC 原則保持啟用或預設值。亂關一通反而容易白白吃掉 CPU。
  • Jumbo Packet 只在 end-to-end 全部都對得上時才用。只有 NIC 設 9014,中途路徑還是 1500,就是個陷阱。
  • Interrupt Moderation 是 throughput 與 latency 的拔河。設高 CPU 會輕鬆,但延遲會增加。
  • Flow Control 有時可以減少 drop,但也可能把壅塞擴散開。
  • EEE / Green Ethernet / Selective Suspend 是省電設定,不是讓你變快的設定。
  • VMQ / SR-IOV 是 Hyper-V 主機用的,不是讓一般桌機變快的魔法。
  • Wake on Pattern Match 很容易變成非預期喚醒的原因,所以只要想要 Wake on LAN,靠 Magic Packet 比較安全。
  • TCP Chimney Offload 之類的老項目,現在就別碰 比較好。

簡單說,NIC 詳細設定不是「看起來很強的就全部開起來」的地方。
要取吞吐量、延遲、CPU、耗電、相容性中的哪一項 先決定好,再一項一項動的地方。

2. 在哪裡看設定

2.1 從 GUI 看

從網路連線進入

  1. 執行 ncpa.cpl
  2. 在目標介面卡上按右鍵
  3. 內容設定
  4. 進階 (Advanced) 索引標籤

從裝置管理員進入

  1. 裝置管理員
  2. 網路介面卡
  3. 對目標 NIC 按右鍵 → 內容
  4. 進階 索引標籤

這裡排列的項目,就是本文的主角。
不過 電源管理索引標籤的設定 在實務上影響也不小,後半部會介紹。

2.2 用 PowerShell 看

用 PowerShell 比較容易一次列出目前的值,也方便在變更前做備份。

Get-NetAdapter

Get-NetAdapterAdvancedProperty -Name "Ethernet" |
  Sort-Object DisplayName |
  Format-Table DisplayName, DisplayValue, RegistryKeyword, RegistryValue -Auto

部分 NIC 的 RegistryKeyword 會是標準化的名稱,會看到像 *RSS*VMQ*SRIOV*EEE 這樣的字串。
但是 DisplayName 與 DisplayValue 會因驅動程式而異。要寫變更腳本時,先在實機上列出一遍比較安全。

3. 動之前的大原則

動 NIC 設定前,如果少了這一層,通常會掉進泥沼。

3.1 先決定「要改善什麼」

同樣一句「網路很慢」,內容可能完全不同。

  • 大檔案複製慢
    → throughput、RSS、RSC、LSO、Jumbo、緩衝區
  • 小的 request/response 卡頓
    → Interrupt Moderation、RSC、EEE、佇列深度
  • CPU 高
    → offload、RSS、RSC、中斷
  • 睡眠喚醒後怪怪的
    → Selective Suspend、電源管理、WoL
  • 偶爾斷線 / 降速到 100Mbps
    → 網路線、對端設備、Speed & Duplex、EEE、驅動程式

目的不同卻動同樣的設定,別說改善,反而可能惡化。

3.2 先懷疑實體層與對端設備

有很多問題不是 NIC 設定可以修好的。

  • 網路線不良
  • 交換器 / 路由器 / dock 的相容性
  • 舊的 firmware
  • USB NIC 的供電不足
  • 連接埠側的錯誤
  • 封包遺失或重傳

特別是 降到 100MbpsLink flap只有大量傳輸壞掉 這類症狀,先看實體與對端比較快。

3.3 一次只改一個項目

Jumbo、LSO、RSC、RSS、EEE 一次全改下去,等會要分析什麼生效了會完全搞不清楚。
把變更前的設定寫下來,一次動一項 再量變化,這才是基本姿勢。

3.4 決定要量什麼

至少這些數字是要看的。

  • 連線速度(1G / 2.5G / 10G 等)
  • 吞吐量
  • 延遲
  • CPU 使用率
  • NIC 統計(drop / error / buffer shortage)
  • 睡眠喚醒的穩定度

設定變更要看的不只是體感,用數字比對比較有說服力。

4. 主要設定一覽表

先放一張可以一次看完每個設定角色的表格。

設定 在做什麼 調高 / 啟用後容易發生 調低 / 停用後容易發生 基本方針
Speed & Duplex 連線速度與 duplex 的協商 / 固定 配合舊對端可能接得起來,但不一致時會 duplex mismatch 或降速 回到 Auto 在現代設備間較穩定 原則 Auto
Jumbo Packet / Jumbo Frames 使用比 MTU 更大的 frame 大量傳輸時 CPU 與 header overhead 容易下降 相容性最高但封包數會增加 只在專用路徑且 end-to-end 一致時才用
Checksum Offload 以 NIC 處理 IP / TCP / UDP 的 checksum CPU 容易下降 OS 側計算增加,CPU 容易上升 原則啟用
LSO / TSO 由 NIC 分割較大的 TCP 送信資料 對 send-heavy 的吞吐量與 CPU 效果好 CPU 負擔會增加,但用於分離相容性問題很方便 通常啟用
RSC / LRO 在 NIC 側合併接收的 TCP segment 對接收吞吐量與 CPU 效果好 粒度變細,在低延遲場景可能有利 以接收為重就啟用
RSS 將接收處理分散到多顆 CPU 在 multi-core 下容易提升吞吐量 / scalability 集中在單顆 CPU 容易塞車 multi-core 原則啟用
Interrupt Moderation 抑制中斷頻率 CPU 輕鬆但 latency 容易增加 latency 下降但 CPU / DPC 負載容易上升 以預設 / Adaptive 當起點
Receive / Transmit Buffers Ring / Buffer 深度 對 burst 耐受度與 sustained throughput 有效 記憶體減少但對 drop 弱 只在不夠時才增加
Flow Control 802.3x pause frame 的收送 可以減少 drop 對 tail latency 有時反而較好 連同整個網路設計一起考慮
Priority & VLAN 802.1p / 802.1Q tag 可以使用 VLAN / QoS 以單純 L2 運作 有需要才用
VMQ / SR-IOV Hyper-V / 虛擬化用 NIC 輔助 對 VM throughput / CPU 有效 當一般主機使用會比較單純 Hyper-V 主機用
EEE / Green Ethernet 省電用的 Low-Power Idle 耗電下降但可能有相容性問題 耗電上升但可能更穩定 不是速度設定
Selective Suspend NIC idle 時低功耗化 耗電下降 喚醒穩定度可能提升 出問題時是候選切換項
Wake on Magic Packet / Pattern Match 睡眠中的喚醒條件 可以遠端啟動 可以避免非預期喚醒 有需要才啟用

5. 連線與 Frame 大小相關設定

5.1 Speed & Duplex

這是 關於連線速度與全雙工 / 半雙工協商 的設定。顯示名稱可能是 Speed & DuplexLink SpeedLink Speed & Duplex 等等。

在做什麼

Ethernet 中,NIC 與對端設備會決定要以什麼速度、什麼 duplex 通訊。

  • Auto Negotiation
  • 100 Mbps Full Duplex
  • 1.0 Gbps Full Duplex
  • 2.5 Gbps Full Duplex
  • 10 Gbps Full Duplex

常會出現這些選項。

改了會怎樣

設為 Auto

  • 現代設備之間,原則上這樣最穩定
  • 1000BASE-T 以上,通常以 Auto 為前提
  • 也比較能和 EEE、master/slave 的協商整合

手動固定

  • 對老交換器、對端強制固定的設備可能改善相容性
  • 只有一邊固定 / 一邊 Auto 的狀態很容易出事
  • duplex mismatch 會造成降速、重傳、異常延遲

實務基本方針

通常就 Auto 即可
「跑不到 1Gbps 所以固定 1Gbps Full」看起來很帥,其實經常沒中重點。

5.2 Jumbo Packet / Jumbo Frames

這是 使用比標準更大的 Ethernet frame 的設定。顯示名稱可能是 Jumbo PacketJumbo FramesJumbo Packet Size 等等。

在做什麼

一般的 Ethernet 通常以 MTU 1500 為前提運作。啟用 Jumbo Frame 後,可以使用 9000 byte 前後 的大 frame。

不過這裡名稱陷阱很多。

  • 驅動程式有時會以 9014 Bytes 這種 frame size 顯示
  • OS 或工具有時以 MTU 9000 這種 L3 視角 標示
  • 交換器可能以 CRC 或 VLAN tag 都算進去 的方式計算

只把數字並排比較,超常中雷。

改了會怎樣

調大 / 啟用

  • 送大筆資料時封包數會減少
  • header 處理次數會減少
  • CPU 使用率容易下降
  • 另一方面,單一封包佔用的時間會變長
  • 路徑上任何一段不支援就會造成 drop 或 fragmentation

回到標準 / 停用

  • 相容性最高
  • 封包數會增加
  • 大量傳輸時 CPU / header overhead 容易增加

實務基本方針

Jumbo 只有在 end-to-end 全部一致時才有意義。

  • 自己的 NIC
  • 對端的 NIC
  • 中間的交換器
  • 有經過 VLAN 或虛擬交換器的話,包含它的 overhead

只要其中有一個還是 1500,不但沒效果,反而會變成故障來源。

5.3 Gigabit Master / Slave Mode

這是 1000BASE-T 中,由哪一邊當 master、哪一邊當 slave 主導 clock 的設定。一般 PC 幾乎不用動。

基本方針

  • Auto 為原則
  • 只在和特定老對端出現 link quality 問題時才評估
  • 沒廠商特別指示就不當成效能調校的旋鈕

Wait for Link 這類設定,關係到 驅動程式是否要等 auto negotiation 成功後才回報 link 狀態
Log Link State Event 則是把 link up/down 記到事件檢視器,用於診斷。

基本方針

  • 一般 PC 維持預設即可
  • 比起效能本身,影響的是開機時的顯示或 failover 的診斷
  • 不是優先動的項目

6. 影響 CPU 負載、吞吐量、延遲的設定

這個區段看起來「最容易生效」。實際上也常常真的會生效,但生效的方向會明顯分成兩種。

6.1 Checksum Offload

把 IP / TCP / UDP 的 checksum 計算交給 NIC 處理的設定。

基本方針

  • 原則啟用
  • 想降 CPU 的話就保留
  • capture 上看到的 checksum error,多半是 offload 造成的外觀問題
  • 為了分離相容性問題暫時關掉是可以的

6.2 Large Send Offload (LSO) / TSO / Offload TCP Segmentation

把大的 TCP 送信資料由 NIC 切成小 frame 的設定。

對什麼有效

  • send-heavy 的吞吐量
  • 降低 CPU 使用率
  • 較大的連續送信

基本方針

  • 通常 啟用
  • 懷疑特定應用程式或驅動程式相容時,暫時停用看差異

6.3 Receive Segment Coalescing (RSC) / Large Receive Offload

把接收端多個 TCP segment 合併的設定。

對什麼有效

  • 接收端的吞吐量
  • 降低 CPU 使用率

注意點

  • 低延遲或以封包單位觀察時可能不利
  • capture 或時序觀察的解讀會稍微改變

基本方針

  • 以接收吞吐量為重就啟用
  • 要看小 request/response 的 latency 時列為評估對象

6.4 UDP 的新式 offload(USO / URO)

較新的 NIC 和 OS 上,UDP 的收送也可能出現新的 offload 項目。

基本方針

  • 就算有,優先不要偏離預設
  • 只在驅動程式夠新、目標 workload 明確時才測量
  • 故障排除時不要硬動它

6.5 Receive Side Scaling (RSS)

把接收處理分散到多顆 CPU 的設定。multi-core 環境下相當重要。

基本方針

  • multi-core 原則啟用
  • 單顆 CPU 黏住跑的症狀先檢查這裡
  • Hyper-V 或 high-throughput 前,也是主角之一

6.6 RSS Queues / RSS Processors / RSS Profile

決定 RSS 並行度的項目。

基本方針

  • 從預設值開始
  • 看到 CPU 使用率或 queue 偏斜後再加
  • 隨便拉到最大,中斷或 DPC 負載反而可能增加

6.7 Interrupt Moderation / Interrupt Moderation Rate

抑制中斷頻率,用 CPU 負載換 latency 的設定。

傾向

  • 高 / Adaptive
    → CPU 輕鬆但 latency 容易增加
  • 低 / Off
    → latency 容易下降但 CPU / DPC 負載容易上升

基本方針

  • 以預設 / Adaptive 為起點
  • 在意小封包的 jitter 就評估 Low / Off
  • 大量傳輸時,多半保留預設較自然

6.8 Receive Buffers / Receive Descriptors 與 Transmit Buffers / Transmit Descriptors

改變 ring / buffer 深度的設定。

生效方向

  • burst 耐受度
  • sustained throughput
  • 迴避 drop

副作用

  • 記憶體消耗增加
  • queue 變深可能增加排隊延遲

基本方針

  • 看到 drop 或 buffer shortage 時再增加
  • 不要隨便拉到最大

6.9 Flow Control

關於 802.3x pause frame 收送的設定。

基本方針

  • 想減少 drop 時是候選
  • 但 pause 有時會把壅塞擴散到別處
  • 低延遲情境要謹慎評估
  • 要和整個網路設計一起考慮

7. VLAN、QoS、虛擬化相關設定

7.1 Priority & VLAN / Packet Priority & VLAN / NDIS QoS

處理 802.1Q VLAN 和 802.1p Priority 的區段。

基本方針

  • 真的要用 VLAN / QoS 時才意識到它
  • 單純 access port 環境維持預設即可
  • 會擅自附上 tag 的組態會讓故障分離變困難,要小心

7.2 VMQ / VMMQ / SR-IOV

這是 Hyper-V 主機或虛擬化基礎架構 上才有意義的設定。

基本方針

  • 別當成一般桌機調校處理
  • Hyper-V 主機的話,要連同 vSwitch 組態、queue 指派、客體端設定一起評估
  • 只看單邊不太可能找到正解

7.3 RDMA / DCB / PFC 是另一個世界

這一帶包含 SMB Direct、lossless Ethernet,是個相當獨立的世界。

基本方針

  • 和一般 1GbE / 2.5GbE 桌機調整要分開看
  • 要連同廠商資料與交換器側設計一起確認

8. 省電、睡眠、Wake on LAN 相關設定

8.1 Energy Efficient Ethernet (EEE) / Green Ethernet

為了省電,在 link idle 時降低耗電的設定。

看法

  • 不是讓速度變快的設定
  • 對耗電有效
  • 依對端設備或線材條件,可能成為 link 不穩或 100Mbps downshift 的分離候選

基本方針

  • 一般用途維持預設即可
  • Link 不穩、被降到 100Mbps、重視低延遲時,先列為切換候選

簡單說,是 idle 或睡眠時 NIC 要睡多深 的設定。

基本方針

  • 筆電從預設值開始
  • 有喚醒問題時最先懷疑這裡
  • 設備控制用 PC 或 24/7 運用,關掉反而容易理解

8.3 Wake on Magic Packet / Wake on Pattern Match

這是讓睡眠中的 PC 透過網路被喚醒的設定。

基本方針

  • 需要 Wake on LAN 就啟用 Magic Packet
  • 不需要就關
  • Pattern Match 只在需求明確時才開

就算 NIC 這邊開了,還是可能叫不醒。要把 BIOS / UEFI 側、電源管理索引標籤側一起對齊看。

8.4 ARP Offload / NS Offload

讓 NIC 在睡眠中代替主機做最低限度回應的設定。

基本方針

  • 通常 啟用 / 預設值 即可
  • 在處理睡眠相關相容性時常被暫時碰一下

8.5 電源管理索引標籤的設定

NIC 的內容除了進階索引標籤外,還有 電源管理 索引標籤。這裡不起眼但其實重要。

常看的是這 3 項。

  • 允許電腦關閉這個裝置以節省電源
  • 允許這個裝置喚醒電腦
  • 僅允許 magic packet 喚醒電腦

基本方針

  • 喚醒不良先懷疑 允許電腦關閉這個裝置...
  • 想避免誤喚醒就啟用 僅允許 magic packet...
  • 根本不需要 Wake on LAN,所有 wake 相關都關即可

9. 其他常見但動到機會少的設定

9.1 Network Address / Locally Administered Address

手動覆寫 MAC 位址 的設定。

基本方針

  • 平常不動
  • 不是效能設定
  • 只有實驗環境或特殊需求會用到

9.2 Adaptive Inter-Frame Spacing

相當老牌的設定。在現代 switched full-duplex Ethernet 上不是主角。

基本方針

  • 現代一般 LAN 維持預設
  • 只有老設備或特殊環境有廠商指示時才動

9.3 Header Data Split

主要針對伺服器,把 packet header 與 payload 分開處理以減輕 CPU 負擔的這類設定。

基本方針

  • 伺服器向 / 特定 workload 向
  • 一般用戶端維持預設

9.4 Low Latency Interrupts

部分廠商會有 Low Latency Interrupts 之類的項目。

基本方針

  • 有測量能贏才使用
  • 不是靠感覺開啟的項目

9.5 TCP Chimney Offload / IPsec Task Offload 等舊項目

較老的 NIC 或驅動程式還會看到這類項目。

基本方針

  • 現在就不要碰、不要用 才是正解
  • 不要被相容性或舊文件帶偏

10. 目的別的粗略指引

10.1 一般桌機 / 筆電

  • Speed & Duplex: Auto
  • MTU / Jumbo: 1500 / 停用
  • Checksum Offload: 啟用
  • LSO: 啟用
  • RSC: 啟用
  • RSS: 啟用
  • Interrupt Moderation: 預設 / Adaptive
  • Buffers: 預設
  • Flow Control: 預設
  • EEE / Green Ethernet: 預設
  • Selective Suspend: 預設
  • Wake on LAN: 需要時才開

一言以蔽之,原則從預設值不要亂動 就是基本姿勢。

10.2 NAS / 備份 / 大量複製

  • Speed & Duplex: Auto
  • Jumbo: 專用路徑可以對齊就評估
  • Checksum Offload: 啟用
  • LSO: 啟用
  • RSC: 啟用
  • RSS: 啟用
  • RSS queues: 有必要就稍微增加
  • Receive / Transmit Buffers: 有 drop 就稍微增加
  • Interrupt Moderation: 預設 / 稍高
  • EEE: 重視穩定就評估停用

大量傳輸時,減少封包數、減少 CPU、迴避 queue 不足 比較容易見效。

10.3 工業相機 / 設備控制 / 重視低延遲

  • Speed & Duplex: 原則 Auto。必要時配合對端固定
  • Jumbo: 相機 / NIC / 交換器都對齊時評估
  • Checksum Offload: 先啟用
  • LSO: 懷疑送信相容性時暫時停用評估
  • RSC: 低延遲或以觀察為優先時列為停用候選
  • Interrupt Moderation: 評估 Low / Off
  • Buffers: 不要加太多
  • Flow Control: 需評估 pause 的副作用
  • EEE / Green Ethernet: 停用候選
  • Selective Suspend / 電源管理: 停用候選

吞吐量最佳化的設定,不一定對 low latency 有利。

10.4 Hyper-V 主機

  • VMQ / VMMQ / SR-IOV: 依組態評估
  • RSS: 對主機側流量重要
  • RSC: 依 vSwitch 組態可能有限制
  • QoS / VLAN: 與 vSwitch 設計搭配
  • Flow Control / PFC: 連同儲存 / RDMA 設計一起考慮

這已經不是 desktop tuning,而是 虛擬化基礎架構設計

10.5 故障排除用的暫時設定

處理故障時,回到單純世界是強力做法。

  • Speed & Duplex: Auto
  • MTU: 1500
  • Jumbo: 停用
  • EEE: 停用
  • LSO: 暫時停用
  • RSC: 暫時停用
  • Interrupt Moderation: 預設或偏低
  • Wake / power save: 不需要就停用
  • 變更前設定: 務必保存

故障分離時,讓行為單純化比效能最佳化更重要

11. 各症狀的第一個下手點

11.1 應該要 1Gbps / 2.5Gbps 卻變成 100Mbps

優先檢查順序大致如下。

  1. 網路線
  2. dock / USB NIC / 轉接器
  3. 交換器側連接埠
  4. 更新驅動程式
  5. EEE / Green Ethernet
  6. 把 Speed & Duplex 回到 Auto
  7. 還是不行再試著配合對端固定

直接手動固定是最後一步

11.2 大量傳輸很慢但 ping 正常

要看的是下列幾項。

  • Checksum Offload
  • LSO
  • RSC
  • RSS
  • Receive / Transmit Buffers
  • Jumbo Frame(專用路徑才考慮)
  • NIC 統計的 drop / error

這屬於 吞吐量系的問題,Jumbo 或 queue、offload 容易生效。

11.3 小 request/response 延遲大、在意 jitter

要看的是下列幾項。

  • Interrupt Moderation
  • RSC
  • EEE
  • Flow Control
  • Buffers 有沒有加太多

在這個區段,批次處理系的最佳化,反而有可能讓體感延遲變高。

11.4 睡眠喚醒後 NIC 消失 / 數秒無法連線

要看的是下列幾項。

  • Selective Suspend
  • Device Sleep / Standby 相關設定
  • 電源管理索引標籤的 允許電腦關閉這個裝置...
  • dock / USB NIC 的 firmware
  • wake 相關設定的組合

喚醒問題與其說是 NIC 本身,多半是電源管理

11.5 packet capture 看到大量 checksum error

在喊「線路壞了」之前,先確認下列幾項。

  • Checksum Offload 是否啟用
  • LSO 是否啟用
  • capture 是在送信前還是在 wire 上
  • 在別的主機或 mirror port 看是否一樣

本機 capture 的 checksum error,真的很常只是 offload 造成的外觀

11.6 只有 Hyper-V 的 VM 慢 / CPU 偏斜

要看的不只是桌機視角的 RSS。

  • VMQ / VMMQ
  • SR-IOV
  • vSwitch binding
  • VLAN / QoS
  • 主機側 RSS 與 VM 側 queue 的分工

虛擬化中,把誰在處理 packet 畫成圖 會比較好整理。

12. 用 PowerShell 確認與變更時的實用備忘

12.1 先保存目前狀態

變更前的備份很重要。

Get-NetAdapterAdvancedProperty -Name "Ethernet" |
  Select-Object Name, DisplayName, DisplayValue, RegistryKeyword, RegistryValue |
  Export-Csv .\nic-advanced-backup.csv -NoTypeInformation -Encoding UTF8

12.2 列出清單

Get-NetAdapterAdvancedProperty -Name "Ethernet" |
  Sort-Object DisplayName |
  Format-Table DisplayName, DisplayValue, RegistryKeyword -Auto

12.3 看 RSS / RSC / 統計

Get-NetAdapterRss -Name "Ethernet"
Get-NetAdapterRsc -Name "Ethernet"
Get-NetAdapterStatistics -Name "Ethernet"

12.4 變更範例

實際的顯示名稱因 NIC 而異,所以先列出清單再變更。

# 範例: 變更 Jumbo Packet(值因 NIC 而異)
Set-NetAdapterAdvancedProperty -Name "Ethernet" `
  -DisplayName "Jumbo Packet" `
  -DisplayValue "9014 Bytes"
# 範例: 設定 RSS 的接收 queue 數
Set-NetAdapterRss -Name "Ethernet" -NumberOfReceiveQueues 4

12.5 Jumbo 的連通驗證

# 相當於標準 MTU 1500
ping <對端IP> -f -l 1472

# 相當於 MTU 9000
ping <對端IP> -f -l 8972

14728972 是扣除 IP / ICMP header 後的 payload。驅動程式 UI 的 9014 Bytes 與這個 ping 的數字不會一致。

12.6 實務備忘

  • 部分設定需要 停用 / 啟用介面卡 或重啟
  • DisplayName 可能是本地化過的
  • 同一廠商,driver 版本不同,項目名稱也可能不同
  • 要用 PowerShell 自動化時,先列出實機的值 再寫比較安全

13. 小結

Windows 的 NIC 詳細設定光看項目名稱全都「很強」。
但實際上是個 以吞吐量、延遲、CPU、電源、相容性中要取哪一個,答案就不同 的世界。

本文重點整理如下。

  • Speed & Duplex 原則 Auto
  • Jumbo 只在 end-to-end 對齊時才開
  • Checksum / RSS / LSO / RSC 原則以預設為強
  • Interrupt Moderation 是吞吐量與延遲的 trade-off
  • Buffers 只加剛好的量
  • EEE / Selective Suspend / Wake 系是電源 / 喚醒的議題
  • VMQ / SR-IOV 是 Hyper-V 的議題
  • 老 offload 項目別碰

而最重要的是以下 3 點。

  1. 決定要改善什麼
  2. 一次只改一項
  3. 用數字比對變更前後

NIC 設定不是魔法速度開關。
但只要目的對了就能有效果。反之目的錯了,會相當忠實地吃到反效果。

14. 參考資料

以下是撰寫本文時作為基礎參考的官方資料 / 廠商資料。
Windows 與 NIC 驅動程式的用語浮動很多,最終仍建議配合 自己的 NIC 的驅動名稱與版本 確認才安全。

共用相同標籤的最新文章。能以相近的主題延伸理解。

與本文相近的主題頁面。以本文為起點,可進一步連到相關服務與其他文章。

本文連結到以下服務頁面,歡迎從最接近的入口查看。

作者檔案

本文作者的個人檔案頁面。

Go Komura

小村軟體有限公司 代表

以 Windows 軟體開發、技術諮詢與故障調查為中心,在難以重現的故障調查與既有資產仍在運作的專案上具有優勢。

回到部落格一覽