From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by dpdk.org (Postfix) with ESMTP id BBC0D2BFE for ; Thu, 7 Sep 2017 19:48:02 +0200 (CEST) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 07C3381DE3; Thu, 7 Sep 2017 17:48:02 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 07C3381DE3 Authentication-Results: ext-mx01.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx01.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=maxime.coquelin@redhat.com Received: from [10.36.112.11] (unknown [10.36.112.11]) by smtp.corp.redhat.com (Postfix) with ESMTPS id EFF241881A; Thu, 7 Sep 2017 17:47:59 +0000 (UTC) To: Tiwei Bie , dev@dpdk.org Cc: yliu@fridaylinux.org, Zhihong Wang , Zhiyong Yang References: <20170824021939.21306-1-tiwei.bie@intel.com> From: Maxime Coquelin Message-ID: Date: Thu, 7 Sep 2017 19:47:57 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.2.1 MIME-Version: 1.0 In-Reply-To: <20170824021939.21306-1-tiwei.bie@intel.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Thu, 07 Sep 2017 17:48:02 +0000 (UTC) Subject: Re: [dpdk-dev] [PATCH] vhost: adaptively batch small guest memory copies X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 07 Sep 2017 17:48:03 -0000 Hi Tiwei, On 08/24/2017 04:19 AM, Tiwei Bie wrote: > This patch adaptively batches the small guest memory copies. > By batching the small copies, the efficiency of executing the > memory LOAD instructions can be improved greatly, because the > memory LOAD latency can be effectively hidden by the pipeline. > We saw great performance boosts for small packets PVP test. > > This patch improves the performance for small packets, and has > distinguished the packets by size. So although the performance > for big packets doesn't change, it makes it relatively easy to > do some special optimizations for the big packets too. > > Signed-off-by: Tiwei Bie > Signed-off-by: Zhihong Wang > Signed-off-by: Zhiyong Yang > --- > This optimization depends on the CPU internal pipeline design. > So further tests (e.g. ARM) from the community is appreciated. > > lib/librte_vhost/vhost.c | 2 +- > lib/librte_vhost/vhost.h | 13 +++ > lib/librte_vhost/vhost_user.c | 12 +++ > lib/librte_vhost/virtio_net.c | 240 ++++++++++++++++++++++++++++++++---------- > 4 files changed, 209 insertions(+), 58 deletions(-) I did some PVP benchmark with your patch. First I tried my standard PVP setup, with io forwarding on host and macswap on guest in bidirectional mode. With this, I notice no improvement (18.8Mpps), but I think it explains because guest is the bottleneck here. So I change my setup to do csum forwarding on host side, so that host's PMD threads are more loaded. In this case, I notice a great improvement, I get 18.8Mpps with your patch instead of 14.8Mpps without! Great work! Reviewed-by: Maxime Coquelin Thanks, Maxime