2016年4月5日 星期二

ethtool使用方法

1. Printf the offload setting
$ ethtool -k eth0

Offload parameters for eth0: 
rx-checksumming: on 
tx-checksumming: on 
scatter-gather: on 
tcp-segmentation-offload: on 
udp-fragmentation-offload: off 
generic-segmentation-offload: on 
generic-receive-offload: on 
large-receive-offload: off
這些offload特性都是為了提升網路收/發效能。TSO、UFO和GSO是對應網路發送,在接收方向上對應的是LRO、GRO。

2. TSO (TCP Segmentation Offload)
$ ethtool -K eth0 tso on
$ ethtool -K eth0 tso off
TSO是一種利用網卡對TCP封包分裝,減輕CPU負荷的一種技術,有時也被叫做LSO (Large Segment Offload),TSO是針對TCP的,UFO是針對UDP的。如果硬體支援TSO功能,同時也需要硬體支援的TCP checksum計算和分散/聚集(Scatter Gather)功能。

3. UFO (UDP Fragmentation Offload)
$ ethtool -K eth0 ufo on
$ ethtool -K eth0 ufo off
4. GSO (Generic Segmentation Offload)
$ ethtool -K eth0 gso on
$ ethtool -K eth0 gso off
GSO比TSO更通用,基本思想就是盡可能的將大封包分裝直至發送到網卡驅動之前,此時會檢查網卡是否支援分裝功能(如TSO、UFO),如果支援直接發送到網卡,如果不支援就進行分片後再發往網卡。這樣大封包只需走一次protocol stack,而不是被分割成幾個小封包分別走,這就提高了效率。

5. LRO (Large Receive Offload)
$ ethtool -K eth0 lro on
$ ethtool -K eth0 lro off
LRO通過將接收到的多個TCP封包組合成一個大的封包,然後傳遞給protocol stack處理,以減少上層protocol stack的處理,提高系統接收TCP封包的能力。

6. GRO (Generic Receive Offload)
$ ethtool -K eth0 gro on
$ ethtool -K eth0 gro off
GRO基本思想跟LRO類似,克服了LRO的一些缺點,更通用。後續的驅動都使用GRO的接口,而不是LRO。

7. RSS (Receive Side Scaling)
RSS是一項網卡的新特性,俗稱多隊列。具備多個RSS隊列的網卡,可以將不同的網絡流分成不同的隊列,再分別將這些隊列分配到多個CPU核心上進行處理,從而將負荷分散,充分利用多核處理器的能力。

沒有留言:

張貼留言