Subject: Re: [RFC PATCH 15/17] kvm: add dynamic IRQ support

From: Avi Kivity <[email-masked]>
Date: Tue, 31 Mar 2009 23:59:13 +0300

Gregory Haskins wrote:
>> Won't this have scaling issues?  One IRQ means one target vcpu. 
>> Whereas I'd like virtio devices to span multiple queues, each queue
>> with its own MSI IRQ.
>>     
> Hmm..you know I hadnt really thought of it that way, but you have a
> point.  To clarify, my design actually uses one IRQ per "eventq", where
> we can have an arbitrary number of eventq's defined (note: today I only
> define one eventq, however).  An eventq is actually a shm-ring construct
> where I can pass events up to the host like "device added" or "ring X
> signaled".  Each individual device based virtio-ring would then
> aggregates "signal" events onto this eventq mechanism to actually inject
> events to the host.  Only the eventq itself injects an actual IRQ to the
> assigned vcpu.
>   

You will get get cachelines bounced around when events from different 
devices are added to the queue.  On the plus side, a single injection 
can contain interrupts for multiple devices.

I'm not sure how useful this coalescing is; certainly you will never see 
it on microbenchmarks, but that doesn't mean it's not useful.

-- 
I have a truly marvellous patch that fixes the bug which this
signature is too narrow to contain.