Thank you for testing. After this email I also checked again:
* with the old busy-wait loop, there are three threads, and one is
always close to 100% (I think that is the one you mean);
* using either of select() or nanosleep() to replace the delay_loop()
reduces the number of threads to 2 (the usage is still quite high,
between 80% and 90%).
I will tidy the patch up, in earlier tests using nanosleep() had
in addition the best resolution.
Gerrit
Quoting Upakul Barkakaty:
| Hi Gerrit,
|
| Thanks a lot. This patch has really helped.
|
| --
| Regards,
| Upakul Barkakaty
|
| On 5/2/08, Gerrit Renker <[EMAIL PROTECTED]> wrote:
|
| Upakul,
|
| thank you for testing. So it seems the problem is not in this corner. I
| also recall comparing the performance of iperf 2.0.4 against 2.0.2 with
| that patch - Jon has added some condition variables, which seem to have
| a similar effect (testing with 2.0.4 also gave modest CPU usage).
|
| With regard to the delay loop, the high CPU consumption seems clear
| since delay_loop() constantly calls gettimeofday(), i.e. issueing the
| same system call over and over again in a busy-wait loop. Which agrees
| with your analysis.
|
| I have had problems with this, too, but in a different corner: when
| measuring the actual times, delay_loop() sometimes added something like
| 50 milliseconds at random times, which seems like a quantum for a
| context switch.
|
| It got much better when replacing the busy-wait loop with a call to the
| Posix function nanosleep(), since this uses hrtimers internally and
| blocks signals.
|
| Although the patch was initially not intended to reduce CPU usage, I
| could well imagine that it does since removes the busy-wait loop.
|
| If you have a moment of time, could you check out whether this makes a
| difference -- it is in the repository, on
|
|
https://sourceforge.net/tracker/index.php?func=detail&aid=1940009&group_id=128336&atid=711373
|
| Best regards
|
| Gerrit
|
| Quoting Upakul Barkakaty:
| | Hi Gerrit,
| |
| | Thanks a lot for your reply. I indeed tried out the patch but it
| did not
| | make any difference. I am still seeing 0% CPU Idle.
| |
| | It looks to me as if the delay_loop() function in the file
| Client.cpp is
| | holding the processor in the kernel space while adjusting the
| thoughput
| | speeds, resulting in 0% CPU Idle. On trying out replacing
| delay_loop() by
| | usleep() function, Idle MIPS were seen to be available. Or perhaps
| is it
| | the case that iperf should be used only for throughput measurement
| and
| | might not be so appropriate for measuring the cpu utilization?
| |
| | --
| | Regards,
| | Upakul Barkakaty
| |
| | On 5/2/08, Gerrit Renker <[EMAIL PROTECTED]> wrote:
| |
| | Dear Upakul,
| |
| | if it is not too much of a bother, can you please check if the
| attached
| | patch fixes the CPU usage problem?
| |
| | It is a port of Ingo Molnar's CPU usage fix - we have used that
| patch in
| | iperf with great benefit (the CPU usage went down to very modest
| | values).
| |
| | Regards
| | Gerrit
| |
| | Quoting Upakul Barkakaty:
| | | Hi Jon,
| | |
| | | I have upgraded to Iperf-v2.0.4. But unfortunately, even
| with this
| | version
| | | I observed that the Iperf client was consuming all the CPU
| MIPS
| | even if it
| | | was running at 1 Mbps.
|
| The University of Aberdeen is a charity registered in Scotland, No
| SC013683.
|
| The University of Aberdeen is a charity registered in Scotland, No
| SC013683.
--
The University of Aberdeen is a charity registered in Scotland, No SC013683.
-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference
Don't miss this year's exciting event. There's still time to save $100.
Use priority code J8TL2D2.
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
Iperf-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/iperf-users