7.7 虚拟机磁盘多队列
虚拟机磁盘通常有virtio-block,virtio-scsi两种半虚拟化类型磁盘,和virtio-net一样半虚拟化类型磁盘也支持多队列方式。和virtio网卡一样,virtio磁盘使用多队列的数目最好也不要超过vcpu的数目,这样每个vcpu可以处理单独的queue及中断。
1. libvirt配置虚拟磁盘多队列
virtio-block类型
<disk type='file' device='disk'> <driver name='qemu' type='qcow2' queues='N'/> //N队列 <source file='/path/data.qcow2'/> <target dev='vda' bus='virtio'/> <address type='pci' domain='0x0000' bus='0x09' slot='0x00' function='0x0'/> </disk>
virtio-scsi类型
<controller type='scsi' index='0' model='virtio-scsi'> <driver queues='N' /> //N队列 </controller>
2. 虚拟机中多队列中断均衡
虚拟机中需要检查irqbalance服务状态,确保每个队列能够均匀分布到不同的vcpu上,也可以手动设置/proc/irq/{irqnum}/smp_affinity绑定中断的亲和性
CPU0 CPU1 CPU2 CPU3
38: 737452 0 0 0 0 PCH-MSI-EXT 51 virtio6-req.0
39: 0 923720 0 0 0 PCH-MSI-EXT 52 virtio6-req.1
40: 0 0 919071 0 0 PCH-MSI-EXT 53 virtio6-req.2
41: 0 0 0 876534 0 PCH-MSI-EXT 54 virtio6-req.3
...