On Mon, Apr 03, 2017 at 01:02:13AM -0400, Willem de Bruijn wrote: > On Sun, Apr 2, 2017 at 10:47 PM, Michael S. Tsirkin <m...@redhat.com> wrote: > > On Sun, Apr 02, 2017 at 04:10:12PM -0400, Willem de Bruijn wrote: > >> From: Willem de Bruijn <will...@google.com> > >> > >> Amortize the cost of virtual interrupts by doing both rx and tx work > >> on reception of a receive interrupt if tx napi is enabled. With > >> VIRTIO_F_EVENT_IDX, this suppresses most explicit tx completion > >> interrupts for bidirectional workloads. > >> > >> Signed-off-by: Willem de Bruijn <will...@google.com>
This is a popular approach, but I think this will only work well if tx and rx interrupts are processed on the same CPU and if tx queue is per cpu. If they target different CPUs or if tx queue is used from multiple CPUs they will conflict on the shared locks. This can even change dynamically as CPUs/queues are reconfigured. How about adding a flag and skipping the tx poll if there's no match? -- MST