Mellanox/sockperf

sockperf playback tcp mode on RaspberryPi: Error, illegal time or size at line #4

akk988 opened this issue · 1 comments

Hello everyone,

I have found another bug with sockperf on RaspberryPi when running a playback test in tcp mode.

Issue description

sockperf can't run playback from a playback file. Testing platform is raspberrypi with raspbian 10 OS.
Same playback file was tested successfully on WSL.

Steps to reproduce the issue

  1. On Raspberrypi, Run sockperf as server
    $sockperf server -p 12000 --tcp

  2. Generate a playback file
    This was done on WSL, because generating this file on RaspberryPi didn't work (but this is another issue ;) )
    $sudo ./gen1.awk > test.pfil

  3. Run sockperf as client in playback mode
    $sockperf playback --data-file test.pfile -p 12000 --tcp --dontwarmup --reply-every 1

this should reprdduce the following error:
$illegal time or size at line #4

What's the expected result?

  • Latency results including avarage latency, total observation and histogram

What's the actual result?

$illegal time or size at line #4

Additional details / screenshot

RaspberryPi

line 4 caused the error
image

image

WSL
Same file works on WSL
image

Hello @akk988,

I do not have RaspberryPi but described issue is not seen on my setup with v3.7.

cat playback.txt
# ==== playback file for sockperf - generated by gen1.awk ====
#baseTime=2.000000; PPS=10; runtime=5.000000; interval=0.100000; NUM_RECORDS=50
# file contains 50 records
2.100000000, 14
2.200000000, 14
2.300000000, 14

server:

/auto/mtrswgwork/igori/prj/sockperf/build-master/install/bin/sockperf sr -i 127.0.0.1 --tcp
sockperf: == version #3.7-8.git089e72e49126.dirty ==
sockperf: [SERVER] listen on:
[ 0] IP = 127.0.0.1       PORT = 11111 # TCP
sockperf: Warmup stage (sending a few dummy messages)...
sockperf: [tid 31820] using recvfrom() to block on socket(s)
^Csockperf: Test end (interrupted by user)
sockperf: Total 50 messages received and handled
sockperf: cleanupAfterLoop() exit

client:

sockperf pb -i 127.0.0.1 --tcp --data-file /tmp/playback.txt --dontwarmup --reply-every 1
sockperf: == version #3.7-8.git089e72e49126.dirty ==
sockperf[CLIENT] send on:sockperf: using recvfrom() to block on socket(s)

[ 0] IP = 127.0.0.1       PORT = 11111 # TCP
sockperf: Starting test...
sockperf: Test ended
sockperf: [Total Run] RunTime=7.000 sec; Warm up time=400 msec; SentMessages=50; ReceivedMessages=50
sockperf: ========= Printing statistics for Server No: 0
sockperf: [Valid Duration] RunTime=4.900 sec; SentMessages=50; ReceivedMessages=50
sockperf: ====> avg-latency=60.663 (std-dev=5.547)
sockperf: # dropped messages = 0; # duplicated messages = 0; # out-of-order messages = 0
sockperf: Summary: Latency is 60.663 usec
sockperf: Total 50 observations; each percentile contains 0.50 observations
sockperf: ---> <MAX> observation =   94.426
sockperf: Test end (interrupted by signal 2)
sockperf: ---> percentile 99.999 =   94.426
sockperf: ---> percentile 99.990 =   94.426
sockperf: ---> percentile 99.900 =   94.426
sockperf: ---> percentile 99.000 =   94.426
sockperf: ---> percentile 90.000 =   61.927
sockperf: ---> percentile 75.000 =   61.224
sockperf: ---> percentile 50.000 =   60.127
sockperf: ---> percentile 25.000 =   59.401
sockperf: ---> <MIN> observation =   54.127