Messages in this thread | | | From | Thomas Gleixner <> | Subject | Re: IRQ affinity problem from virtio_blk | Date | Wed, 16 Nov 2022 00:04:19 +0100 |
| |
On Tue, Nov 15 2022 at 17:44, Michael S. Tsirkin wrote: > On Tue, Nov 15, 2022 at 11:19:47PM +0100, Thomas Gleixner wrote: >> > We can see global_available drop from 15354 to 15273, is 81. >> > And the total_allocated increase from 411 to 413. One config irq,and >> > one vq irq. >> >> Right. That's perfectly fine. At the point where you looking at it, the >> matrix allocator has given out 2 vectors as can be seen via >> total_allocated. >> >> But then it also has another 79 vectors put aside for the other queues, > > What makes it put these vectors aside? pci_alloc_irq_vectors_affinity ?
init_vq() -> virtio_find_vqs() -> vp_find_vqs() -> vp_request_msix_vectors() -> pci_alloc_irq_vectors_affinity()
init_vq() hands in a struct irq_affinity which means that pci_alloc_irq_vectors_affinity() will spread out interrupts and have one for config and one per queue if vp_request_msix_vectors() is invoked with per_vq_vectors == true, which is what the first invocation in vp_find_vqs() does.
Thanks,
tglx
| |