qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [ RFC Patch v4 0/3] Support Receive-Segment-Offload(RSC) fo


From: wexu
Subject: [Qemu-devel] [ RFC Patch v4 0/3] Support Receive-Segment-Offload(RSC) for WHQL
Date: Mon, 4 Apr 2016 03:25:53 +0800

From: Wei Xu <address@hidden>

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 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(-)

-- 
2.5.0




reply via email to

[Prev in Thread] Current Thread [Next in Thread]