Hello, thanks for working on this! I have some minor thoughts. On Fri, Jun 14, 2024 at 03:55:43PM +0200, Luigi Leonardi wrote: > From: Marco Pinna <marco.pinn95@xxxxxxxxx> > > This introduces an optimization in virtio_transport_send_pkt: > when the work queue (send_pkt_queue) is empty the packet is > put directly in the virtqueue reducing latency. > > In the following benchmark (pingpong mode) the host sends > a payload to the guest and waits for the same payload back. > > Tool: Fio version 3.37-56 > Env: Phys host + L1 Guest > Payload: 4k > Runtime-per-test: 50s > Mode: pingpong (h-g-h) > Test runs: 50 > Type: SOCK_STREAM > > Before (Linux 6.8.11) > ------ > mean(1st percentile): 722.45 ns > mean(overall): 1686.23 ns > mean(99th percentile): 35379.27 ns > > After > ------ > mean(1st percentile): 602.62 ns > mean(overall): 1248.83 ns > mean(99th percentile): 17557.33 ns > I think It would be interesting to know what exactly the test does, and, if the test is triggering the improvement, i.e., the better results are due to enqueuing packets directly to the virtqueue instead of letting the worker does it. If I understand correctly, this patch focuses on the case in which the worker queue is empty. I think the test can always send packets at a frequency so the worker queue is always empty, but maybe, this is a corner case and most of the time the worker queue is not empty in a non-testing environment. Matias