背景
在做优化之前,腾讯云上使用的母机单队列,性能只有14w pps。
已有的多队列版本,在20w+ pps左右,不是很理想。
主要问题性能
1 . 单队列成为性能瓶颈
物理主机环境,使用多队列已经有多年。
而在公有云上,虚拟化的virtio-net长期使用的多队列。
有如下原因:
- 早期的qemu-kvm版本只支持单队列。
- 为了稳定性,友商如阿里云,virtio-net的网卡到2016年底,仍然是单队列。
2 . 多队列性能并不理想
引入网卡多队列,目的是充分利用SMP处理器的性能。
在物理母机上,多队列性能提升非常明显。
但是在虚拟机上,性能却没有得到明显提升。
已有的kvm-2.0版本,当时是20w pps左右,单队列能到14w pps。
Qemu-kvm多队列原理
上图是多队列的示意图。
和物理机上的多队列类似。
一个virtio-net的队列,对应一个虚拟cpu。
这样,避免了多个虚拟cp