On 8/11/23 16:34, Ilya Maximets wrote: > Lots of virtio functions that are on a hot path in data transmission > are initializing indirect descriptor cache at the point of stack > allocation. It's a 112 byte structure that is getting zeroed out on > each call adding unnecessary overhead. It's going to be correctly > initialized later via special init function. The only reason to > actually initialize right away is the ability to safely destruct it. > Replacing a designated initializer with a function to only initialize > what is necessary. > > Removal of the unnecessary stack initializations improves throughput > of virtio-net devices in terms of 64B packets per second by 6-14 % > depending on the case. Tested with a proposed af-xdp network backend > and a dpdk testpmd application in the guest, but should be beneficial > for other virtio devices as well. > > Signed-off-by: Ilya Maximets <i.maxim...@ovn.org> > --- > > Version 2: > > * Introduced an initialization function, so we don't need to compare > pointers in the end. [Stefan] > * Removed the now unused macro. [Jason] > > hw/virtio/virtio.c | 20 +++++++++++++++----- > include/exec/memory.h | 16 +++++++++++++--- > 2 files changed, 28 insertions(+), 8 deletions(-)
Kind reminder. This patch was posted quite some time ago and it has 2 reviewed/acked-by tags. Just making sure it didn't fall through the cracks. Best regards, Ilya Maximets.