
On 26/01/2016 18:49, Chris Friesen wrote:
That doesn't exclude a bug somewhere in net/ code. It doesn't pinpoint it to QEMU or vhost-net.
In any case, what I would do is to use tracing at all levels (guest kernel, QEMU, host kernel) for packet rx and tx, and find out at which layer the hiccup appears.
Is there a straightforward way to trace packet processing in qemu (preferably with millisecond-accurate timestamps)?
You can use tracing (docs/tracing.txt). There are two possibilities: 1) use existing low-level virtio tracepoints: virtqueue_fill (end of tx and rx operation) and virtqueue_pop (beginning of tx operation). 2) add tracepoints to hw/net/virtio-net.c (virtio_net_flush_tx, virtio_net_tx_complete, virtio_net_receive) or net/tap.c (tap_receive, tap_receive_iov, tap_send). Paolo