[netperf-talk] Re: Difficultly in understanding the CPU utilization results for UDP stream test

Rick Jones rick.jones2 at hp.com
Mon Jul 2 17:33:44 PDT 2007


Brijraj Vaghani wrote:
> Hi,
> 
> I am trying to measure the CPU consumption of the IP/UDP stack of my
> linux machine. I read up the manual of Netperf and thought it can be
> useful to me. I installed netperf on my machine, ran netserver
> explicitly and ran the basic sanity test. All seemed to be working
> fine till this point. Then I tried measuring the CPU utilization of
> the IP/UDP stack using the following command line
> netperf -t UDP_STREAM -c
> which generated the following result
> Socket Message  Elapsed      Messages                          CPU      
> Service
> Size    Size         Time         Okay    Errors   Throughput   Util     
> Demand
> bytes   bytes        secs            #        #         10^6bits/sec %
> SU     us/KB
> 
> 110592   65507   10.00        235223      0    12325.4         99.90    inf
> 110592           10.00           0               0.0     -1.00        
> -1.000

I'm guessing you trimmed a bit of the beginning of the output - not a 
big deal, just checking.

Anyway, the above suggests that the sending side completely overran the 
receiver, or that the message size was too large - which is more likely 
because normally at least _one_ message would make it.  It also suggests 
the test consumed all the available CPU on the sending system.

> After going through the mailing list archives, I figures that this
> might be a problem with flow control. So I reconfigured netperf and
> made a clean build.
> Then I carried out the same test using the following command line argument
> netperf -t UDP_STREAM -c, which generated the following result
> Socket    Message  Elapsed     Messages                        CPU      
> Service
> Size       Size         Time         Okay Errors   Throughput   Util
>     Demand
> bytes      bytes        secs            #      #        10^6bits/sec %
> SU     us/KB
> 110592   65507      10.00           1      0        0.1
> 42.40    inf
> 110592                  10.00           0               0.0
>   -1.00    -1.000

Re configured netperf how exactly - with --enable-intervals, or 
something else?

> and since I am more interested in finding the performance of the
> IP/UDP stack on the receiver side, I ran the following script as well
> netperf -b 1 -w 10000  -t UDP_STREAM -C, which generated the following 
> result
> 
> Socket    Message  Elapsed      Messages                         CPU
>   Service
> Size       Size         Time         Okay Errors    Throughput    Util
>    Demand
> bytes      bytes       secs            #      #         10^6bits/sec
> % SU     us/KB
> 110592   65507      10.01           1      0        0.1
> -1.00    -1.000
> 110592                  10.01           0               0.0
>    53.51    inf

-b 1 means there should be one send call in each burst, and that bursts 
should happen once every 10000 milliseconds, so yes, that first part of 
it looks correct.  (well, without going too deep into the math)

> Do these numbers look right. I looked at the example results in the
> manual and their format seems to be different than that of what I got.
> For instance without using the throughput numbers show up in both the
> client and server in the examples where I get them only for the
> client.
> Also in the last set of results, is the following interpretation of
> the results correct " The IP/UDP stack takes up 53.51% of the CPU to
> receive UDP data at 0.1Mbps ?

I'd double check that with top.  It does look rather off.  Which 
rev/distro of Linux is this?

As for why there are still no messages recorded as being received, I 
would guess that 65507 was still just a little too large for the receive 
side.  You could try a test-specific -m option to use a different size.

happy benchmarking,

rick jones

> Thanks in advance for your help.
> 
> Brijraj



More information about the netperf-talk mailing list