The idea here is that with GSO, packets are much larger
and we can allow the vcpu threads to e.g. process irq
acks during the window where we're reading these
packets from the tapfd.

One known issue with this is that it triggers a subtle
SMP race in the kernel's posix-timers and signalfd code.
See here for more details and a test case:

  http://lkml.org/lkml/2008/7/17/151

The symptoms of this are that:

  a) occassionally throughput drops almost to zero
  b) manually doing "killall -ALRM qemu-kvm" kicks qemu
     out if its funk.

Signed-off-by: Mark McLoughlin <[EMAIL PROTECTED]>
---
 qemu/vl.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/qemu/vl.c b/qemu/vl.c
index 499d6f9..d3ca0f1 100644
--- a/qemu/vl.c
+++ b/qemu/vl.c
@@ -4489,7 +4489,9 @@ static void tap_send(void *opaque)
        sbuf.buf = s->buf;
        s->size = getmsg(s->fd, NULL, &sbuf, &f) >=0 ? sbuf.len : -1;
 #else
+       kvm_sleep_begin();
        s->size = read(s->fd, s->buf, sizeof(s->buf));
+       kvm_sleep_end();
 #endif
 
        if (s->size == -1 && errno == EINTR)
-- 
1.5.4.1

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to