Is there a patch for for version 2.0.4? Tried to apply the patch (both in Linux and Solaris using GNU patch) from here http://kerneltrap.org/Linux/Finding_Bugs_With_CFS
iqb...@ghar-iqbala:~/src/iperf-2.0.4$ patch -p1 < ../iperf-cpu-usage-fix-patch patching file compat/Thread.c Hunk #1 FAILED at 405. 1 out of 1 hunk FAILED -- saving rejects to file compat/Thread.c.rej patching file src/Reporter.c Hunk #1 succeeded at 113 with fuzz 2 (offset 2 lines). Hunk #2 succeeded at 341 (offset 2 lines). Hunk #3 succeeded at 349 with fuzz 1 (offset 2 lines). Hunk #4 succeeded at 568 (offset 14 lines). Hunk #5 FAILED at 591. 1 out of 5 hunks FAILED -- saving rejects to file src/Reporter.c.rej patching file src/main.cpp Hunk #2 succeeded at 143 (offset 1 line). Linux: ubuntu 8.10 strace shows it is waiting # ./src/iperf -s -D -w 256k Running Iperf Server as a daemon The Iperf daemon process ID : 15812 # strace -p 15812 Process 15812 attached - interrupt to quit accept(3, {sa_family=AF_INET, sin_port=htons(35687), sin_addr=inet_addr("127.0.0.1")}, [16]) = 0 getsockname(0, {sa_family=AF_INET, sin_port=htons(5001), sin_addr=inet_addr("127.0.0.1")}, [16]) = 0 recv(0, "\0\0\0\0\0\0\0\1\0\0\23\211\0\0\0\0\0\0\0\0\377\377\374"..., 24, 0) = 24 mmap2(NULL, 8392704, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d22000 mprotect(0xb6d22000, 4096, PROT_NONE) = 0 clone(child_stack=0xb75224b4, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0xb7522bd8, {entry_number:6, base_addr:0xb7522b90, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}, child_tidptr=0xb7522bd8) = 15829 accept(3, Solaris 10: # /usr/local/bin/iperf -s -D -w 256k # pstack 29619 29619: /usr/local/bin/iperf -s -D -w 256k ff0457b0 accept (3, 32c00, 32d00, 1) 00015e2c _ZN8Listener3RunEv (30290, 2f990, 0, 2f800, ffffffff, 30890) + a4 00014e94 listener_spawn (2fd58, 0, ff073700, 0, feed0200, 1) + 60 0001befc thread_run_wrapper (2fd58, fee7c000, 0, 0, 1be20, 1) + dc ff045238 _lwp_start (0, 0, 0, 0, 0, 0) (now run the iperf client to do a test and at completion it is now yeilding) # pstack 29619 29619: /usr/local/bin/iperf -s -D -w 256k ----------------- lwp# 2 / thread# 2 -------------------- ff0457b0 accept (3, 33410, 33510, 1) 00015e2c _ZN8Listener3RunEv (30290, 2f990, 0, 2f800, ffffffff, 30890) + a4 00014e94 listener_spawn (2fd58, 0, ff073700, 0, feed0200, 1) + 60 0001befc thread_run_wrapper (2fd58, fee7c000, 0, 0, 1be20, 1) + dc ff045238 _lwp_start (0, 0, 0, 0, 0, 0) ----------------- lwp# 4 / thread# 4 -------------------- ff045350 lwp_yield (0, 0, ff073700, 0, feed0a00, 0) + 8 00017774 EndReport (36040, 32b88, 0, 0, 0, ff075380) + 28 00014edc server_spawn (32b88, 0, 0, 0, feed0a00, 1) + 18 0001bec4 thread_run_wrapper (32b88, fed7c000, 0, 0, 1be20, 1) + a4 ff045238 _lwp_start (0, 0, 0, 0, 0, 0) Both Solaris and Linux shows CPU usage to 90% + even there is no iperf test going on anymore On Solaris I did a dtrace probe and got similar data # dtrace -n 'syscall:::entry {...@[execname] = count();} tick-30s {exit(0);}' dtrace: description 'syscall:::entry ' matched 232 probes CPU ID FUNCTION:NAME 1 51420 :tick-30s [..] iperf 8999610 ouch! 8999610 system calls in 30 secs even though there is no iperf test is going on now. iperf gone mad!! Ok, lets find out what is iperf doing by tracing its pid # dtrace -n 'syscall:::entry /pid == $target/ {...@[probefunc] = count();} tick-30s {exit(0);}' -p 29995 dtrace: description 'syscall:::entry ' matched 232 probes CPU ID FUNCTION:NAME 0 51420 :tick-30s yield 7519587 It yielded (??) 7519587 times in 30 secs.. wow!! Now probing the usermode stack to see what yeild is doing (root)@ftp0:~$ dtrace -n 'syscall::yield:entry /pid == $target/ {...@[ustack()] = count();} tick-30s {exit(0);}' -p 29995 dtrace: description 'syscall::yield:entry ' matched 2 probes CPU ID FUNCTION:NAME 0 51420 :tick-30s libc.so.1`lwp_yield+0x4 iperf`EndReport+0x28 iperf`server_spawn+0x18 iperf`thread_run_wrapper+0xa4 libc.so.1`_lwp_start 2931219 in 30 seconds it 2931219 times!! All these functions were touched by the patch to fix (not sure if that fixed it) version 2.0.2 maybe?! -- Asif Iqbal PGP Key: 0xE62693C5 KeyServer: pgp.mit.edu ------------------------------------------------------------------------------ _______________________________________________ Iperf-users mailing list Iperf-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/iperf-users