From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51762) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1anH6W-0005Uy-29 for qemu-devel@nongnu.org; Mon, 04 Apr 2016 22:52:33 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1anH6M-0002lk-L4 for qemu-devel@nongnu.org; Mon, 04 Apr 2016 22:52:27 -0400 Received: from mx1.redhat.com ([209.132.183.28]:36592) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1anH6M-0002lN-DI for qemu-devel@nongnu.org; Mon, 04 Apr 2016 22:52:22 -0400 Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 034207F092 for ; Tue, 5 Apr 2016 02:52:21 +0000 (UTC) References: <1459711556-10273-1-git-send-email-wexu@redhat.com> From: Jason Wang Message-ID: <57032861.6010909@redhat.com> Date: Tue, 5 Apr 2016 10:52:17 +0800 MIME-Version: 1.0 In-Reply-To: <1459711556-10273-1-git-send-email-wexu@redhat.com> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [ RFC Patch v4 0/3] Support Receive-Segment-Offload(RSC) for WHQL List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: wexu@redhat.com, qemu-devel@nongnu.org Cc: marcel@redhat.com, victork@redhat.com, dfleytma@redhat.com, yvugenfi@redhat.com, mst@redhat.com On 04/04/2016 03:25 AM, wexu@redhat.com wrote: > From: Wei Xu > > Changes in V4: > - Add new host feature bit > - Replace using fixed header lenght with dynamic header lenght in VirtIONet > - Change ip/ip6 header union in NetRscUnit to void* pointer > - Add macro prefix, adjust code indent, etc. Looks good, just few comments. It's also better to have a unit test for this. > > Changes in V3: > - Removed big param list, replace it with 'NetRscUnit' > - Different virtio header size > - Modify callback function to direct call. > - Needn't check the failure of g_malloc() > - Other code format adjustment, macro naming, etc > > Changes in V2: > - Add detailed commit log > > This patch is to support WHQL test for Windows guest, while this feature also > benifits other guest works as a kernel 'gro' like feature with userspace > implementation. > Feature information: > http://msdn.microsoft.com/en-us/library/windows/hardware/jj853324 > > Both IPv4 and IPv6 are supported, though performance with userspace virtio > is slow than vhost-net, there is about 1.5x to 2x performance improvement to > userspace virtio, this is done by turning this feature on and disable > 'tso/gso/gro' on corresponding tap interface and guest interface, while get > less improment with all these feature on. > > Linux guest performance data(Netperf): > MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.2.101 () port 0 AF_INET : nodelay > Size Size Size Time Throughput > bytes bytes bytes secs. 10^6bits/sec > > 87380 16384 64 6.00 1221.20 > 87380 16384 64 6.00 1260.30 > > 87380 16384 128 6.00 1978.51 > 87380 16384 128 6.00 2286.05 > > 87380 16384 256 6.00 2677.94 > 87380 16384 256 6.00 4615.42 > > 87380 16384 512 6.00 2956.54 > 87380 16384 512 6.00 5356.39 > > 87380 16384 1024 6.00 2798.17 > 87380 16384 1024 6.00 4943.30 > > 87380 16384 2048 6.00 2681.09 > 87380 16384 2048 6.00 4835.81 > > 87380 16384 4096 6.00 3390.14 > 87380 16384 4096 6.00 5391.54 > > 87380 16384 8092 6.00 3008.27 > 87380 16384 8092 6.00 5381.68 > > 87380 16384 10240 6.00 2999.89 > 87380 16384 10240 6.00 5393.11 > > Test steps: > Although this feature is mainly used for window guest, i used linux guest to > help test > the feature, to make things simple, i used 3 steps to test the patch as i moved > on. > 1. With a tcp socket client/server pair running on 2 linux guest, thus i can > control > the traffic and debugging the code as i want. > 2. Netperf on linux guest test the throughput. > 3. WHQL test with 2 Windows guests. > > Current status: > IPv4 pass all the above tests. > IPv6 just passed test step 1 and 2 as described ahead, the virtio nic cannot > receive any packet in WHQL test, trying with a win debug binary > > Note: > A 'MessageDevice' nic chose as 'Realtek' will panic the system sometimes during > setup, this can be figured out by replacing it with an 'e1000' nic. > > Todo: > More sanity check and tcp 'ecn' and 'window' scale test. > > Wei Xu (3): > virtio-net rsc: add a new host offload(rsc) feature bit > virtio-net rsc: support coalescing ipv4 tcp traffic > virtio-net rsc: support coalescing ipv6 tcp traffic > > hw/net/virtio-net.c | 642 +++++++++++++++++++++++++++- > include/hw/virtio/virtio-net.h | 1 + > include/hw/virtio/virtio.h | 72 ++++ > include/standard-headers/linux/virtio_net.h | 1 + > 4 files changed, 714 insertions(+), 2 deletions(-) >