]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
vhost_net: use packet weight for rx handler, too
authorPaolo Abeni <pabeni@redhat.com>
Tue, 24 Apr 2018 08:34:36 +0000 (10:34 +0200)
committerDavid S. Miller <davem@davemloft.net>
Tue, 24 Apr 2018 14:02:13 +0000 (10:02 -0400)
commitdb688c24eada63b1efe6d0d7d835e5c3bdd71fd3
tree3df63f92fef41ce6307e60af071052b78eb147b9
parent9c20b9372fbaf6f7d4c05f5f925806a7928f0c73
vhost_net: use packet weight for rx handler, too

Similar to commit a2ac99905f1e ("vhost-net: set packet weight of
tx polling to 2 * vq size"), we need a packet-based limit for
handler_rx, too - elsewhere, under rx flood with small packets,
tx can be delayed for a very long time, even without busypolling.

The pkt limit applied to handle_rx must be the same applied by
handle_tx, or we will get unfair scheduling between rx and tx.
Tying such limit to the queue length makes it less effective for
large queue length values and can introduce large process
scheduler latencies, so a constant valued is used - likewise
the existing bytes limit.

The selected limit has been validated with PVP[1] performance
test with different queue sizes:

queue size 256 512 1024

baseline 366 354 362
weight 128 715 723 670
weight 256 740 745 733
weight 512 600 460 583
weight 1024 423 427 418

A packet weight of 256 gives peek performances in under all the
tested scenarios.

No measurable regression in unidirectional performance tests has
been detected.

[1] https://developers.redhat.com/blog/2017/06/05/measuring-and-comparing-open-vswitch-performance/

Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Acked-by: Jason Wang <jasowang@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/vhost/net.c