From 6caec3d8b42fa22938ea0aa9d8ec0db54c75ea1e Mon Sep 17 00:00:00 2001 From: Shesha Sreenivasamurthy Date: Fri, 29 Apr 2016 01:32:42 -0400 Subject: [PATCH] Improve performance of dpdk-vhost driver By setting the flag in used table, guest is prevented from kicking the host when it adds buffers. This results in 100% performance improvement when tested throughput using iperf3. Change-Id: Iefaf5b97d1444c216bb373998732a437d333d521 Signed-off-by: Shesha Sreenivasamurthy --- vnet/vnet/devices/dpdk/vhost_user.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/vnet/vnet/devices/dpdk/vhost_user.c b/vnet/vnet/devices/dpdk/vhost_user.c index 2ebf48a55b3..c82b37f9927 100644 --- a/vnet/vnet/devices/dpdk/vhost_user.c +++ b/vnet/vnet/devices/dpdk/vhost_user.c @@ -589,6 +589,15 @@ dpdk_vhost_user_set_vring_addr(u32 hw_if_index, u8 idx, u64 desc, \ clib_warning("falied to set vring addr"); } + /* + * Inform the guest that there is no need to inform (kick) the + * host when it adds buffers. kick results in vmexit and will + * incur performance degradation. + * + * The below function sets a flag in used table. Therefore, + * should be initialized after initializing vq->used. + */ + rte_vhost_enable_guest_notification(&xd->vu_vhost_dev, idx, 0); stop_processing_packets(hw_if_index, idx); return 0; -- 2.16.6