I am using the PTS/sockperf under-load test and am trying to figure out how to parse / return the number of dropped messages result from the ouput.
Here is what sockperf output looks when run "by hand":
[root@HOSTNAME sockperf-3.4]# ./sockperf server &
[1] 55377
[root@HOSTNAME sockperf-3.4]# sockperf: == version #3.4-no.git ==
sockperf: [SERVER] listen on:
[ 0] IP = 0.0.0.0 PORT = 11111 # UDP
sockperf: Warmup stage (sending a few dummy messages)...
sockperf: [tid 55377] using recvfrom() to block on socket(s)
[root@HOSTNAME sockperf-3.4]# ./sockperf under-load -i 127.0.0.1 -p 11111 -t 10 -m 64 --pps=max
sockperf: == version #3.4-no.git ==
sockperf[CLIENT] send on:sockperf: using recvfrom() to block on socket(s)
[ 0] IP = 127.0.0.1 PORT = 11111 # UDP
sockperf: Warmup stage (sending a few dummy messages)...
sockperf: Starting test...
sockperf: Test end (interrupted by timer)
sockperf: Test ended
sockperf: [Total Run] RunTime=10.000 sec; Warm up time=400 msec; SentMessages=2882725; ReceivedMessages=28827
sockperf: ========= Printing statistics for Server No: 0
sockperf: Test end (interrupted by signal 2)
sockperf: [Valid Duration] RunTime=9.550 sec; SentMessages=2754401; ReceivedMessages=27545
sockperf: ====> avg-lat= 17.551 (std-dev=0.853)
sockperf: # dropped messages = 0; # duplicated messages = 0; # out-of-order messages = 0
sockperf: Summary: Latency is 17.551 usec
sockperf: Total 27545 observations; each percentile contains 275.45 observations
sockperf: ---> <MAX> observation = 30.960
sockperf: ---> percentile 99.999 = 30.960
sockperf: ---> percentile 99.990 = 29.451
sockperf: ---> percentile 99.900 = 27.449
sockperf: ---> percentile 99.000 = 20.403
sockperf: ---> percentile 90.000 = 18.092
sockperf: ---> percentile 75.000 = 17.754
sockperf: ---> percentile 50.000 = 17.456
sockperf: ---> percentile 25.000 = 17.210
sockperf: ---> <MIN> observation = 5.136
The line I wish to parse is the following:
sockperf: # dropped messages = 0; # duplicated messages = 0; # out-of-order messages = 0
So, I modified results-definition.xml, adding the following stanza:
<ResultsParser>
<OutputTemplate>sockperf: # dropped messages = #_RESULT_#; # duplicated messages = 0; # out-of-order messages = 0</OutputTemplate>
<ResultScale>Number of Dropped Messages</ResultScale>
<ResultProportion>LIB</ResultProportion>
</ResultsParser>
However, this does not succeed in parsing out the desired value. Here is the relevant output of "phoronix-test-suite debug-run sockperf":
Result Key: #_RESULT_#
Template Line: sockperf: # dropped messages = #_RESULT_#; # duplicated messages = 0; # out-of-order messages = 0
Result Parsing Search Key: "sockperf: # dropped messages ="
Result Line: sockperf: # dropped messages = 0; # duplicated messages = 0; # out-of-order messages = 0
No Test Results
It looks to me as if the ";" that follows directly after the result is being parsed and so the resulting string ("0;") does not match #_RESULT_#. I have tried adding ResultBeforeString to the stanza with no luck. Is there some directive (ResultAfterString did not work) that applies here? I would hope this is a condition that has been seen before and for which there is a PTS parsing directive.
Please advise, thanks in advance,
Jesse
Here is what sockperf output looks when run "by hand":
[root@HOSTNAME sockperf-3.4]# ./sockperf server &
[1] 55377
[root@HOSTNAME sockperf-3.4]# sockperf: == version #3.4-no.git ==
sockperf: [SERVER] listen on:
[ 0] IP = 0.0.0.0 PORT = 11111 # UDP
sockperf: Warmup stage (sending a few dummy messages)...
sockperf: [tid 55377] using recvfrom() to block on socket(s)
[root@HOSTNAME sockperf-3.4]# ./sockperf under-load -i 127.0.0.1 -p 11111 -t 10 -m 64 --pps=max
sockperf: == version #3.4-no.git ==
sockperf[CLIENT] send on:sockperf: using recvfrom() to block on socket(s)
[ 0] IP = 127.0.0.1 PORT = 11111 # UDP
sockperf: Warmup stage (sending a few dummy messages)...
sockperf: Starting test...
sockperf: Test end (interrupted by timer)
sockperf: Test ended
sockperf: [Total Run] RunTime=10.000 sec; Warm up time=400 msec; SentMessages=2882725; ReceivedMessages=28827
sockperf: ========= Printing statistics for Server No: 0
sockperf: Test end (interrupted by signal 2)
sockperf: [Valid Duration] RunTime=9.550 sec; SentMessages=2754401; ReceivedMessages=27545
sockperf: ====> avg-lat= 17.551 (std-dev=0.853)
sockperf: # dropped messages = 0; # duplicated messages = 0; # out-of-order messages = 0
sockperf: Summary: Latency is 17.551 usec
sockperf: Total 27545 observations; each percentile contains 275.45 observations
sockperf: ---> <MAX> observation = 30.960
sockperf: ---> percentile 99.999 = 30.960
sockperf: ---> percentile 99.990 = 29.451
sockperf: ---> percentile 99.900 = 27.449
sockperf: ---> percentile 99.000 = 20.403
sockperf: ---> percentile 90.000 = 18.092
sockperf: ---> percentile 75.000 = 17.754
sockperf: ---> percentile 50.000 = 17.456
sockperf: ---> percentile 25.000 = 17.210
sockperf: ---> <MIN> observation = 5.136
The line I wish to parse is the following:
sockperf: # dropped messages = 0; # duplicated messages = 0; # out-of-order messages = 0
So, I modified results-definition.xml, adding the following stanza:
<ResultsParser>
<OutputTemplate>sockperf: # dropped messages = #_RESULT_#; # duplicated messages = 0; # out-of-order messages = 0</OutputTemplate>
<ResultScale>Number of Dropped Messages</ResultScale>
<ResultProportion>LIB</ResultProportion>
</ResultsParser>
However, this does not succeed in parsing out the desired value. Here is the relevant output of "phoronix-test-suite debug-run sockperf":
Result Key: #_RESULT_#
Template Line: sockperf: # dropped messages = #_RESULT_#; # duplicated messages = 0; # out-of-order messages = 0
Result Parsing Search Key: "sockperf: # dropped messages ="
Result Line: sockperf: # dropped messages = 0; # duplicated messages = 0; # out-of-order messages = 0
No Test Results
It looks to me as if the ";" that follows directly after the result is being parsed and so the resulting string ("0;") does not match #_RESULT_#. I have tried adding ResultBeforeString to the stanza with no luck. Is there some directive (ResultAfterString did not work) that applies here? I would hope this is a condition that has been seen before and for which there is a PTS parsing directive.
Please advise, thanks in advance,
Jesse
Comment