環境
- Time 2022-11-25
- WSL-Ubuntu 22.04
前言
說明
參考:https://man7.org/linux/man-pages/man8/ethtool.8.html
目標
透過 ethtool 命令的幾個常用引數,來獲取網路卡的一些資訊。
顯示資訊
ethtool dev_name
,命令直接加上裝置的名稱:
root@jiangbo12490:~# ethtool eth0
Settings for eth0:
Supported ports: [ ]
Supported link modes: Not reported
Supported pause frame use: No
Supports auto-negotiation: No
Supported FEC modes: Not reported
Advertised link modes: Not reported
Advertised pause frame use: No
Advertised auto-negotiation: No
Advertised FEC modes: Not reported
Speed: 10000Mb/s
Duplex: Full
Port: Other
PHYAD: 0
Transceiver: internal
Auto-negotiation: off
Current message level: 0x000000f7 (247)
drv probe link ifdown ifup rx_err tx_err
Link detected: yes
其中的 Speed
說明這塊網路卡是萬兆網路卡,Duplex
指明瞭全雙工工作模式。
Link detected: yes
提示是否插上了網線。
驅動資訊
-i
或者 --driver
引數檢視網路卡的驅動資訊。
root@jiangbo12490:~# ethtool --driver eth0
driver: hv_netvsc
version: 5.10.102.1-microsoft-standard-W
firmware-version: N/A
expansion-rom-version:
bus-info:
supports-statistics: yes
supports-test: no
supports-eeprom-access: no
supports-register-dump: yes
supports-priv-flags: no
統計資訊
引數 --statistics
或者 -S
可以顯示統計資訊。
顯示了每個 CPU 和 佇列的接收資料包和傳送資料包的數量。
也包括接收和傳送的位元組數量。
root@jiangbo12490:~# ethtool -S eth0
NIC statistics:
tx_scattered: 0
tx_no_memory: 0
tx_no_space: 0
tx_too_big: 0
tx_busy: 0
tx_send_full: 0
rx_comp_busy: 0
rx_no_memory: 0
stop_queue: 0
wake_queue: 0
vlan_error: 0
vf_rx_packets: 0
vf_rx_bytes: 0
vf_tx_packets: 0
vf_tx_bytes: 0
vf_tx_dropped: 0
tx_queue_0_packets: 12301
tx_queue_0_bytes: 889622
rx_queue_0_packets: 207
rx_queue_0_bytes: 57056
rx_queue_0_xdp_drop: 0
...
rx_queue_7_packets: 188304
rx_queue_7_bytes: 280126441
rx_queue_7_xdp_drop: 0
cpu0_rx_packets: 0
cpu0_rx_bytes: 0
cpu0_tx_packets: 0
cpu0_tx_bytes: 0
cpu0_vf_rx_packets: 0
cpu0_vf_rx_bytes: 0
cpu0_vf_tx_packets: 0
cpu0_vf_tx_bytes: 0
...
cpu11_vf_tx_bytes: 0
支援的特性
引數 --show-features
或者 -k
可以顯示特性資訊。
root@jiangbo12490:~# ethtool -k eth0
Features for eth0:
rx-checksumming: on
tx-checksumming: on
tx-checksum-ipv4: on
tx-checksum-ip-generic: off [fixed]
tx-checksum-ipv6: on
tx-checksum-fcoe-crc: off [fixed]
tx-checksum-sctp: off [fixed]
scatter-gather: on
tx-scatter-gather: on
tx-scatter-gather-fraglist: off [fixed]
tcp-segmentation-offload: on
tx-tcp-segmentation: on
tx-tcp-ecn-segmentation: off [fixed]
tx-tcp-mangleid-segmentation: off
tx-tcp6-segmentation: on
generic-segmentation-offload: on
generic-receive-offload: on
large-receive-offload: on
rx-vlan-offload: on [fixed]
tx-vlan-offload: on [fixed]
ntuple-filters: off [fixed]
receive-hashing: on
highdma: on [fixed]
rx-vlan-filter: off [fixed]
vlan-challenged: off [fixed]
tx-lockless: off [fixed]
netns-local: off [fixed]
tx-gso-robust: off [fixed]
tx-fcoe-segmentation: off [fixed]
tx-gre-segmentation: off [fixed]
tx-gre-csum-segmentation: off [fixed]
tx-ipxip4-segmentation: off [fixed]
tx-ipxip6-segmentation: off [fixed]
tx-udp_tnl-segmentation: off [fixed]
tx-udp_tnl-csum-segmentation: off [fixed]
tx-gso-partial: off [fixed]
tx-tunnel-remcsum-segmentation: off [fixed]
tx-sctp-segmentation: off [fixed]
tx-esp-segmentation: off [fixed]
tx-udp-segmentation: off [fixed]
tx-gso-list: off [fixed]
fcoe-mtu: off [fixed]
tx-nocache-copy: off
loopback: off [fixed]
rx-fcs: off [fixed]
rx-all: off [fixed]
tx-vlan-stag-hw-insert: off [fixed]
rx-vlan-stag-hw-parse: off [fixed]
rx-vlan-stag-filter: off [fixed]
l2-fwd-offload: off [fixed]
hw-tc-offload: off [fixed]
esp-hw-offload: off [fixed]
esp-tx-csum-hw-offload: off [fixed]
rx-udp_tunnel-port-offload: off [fixed]
tls-hw-tx-offload: off [fixed]
tls-hw-rx-offload: off [fixed]
rx-gro-hw: off [fixed]
tls-hw-record: off [fixed]
rx-gro-list: off
macsec-hw-offload: off [fixed]
其中的 tcp-segmentation-offload
表示 TCP 的分段的操作可以直接交給網路卡。
通道
引數 --show-channels
或者 -l
可以顯示通道資訊。
有時也叫佇列的數量,表示可以幾個佇列可以同時接收網路包。
root@jiangbo12490:~# ethtool --show-channels eth0
Channel parameters for eth0:
Pre-set maximums:
RX: 0
TX: 0
Other: 0
Combined: 12
Current hardware settings:
RX: 0
TX: 0
Other: 0
Combined: 8
可以看到通道數量最大是 12 個,當前是 8 個。
引數 --set-channels
或者 -L
可以修改設定。
佇列大小
引數 --show-ring
或者 -g
可以顯示佇列的大小。
接收資料包的一個環形緩衝,表示沒有被核心取走前可以緩衝幾個包。
每個通道/佇列的緩衝是分開的,不在一起。
佇列和核心中的 Ring Buffer
是對應的,接收到資料包,透過 DMA 將資料包複製到核心。
root@jiangbo12490:~# ethtool --show-ring eth0
Ring parameters for eth0:
Pre-set maximums:
RX: 18811
RX Mini: 0
RX Jumbo: 0
TX: 2560
Current hardware settings:
RX: 9709
RX Mini: 0
RX Jumbo: 0
TX: 170
引數 --set-ring
或者 -G
可以修改設定。
總結
介紹了 ethtool 工具的幾個常見的引數,以及檢視網路卡的資訊。