From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44922) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1b7FAF-00062T-PO for qemu-devel@nongnu.org; Mon, 30 May 2016 00:51:00 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1b7FAB-0004Ft-Kp for qemu-devel@nongnu.org; Mon, 30 May 2016 00:50:54 -0400 Received: from mx1.redhat.com ([209.132.183.28]:55516) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1b7FAB-0004Fm-CB for qemu-devel@nongnu.org; Mon, 30 May 2016 00:50:51 -0400 Received: from int-mx13.intmail.prod.int.phx2.redhat.com (int-mx13.intmail.prod.int.phx2.redhat.com [10.5.11.26]) (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 1C6718553B for ; Mon, 30 May 2016 04:50:50 +0000 (UTC) References: <1464453454-5703-1-git-send-email-wexu@redhat.com> <574BBFEB.4010707@redhat.com> From: Wei Xu Message-ID: <574BC6A5.8010408@redhat.com> Date: Mon, 30 May 2016 12:50:45 +0800 MIME-Version: 1.0 In-Reply-To: <574BBFEB.4010707@redhat.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: quoted-printable Subject: Re: [Qemu-devel] [ RFC Patch v6 0/2] Support Receive-Segment-Offload(RSC) for WHQL List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Jason Wang , qemu-devel@nongnu.org Cc: victork@redhat.com, mst@redhat.com, yvugenfi@redhat.com, marcel@redhat.com, dfleytma@redhat.com On 2016=E5=B9=B405=E6=9C=8830=E6=97=A5 12:22, Jason Wang wrote: > > > On 2016=E5=B9=B405=E6=9C=8829=E6=97=A5 00:37, wexu@redhat.com wrote: >> From: Wei Xu >> >> Changes in V6: >> - Sync upstream code >> - Split new fields in 'virtio_net_hdr' to a seperate patch >> - Remove feature bit code, replace it with a command line parameter >> 'guest_rsc' >> which is turned off by default. >> >> Changes in V5: >> - Passed all IPv4/6 test cases >> - Add new fields in 'virtio_net_hdr' >> - Set 'gso_type' & 'coalesced packets' in new field. >> - Bypass all 'tcp option' packet >> - Bypass all 'pure ack' packet >> - Bypass all 'duplicate ack' packet >> - Change 'guest_rsc' feature bit to 'false' by default >> - Feedbacks from v4, typo, etc. > > Change-log is very important for the ease and speed up reviewers. More > details are more than welcomed. But I see some changes were not > documented here. Please give a more complete one in next iteration. OK. > >> >> Note: >> There is still a few pending issues about the feature bit, and need to= be >> discussed with windows driver maintainer, so linux guests with this pa= tch >> won't work at current, haven't figure it out yet, but i'm guessing it'= s >> caused by the 'gso_type' is set to 'VIRTIO_NET_HDR_GSO_TCPV4/6', >> will fix it after get the final solution, the below test steps and >> performance data is based on v4. > > This is probably because you've increased the vnet header length. > >> >> Another suggestion from Jason is to adjust part of the code to make it >> more readable, since there maybe still few change about the flowchart >> in the future, such as timestamp, duplicate ack, so i'd like to delay = it >> temporarily. >> >> 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. >> >> 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 userspa= ce >> 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. >> >> Wei Xu (3): >> virtio-net rsc: support coalescing ipv4 tcp traffic >> virtio-net rsc: support coalescing ipv6 tcp traffic >> virtio-net rsc: add 2 new rsc information fields to 'virtio_net_hdr= ' >> >> hw/net/virtio-net.c | 642 >> +++++++++++++++++++++++++++- >> include/hw/virtio/virtio-net.h | 2 + >> include/hw/virtio/virtio.h | 75 ++++ >> include/standard-headers/linux/virtio_net.h | 3 + >> 4 files changed, 721 insertions(+), 1 deletion(-) >> >