Menu

Isochronous and variable bit rate support

2017-11-01
2017-11-26
  • Robert McMahon

    Robert McMahon - 2017-11-01

    Some notes on isochronous and vbr support, client side:

    There are two new long options:

    • --isochronous <fps>:mean,variance</fps>
    • --ipg <value> units of milliseconds, precision microseconds*</value>
    • Then on the client reports there are three new counters
      Frame counter
      Frame counter misses (this indicates total isoch frame seq nos that were missed, usually per overruns of the previous burst, i.e. the burst took too long)*
      Frame counter slips (this indicates how many times the isoch frame slot was missed and the frame seq no had to jump)
      Some example client output is below. There is a lot more work to be done but at least the tx shaping part seems to work.

    Notes:
    Presently, there is no configuration warning if the command line IPG is too large
    We'll need to characterize the realtime capabilities of preserving the IPG. It looks like on my systems about 100 microseconds may be the lower bound over a wired INTC GigE
    Build - in order to build from source, check out the code with git then:
    autoreconf
    automake
    ./configure --enable-isochronous
    make

    src/iperf -c 192.168.100.33 -u --isochronous 60:144m,20m --ipg 0.05 -t 5 -e -i 0.5

    Client connecting to 192.168.100.33, UDP port 5001 with pid 10111
    UDP isochronous: 60 frames/sec mean= 144 Mbit/s, variance=20.0 Mbit/s, IPG=0.05 ms
    UDP buffer size: 208 KByte (default)


    [ 3] local 192.168.100.67 port 33022 connected with 192.168.100.33 port 5001
    [ ID] Interval Transfer Bandwidth PPS frames:tx/missed/slips
    [ 3] 0.00-0.50 sec 8.81 MBytes 148 Mbits/sec 12571 pps 30/0/0
    [ 3] 0.50-1.00 sec 8.62 MBytes 145 Mbits/sec 12298 pps 30/0/0
    [ 3] 1.00-1.50 sec 8.70 MBytes 146 Mbits/sec 12418 pps 30/0/0
    [ 3] 1.50-2.00 sec 8.58 MBytes 144 Mbits/sec 12236 pps 30/0/0
    [ 3] 2.00-2.50 sec 8.85 MBytes 149 Mbits/sec 12630 pps 30/0/0
    [ 3] 2.50-3.00 sec 8.51 MBytes 143 Mbits/sec 12144 pps 30/0/0
    [ 3] 3.00-3.50 sec 8.84 MBytes 148 Mbits/sec 12612 pps 30/0/0
    [ 3] 3.50-4.00 sec 8.80 MBytes 148 Mbits/sec 12560 pps 30/0/0
    [ 3] 4.00-4.50 sec 8.47 MBytes 142 Mbits/sec 12086 pps 30/0/0
    [ 3] 4.50-5.00 sec 8.58 MBytes 144 Mbits/sec 12244 pps 30/0/0
    [ 3] 0.00-5.00 sec 86.8 MBytes 146 Mbits/sec 12380 pps 301/0/0
    [ 3] Sent 61901 datagrams
    [ 3] Server Report:
    [ 3] 0.00-5.00 sec 86.8 MBytes 146 Mbits/sec 0.011 ms 0/61901 (0%) -/-/-/- ms 12380 pps

    src/iperf -c 192.168.100.33 -u --isochronous 60:144m,20m --ipg 0.1 -t 5 -e -i 0.5

    Client connecting to 192.168.100.33, UDP port 5001 with pid 10124
    UDP isochronous: 60 frames/sec mean= 144 Mbit/s, variance=20.0 Mbit/s, IPG=0.10 ms
    UDP buffer size: 208 KByte (default)


    [ 3] local 192.168.100.67 port 54290 connected with 192.168.100.33 port 5001
    [ ID] Interval Transfer Bandwidth PPS frames:tx/missed/slips
    [ 3] 0.00-0.50 sec 6.96 MBytes 117 Mbits/sec 9928 pps 24/6/6
    [ 3] 0.50-1.00 sec 6.92 MBytes 116 Mbits/sec 9876 pps 24/6/6
    [ 3] 1.00-1.50 sec 7.06 MBytes 119 Mbits/sec 10078 pps 24/6/6
    [ 3] 1.50-2.00 sec 6.91 MBytes 116 Mbits/sec 9864 pps 24/6/6
    [ 3] 2.00-2.50 sec 7.15 MBytes 120 Mbits/sec 10204 pps 25/5/5
    [ 3] 2.50-3.00 sec 7.05 MBytes 118 Mbits/sec 10051 pps 23/6/6
    [ 3] 3.00-3.50 sec 6.87 MBytes 115 Mbits/sec 9809 pps 25/6/6
    [ 3] 3.50-4.00 sec 7.12 MBytes 120 Mbits/sec 10162 pps 24/6/6
    [ 3] 4.00-4.50 sec 6.87 MBytes 115 Mbits/sec 9800 pps 24/6/6
    [ 3] 4.50-5.00 sec 7.10 MBytes 119 Mbits/sec 10136 pps 24/6/6
    [ 3] 0.00-5.00 sec 70.0 MBytes 117 Mbits/sec 9990 pps 242/59/59
    [ 3] Sent 49954 datagrams
    [ 3] Server Report:

     
  • Robert McMahon

    Robert McMahon - 2017-11-26

    Attached is a short presentation

     

Log in to post a comment.

MongoDB Logo MongoDB