Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 24 Jan 2014 11:48:02 +0800
From:      Wang Weidong <wangweidong1@huawei.com>
To:        Giuseppe Lettieri <g.lettieri@iet.unipi.it>, =?UTF-8?B?ZmFjb2x0w6A=?= <giuseppe.lettieri73@gmail.com>
Cc:        Luigi Rizzo <rizzo@iet.unipi.it>, Vincenzo Maffione <v.maffione@gmail.com>, net@freebsd.org
Subject:   Re: netmap: I got some troubles with netmap
Message-ID:  <52E1E272.8060009@huawei.com>
In-Reply-To: <52DD1914.7090506@iet.unipi.it>
References:  <52D74E15.1040909@huawei.com> <CA%2BhQ2%2BjBhSyHwFsFo%2BzH-EuJEkKEcyc6YBH%2BfnEHi=Y27FyWyQ@mail.gmail.com> <92C7725B-B30A-4A19-925A-A93A2489A525@iet.unipi.it> <52D8A5E1.9020408@huawei.com> <52DD1914.7090506@iet.unipi.it>

next in thread | previous in thread | raw e-mail | index | archive | help
On 2014/1/20 20:39, Giuseppe Lettieri wrote:
> Hi Wang,
> 
> OK, you are using the netmap support in the upstream qemu git. That does not yet include all our modifications, some of which are very important for high throughput with VALE. In particular, the upstream qemu does not include the batching improvements in the frontend/backend interface, and it does not include the "map ring" optimization of the e1000 frontend. Please find attached a gzipped patch that contains all of our qemu code. The patch is against the latest upstream master (commit 1cf892ca).
> 
> Please ./configure the patched qemu with the following option, in addition to any other option you may need:
> 
> --enable-e1000-paravirt --enable-netmap \
> --extra-cflags=-I/path/to/netmap/sys/directory
> 
> Note that --enable-e1000-paravirt is needed to enable the "map ring" optimization in the e1000 frontend, even if you are not going to use the e1000-paravirt device.
> 
> Now you should be able to rerun your tests. I am also attaching a README file that describes some more tests you may want to run.
> 

Yes, I patch the qemu-netmap-bc767e701.patch to the qemu, download the 20131019-tinycore-netmap.hdd.
And I do some test that:

1. I use the bridge below:
qemu-system-x86_64 -m 2048 -boot c -net nic -net bridge,br=br1 -hda /home/wwd/tinycores/20131019-tinycore-netmap.hdd -enable-kvm -vnc :0
test between two vms.
br1 without device.
Use pktgen, I got the 237.95 kpps. 
Use the netserver/netperf I got the speed 1037M bits/sec with TCP_STREAM. The max speed is up to 1621M.
Use the netserver/netperf I got the speed 3296/s with TCP_RR
Use the netserver/netperf I got the speed 234M/86M bits/sec with UDP_STREAM

When I add a device from host to the br1, the speed is 159.86 kpps.
Use the netserver/netperf I got the speed 720M bits/sec with TCP_STREAM. The max speed is up to 1000M.
Use the netserver/netperf I got the speed 3556/s with TCP_RR
Use the netserver/netperf I got the speed 181M/181M bits/sec with UDP_STREAM

What do you think of these data?

2. I use the vale below:
qemu-system-x86_64 -m 2048 -boot c -net nic -net netmap,vale0:0 -hda /home/wwd/tinycores/20131019-tinycore-netmap.hdd -enable-kvm -vnc :0

Test with 2 vms from the same host
vale0 without device.
I use the pkt-gen, the speed is 938 Kpps
I use netperf -H 10.0.0.2 -t UDP_STREAM, I got the speed is 195M/195M, then add -- -m 8, I only got 1.07M/1.07M.
When use the smaller msg size, the speed will smaller? 

with vale-ctl -a vale0:eth2,
use pkt-gen, the speed is 928 Kpps
I use netperf -H 10.0.0.2 -t UDP_STREAM, I got the speed is 209M/208M, then add -- -m 8, I only got 1.06M/1.06M.

with vale-ctl -h vale0:eth2,
use pkt-gen, the speed is 928 Kpps
I use netperf -H 10.0.0.2 -t UDP_STREAM, I got the speed is 192M/192M, then add -- -m 8, I only got 1.06M/1.06M.

Test with 2 vms form two host,
I only can test it by vale-ctl -h vale0:eth2 and set eth2 into promisc
use pkt-gen with the default params, the speed is about 750 Kpps
use netperf -H 10.0.0.2 -t UDP_STREAM, I got the speed is 160M/160M
Is this right?

3. I can't use the l2 utils.
When I do the "sudo l2open -t eth0 l2recv[l2send], I got that "l2open ioctl(TUNSETIFF...): Invalid argument"
and "use l2open -r eth0 l2recv", wait a moment (only several seconds), I got the result:
TEST-RESULT: 0.901 kpps 1pkts
select/read=100.00 err=0

And I can't find the l2 utils from the net? Is it implemented by your team?

All of them is tested on vms.

Cheers.
Wang


> 
> Cheers,
> Giuseppe
> 
> Il 17/01/2014 04:39, Wang Weidong ha scritto:
>> On 2014/1/16 18:24, facoltà wrote:
[...]
>>
>>
> 
> 





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?52E1E272.8060009>