Menu

#143 isochronous compilation and its output issue when used with -R

2.0
closed
isochronous (1)
2023-03-20
2021-09-24
Ray Wang
No

Hello,

With iperf v2.1.4, the following two issues are observed that are related to isochronous:
(1) When compiling with isochronous support using "./configure --enable-isochronous", a warning message is thrown - "WARNING: unrecognized options: --enable-isochronous". What would be the resolution for that since it looks like isochronous still works without enabling the support?
(2) When testing UDP with isochronous and -R options, there seems an issue with the output on the client side, e.g., large interval, zeros for all the rest of columns. If just running isochronous without -R, it works as expected.

1 Attachments

Discussion

  • Robert McMahon

    Robert McMahon - 2021-09-25
    • status: open --> accepted
     
    • Robert McMahon

      Robert McMahon - 2021-10-02

      Ok I found it. It doesn't occur with --trip-times. Code fix is here. You'll have to compile from master to get it.

       
  • Robert McMahon

    Robert McMahon - 2021-10-02

    Can you provide the command line used for both sides? Also, the ifconfig or equivalent output. How are the clocks synchronized?

    Here's my output

    [rjmcmahon@rjm-nas iperf2-code]$ src/iperf -s -i 1 -e -u -B 192.168.1.64 
    ------------------------------------------------------------
    Server listening on UDP port 5001 with pid 27341
    Binding to local address 192.168.1.64
    Read buffer size: 1.44 KByte (Dist bin width= 183 Byte)
    UDP buffer size:  208 KByte (default)
    ------------------------------------------------------------
    [ *1] local 192.168.1.64%enp2s0 port 5001 connected with 192.168.1.133 port 44164 (isoch) (reverse) (no-udp-fin) (trip-times) (sock=3) (peer 2.1.4)
    [ ID] Interval        Transfer     Bandwidth      Write/Err  PPS  isoch:tx/miss/slip
    [ *1] 0.00-1.00 sec  2.39 MBytes  20.0 Mbits/sec  1741/0     1769 pps   61/0/0
    [ *1] 1.00-2.00 sec  2.38 MBytes  20.0 Mbits/sec  1740/0     1740 pps   60/0/0
    [ *1] 2.00-3.00 sec  2.38 MBytes  20.0 Mbits/sec  1740/0     1741 pps   60/0/0
    [ *1] 3.00-4.00 sec  2.38 MBytes  20.0 Mbits/sec  1740/0     1740 pps   60/0/0
    [ *1] 4.00-5.00 sec  2.38 MBytes  20.0 Mbits/sec  1740/0     1740 pps   60/0/0
    [ *1] 5.00-6.00 sec  2.39 MBytes  20.0 Mbits/sec  1741/0     1713 pps   60/0/0
    [ *1] 6.00-7.00 sec  2.39 MBytes  20.0 Mbits/sec  1744/0     1744 pps   60/0/0
    [ *1] 7.00-8.00 sec  2.40 MBytes  20.1 Mbits/sec  1748/0     1748 pps   60/0/0
    [ *1] 8.00-9.00 sec  2.38 MBytes  20.0 Mbits/sec  1736/0     1736 pps   60/0/0
    [ *1] 9.00-10.00 sec  2.40 MBytes  20.1 Mbits/sec  1752/0     1752 pps   60/0/0
    [ *1] 0.00-10.00 sec  23.9 MBytes  20.0 Mbits/sec  17426/0     1743 pps  601/0/0
    [  1] Sent 17426 datagrams
    ^C[rjmcmahon@rjm-nas iperf2-code]$ src/iperf -v
    iperf version 2.1.4 (18 August 2021) pthreads
    [rjmcmahon@rjm-nas iperf2-code]$ 
    
    
    [rjmcmahon@ryzen3950 iperf2-code]$ src/iperf -c 192.168.1.64 -i 1 -e -u --trip-times --isochronous -R
    ------------------------------------------------------------
    Client connecting to 192.168.1.64, UDP port 5001 with pid 742107 (1 flows)
    Isochronous: 60.00 frames/sec mean=20.0 Mbit/s, stddev=0.000 bit/s, Period/IPG=16.67/0.000 ms
    UDP buffer size:  208 KByte (default)
    ------------------------------------------------------------
    [  1] local 192.168.1.133%enp4s0 port 44164 connected with 192.168.1.64 port 5001 (isoch) (reverse) (trip-times) (sock=3) on 2021-10-02 15:54:24 (PDT)
    [ ID] Interval        Transfer     Bandwidth        Jitter   Lost/Total  Latency avg/min/max/stdev PPS  Rx/inP NetPwr  Isoch:rx/lost
    [ *1] 0.00-1.00 sec  2.38 MBytes  20.0 Mbits/sec   0.014 ms 1/1741 (0.057%) 0.134/0.040/0.779/0.141 ms 1769 pps 1740/0(0) pkts 18625   61/0
    [ *1] 1.00-2.00 sec  2.38 MBytes  20.0 Mbits/sec   0.013 ms 0/1740 (0%) 0.074/0.035/0.168/0.018 ms 1740 pps 1740/0(0) pkts 33768   60/0
    [ *1] 2.00-3.00 sec  2.38 MBytes  20.0 Mbits/sec   0.013 ms 0/1740 (0%) 0.080/0.041/0.304/0.032 ms 1740 pps 1740/0(0) pkts 31149   60/0
    [ *1] 3.00-4.00 sec  2.38 MBytes  20.0 Mbits/sec   0.014 ms 0/1740 (0%) 0.114/0.041/0.317/0.051 ms 1740 pps 1740/0(0) pkts 21942   60/0
    [ *1] 4.00-5.00 sec  2.38 MBytes  20.0 Mbits/sec   0.014 ms 0/1740 (0%) 0.072/0.041/0.124/0.015 ms 1740 pps 1740/0(0) pkts 34568   60/0
    [ *1] 5.00-6.00 sec  2.38 MBytes  20.0 Mbits/sec   0.020 ms 0/1740 (0%) 0.129/0.040/1.108/0.165 ms 1739 pps 1740/0(0) pkts 19340   60/0
    [ *1] 6.00-7.00 sec  2.38 MBytes  20.0 Mbits/sec   0.014 ms 0/1740 (0%) 0.122/0.045/0.722/0.124 ms 1741 pps 1740/0(0) pkts 20549   60/0
    [ *1] 7.00-8.00 sec  2.38 MBytes  20.0 Mbits/sec   0.014 ms 0/1740 (0%) 0.178/0.042/0.746/0.171 ms 1740 pps 1740/0(0) pkts 14073   60/0
    [ *1] 8.00-9.00 sec  2.38 MBytes  20.0 Mbits/sec   0.017 ms 0/1740 (0%) 0.116/0.038/0.712/0.082 ms 1740 pps 1740/0(0) pkts 21577   60/0
    [ *1] 9.00-10.00 sec  2.38 MBytes  20.0 Mbits/sec   0.014 ms 0/1740 (0%) 0.163/0.036/0.909/0.185 ms 1740 pps 1740/0(0) pkts 15374   60/0
    [ *1] 0.00-10.00 sec  23.9 MBytes  20.0 Mbits/sec   0.017 ms 1/17425 (0.0057%) 0.119/0.035/1.108/0.122 ms 1742 pps 17424/0(0) pkts 21088  602/0
    
     
    • Ray Wang

      Ray Wang - 2021-10-04

      The server side command is pretty much the same except that a port number is specified. The client size command we used is below:
      iperf -c 192.168.90.26 -i 1 -u -f k -B 192.168.15.4 -p 10104 -t 20 -e --isochronous=80:30M,0 -R

      When we switched to use burst period and burst size, the same strange output was observed too:
      iperf -c 192.168.90.26 -i 1 -u -f k -B 192.168.15.4 -p 10104 -t 10 -e --burst-period 10 --burst-size 240M -R

       
      • Robert McMahon

        Robert McMahon - 2021-10-04

        Can you verify this came from a master compile?

        src/iperf -v
        iperf version 2.1.n (4 October 2021) pthreads

         
        • Ray Wang

          Ray Wang - 2021-10-04

          Thanks. After compiling the latest master, isochronous seems working and the output shows the expected result.

          There are two questions regarding the output:
          (1) Latency reported by the client shows dashes for avg/min/max/stdev. Is it expected?
          (2) As an example, when the following isochronous setting is used, large numbers of missed and slipped packets are reported on the server side. Are those numbers looking ok?
          --isochronous=148437:76m,0
          (Here we assume packet size is 64 bytes, traffic load is 76 Mbits/s, 148437 is the number of frames expected to send)

           

          Last edit: Ray Wang 2021-10-04
          • Robert McMahon

            Robert McMahon - 2021-10-04

            The reason for the dashes is iperf found the one way delay (OWD) to be unrealistic. The clocks are not synchronized.

            Item 2 is probably an assumption that the clocks are synchronized. Given a timestamp the server can compute the client frame id but that only works if the clocks are synced.

            It's probably a good idea to file a bug & ticket for this, i.e. isochronous error counters should still work even w/o clock sync. I've been having all my clocks synced so I haven't tested as much on systems where they're not.

            // If the minimum latency exceeds the boundaries below
            // assume the clocks are not synched and suppress the
            // latency output. Units are seconds
            #define UNREALISTIC_LATENCYMINMIN -0.01
            #define UNREALISTIC_LATENCYMINMAX 60
            
             
            • Ray Wang

              Ray Wang - 2021-10-04

              Thanks. Once I synced the clock between the client and the server, the latency is showing some numbers instead of dashes. However with the isoch setting, there is still a large number of packets shown under miss/slip which seems a bit weird. I will file a ticket for investigation.

               
      • Robert McMahon

        Robert McMahon - 2021-10-04

        Also, can you provide the ifconfig too. Can you try with bind to device option? Also, please use -e and provide the full output

        [rjmcmahon@ryzen3950 iperf2-code]$ src/iperf -c 192.168.1.64%enp7s0 -i 1 -u -f k -B 192.168.1.119 -p 10104 -t 20 -e --isochronous=80:30M,0 -R -e
        ------------------------------------------------------------
        Client connecting to 192.168.1.64, UDP port 10104 with pid 890566 via enp7s0 (1 flows)
        Isochronous: 80.00 frames/sec mean= 240 Mbit/s, stddev=0.000 bit/s, Period/IPG=12.50/0.000 ms
        UDP buffer size:  208 KByte (default)
        ------------------------------------------------------------
        [  1] local 192.168.1.119%enp7s0 port 33730 connected with 192.168.1.64 port 10104 (isoch) (reverse) (sock=3) on 2021-10-04 09:53:59 (PDT)
        [ ID] Interval            Transfer     Bandwidth        Jitter   Lost/Total  Latency avg/min/max/stdev PPS NetPwr
        [ *1] 0.0000-1.0000 sec  29297 KBytes  240000 Kbits/sec   0.100 ms 1/20481 (0.0049%) 0.961/0.043/2.663/0.559 ms 20483 pps 31209
        [ *1] 1.0000-2.0000 sec  29297 KBytes  240000 Kbits/sec   0.089 ms 0/20480 (0%) 0.670/0.055/1.969/0.347 ms 20480 pps 44778
        [ *1] 2.0000-3.0000 sec  29316 KBytes  240153 Kbits/sec   0.055 ms 0/20493 (0%) 0.665/0.048/2.681/0.376 ms 20491 pps 45173
        
         
  • Robert McMahon

    Robert McMahon - 2021-10-03
    • status: accepted --> pending
     
  • Robert McMahon

    Robert McMahon - 2023-03-20
    • status: pending --> closed
     

Log in to post a comment.

MongoDB Logo MongoDB