一、网卡多队列的出现
通常情况下,一张网卡会有一个队列用来接发收网络数据包,我们所说的一个队列你也可以理解成一个处理数据包的进程。
但是随着时代的发展,网卡支持的流量带宽越来越大,如果还是使用一个队列来接收网络数据包,必然容易造成数据包阻塞和单cpu处理不过来。于是出现了一批高端的智能网卡,这些网卡可以支持使用多个队列来接发收数据包。比如1822网卡
队列个数也可以根据情况设置,一个队列可以理解是一个处理数据包的进程,多个队列对应多个进程,这些进程可以分散到不同的cpu去处理,这样就缓解了单cpu的执行压力。
哪么网卡收到数据包后交给哪个队列处理呢?网卡驱动会根据数据包的源目的IP等五元组信息计算一个hash值,然后交由对应的队列处理。
二、网卡是否支持多队列如何查询
运行命令ethtool -l eth0
查看主网卡支持多队列的情况。
[root@localhost ~]# ethtool -l eth0
Channel parameters for eth0:
Pre-set maximums:
RX: 0
TX: 0
Other: 0
Combined: 64
Current hardware settings:
RX: 0
TX: 0
Other: 0
Combined: 32
其中Pre-set maximums中的combined字段大于1时,表示网卡支持多队列。而Current harware settings中的conbined则表示当前设置的网卡队列数,如果队列数大于1,就是已经开启了网卡多队列
三、怎么设置网卡多队列呢