[netperf-talk] NetPerf issue with intervals approaching line-rate.
Rick Jones
rick.jones2 at hp.com
Thu Jul 14 10:16:32 PDT 2011
On 07/13/2011 08:34 AM, Moosa Baransi wrote:
> Hi Raj,
>
> My name is Moosa and I am working with NetPerf 2.4.5. I encountered a
> problem which I can't find a solution for it in the different forums.
Then we should include one or more forums to improve life for the next
guy. So, I will cc netperf-talk and include a more informative subject
header.
> _The problem description_:
>
> I'm working on a board which has a max UDP throughput of about 10
> Mbps. I verified that with NetPerf using the command:
>
>
> *netperf -H 192.168.1.106 -D 2 -l 20 -t UDP_STREAM -fm -- -m1472
> -s64k -S64k &*
>
>
> I would like to use the burst option to measure how it impacts the
> CPU utilization. I am running the following command:
>
>
> *netperf -H 192.168.1.106 -D 2 -l 20 -t UDP_STREAM -b5 -w0 -fm --
> -m1472 -s64k -S64k &*
>
>
> The issue that if I change the burst to anything close to 10Mbps
> (*-b9* or above), I get the following error:
>
>
> *netperf: receive_response: no response received. errno 4 counter -1.*
>
>
> The host and the server are running NetPerf 2.4.5.
>
> I do not care if I have packet loss or retries, I just want the whole
> business to go on and not to hang in the middle.
>
> I will appreciate of you can help me with this.
I'm guessing that when you get the error, it happens well before the
requested test length has passed?
Unless one uses --enable-spin to cause netperf to sit and spin for the
interval, which I suspect you do not wish to do, the interval is
implemented with the interval timer. Every interval time units a signal
is generated. If you look at the code for INTERVALS_WAIT you will see
it makes a sigsuspend() call. The idea is that netperf is in
sigsuspend() before the signal fires.
Now, on some platforms, netperf knows how to check what system call was
interrupted by the signal, and when it is in the middle of an interval
it will ask that the system call be restarted if it isn't sigsuspend().
However, on other platforms netperf does not know how to do that.
(enhancement patches would be most welcome :) So, if it takes longer
than the interval to get through the burst, there is a very real chance
the signal will fire during the send()/sendto() call, which netperf will
mis-interpret as the end of test indication. On those platforms, it is
necessary to ensure that the burst interval is longer than the length of
time it takes to send the burst.
happy benchmarking,
rick jones
More information about the netperf-talk
mailing list