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