flowgrind can't push 10G
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Flowgrind |
New
|
Undecided
|
Unassigned |
Bug Description
flowgrind can't push 10Gb/s, it tops out at about 6.6G:
root@five:~ # flowgrind -H s=240.0.
# Tue Oct 15 10:40:49 2013: controlling host = five, number of flows = 1, reporting interval = 0.05s, [through] = 10**6 bit/second (0.6.1)
# 0 S: 240.0.5.5, random seed: 811544180, sbuf = 32768/0, rbuf = 65536/0 (real/req), flow duration = 10.000s/10.000s (real/req), through = 6695.290699/
# 0 D: 240.0.5.6, random seed: 811544180, sbuf = 32768/0, rbuf = 65536/0 (real/req), through = 0.000000/
Multiple flows also top out at the same aggregate bandwidth.
Each flowgrindd only eats up about half a core, so we're not CPU limited here. Plus, netperf can easily push 10G on the same path:
root@five:~ # netperf -H 240.0.5.6
MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 240.0.5.6 () port 0 AF_INET : histogram : interval : dirty data : demo
Recv Send Send
Socket Socket Message Elapsed
Size Size Size Time Throughput
bytes bytes bytes secs. 10^6bits/sec
65536 32768 32768 10.06 9376.08
You need to increase the bock/message/IO size to saturate a 10 Gb/s link:
alexandz@six:~$ flowgrind -H s=240.0. 20.1/192. 168.10. 1,d=240. 0.20.2/ 192.168. 11.1 -Q -S s=65536 0.6.1-48- g6451ca)
# Fri Nov 29 19:17:18 2013: controlling host = six, number of flows = 1, reporting interval = 0.05s, [through] = 10**6 bit/second (flowgrind-
# 0 S: 240.0.20. 1/192.168. 10.1 (Linux 3.12.0phobos+), random seed: 2625273754, sbuf = 16384/0, rbuf = 87380/0 (real/req), SMSS = 1448, Path MTU = 1500, Interface MTU = 1500 (Ethernet/PPP), flow duration = 10.000s/10.000s (real/req), through = 9397.875158/ 0.000000Mbit/ s (out/in), request blocks = 179252/0 (out/in) 2/192.168. 11.1 (Linux 3.12.0phobos+), random seed: 2625273754, sbuf = 16384/0, rbuf = 87380/0 (real/req), SMSS = 1448, Path MTU = 1500, Interface MTU = 1500 (Ethernet/PPP), through = 0.000000/ 9396.541536Mbit /s (out/in), request blocks = 0/179224 (out/in), IAT = 0.012/0.056/0.806 (min/avg/max)
# 0 D: 240.0.20.
However, it's right that flowgrind burns more CPU then netsurf. Further investigation is needed.