为什么需要网卡多队列传统单队列因依赖单核处理全部数据包易导致CPU过载、延迟增加及丢包,而现代服务器多为多核CPU,多队列可将网络流量分发至多核CPU的不同核心,从而实现对多核计算资源的高效利用。
根据测试结果,在相同的网络PPS和网络带宽条件下,相较于单个队列,使用两个队列的网络性能提升50%~100%,而使用四个队列的性能提升则更加显著:
更好地利用多核CPU架构:多队列可以将网络流量分散到多个CPU核心上处理,这样可以更均匀地分配负载,提高CPU的利用率。
提高吞吐量:多队列允许多个数据包同时被处理,这可以显著提高网络的吞吐量,尤其是在高负载情况下。
降低延迟:由于数据包可以分散到不同的队列中处理,减少了单个队列的拥堵,从而降低了延迟。
减少丢包:在高流量情况下,多队列可以减少因单个队列过载而导致的丢包。
虽然多队列通常能够带来上述好处,但不当的配置也可能导致性能下降或其他问题。例如,网卡队列和CPU亲和性设置不当,可能会引起不必要的上下文切换开销;而网卡队列数目设置过少则不能充分利用硬件资源。
通常弹性网卡在附加到特定实例规格的实例上后,网卡的队列数即实例规格默认的网卡队列数,且在系统内部自动生效。如果您需要手动调整网卡的队列数,在调整前应该根据具体的使用场景和硬件条件仔细考虑如何合理地配置弹性网卡的多队列参数。