Posts by Phil Karn

1) Message boards : Questions and problems : BOINC slows MacOSX CPU scheduling? (Message 23219)
Posted 21 Feb 2009 by Phil Karn
Post:
I've been wondering why my file transfers from my Mac Pro to a local Linux server were so slow, only about 1-2 megabytes/sec (they're connected with GigE).

I took a packet trace and ran it through tcptrace to produce a TCP time sequence plot. I could see that there was a burst of traffic every 200 ms or so, then a long pause in which the Mac simply didn't send anything, then another burst, and so on. No dropped packets, no timeouts, no protocol violations. The Mac simply wasn't sending anything for 200 ms at a time.

On a hunch I suspended BOINC, which was running four jobs (this is a 4-CPU Mac Pro). My throughput immediately jumped to over 10 MB/sec. Ah ha!

Now I need to know how BOINC interacts with the Mac OSX scheduler. I had thought that as lowest priority tasks, everything associated with BOINC would nearly immediately relinquish the CPU to any higher priority task that becomes ready to run. That indeed is the only reason any of us agree to run BOINC. But it seemed that BOINC, or something in the kernel running on its behalf, held onto all four CPUs for 200 milliseconds before letting at least one of them go to service my higher priority disk and network I/O.

There should have been very little CPU contention, because even at full speed (with BOINC off) my transfers took only a few percent of the CPU at user and system level. BOINC was also doing no disk I/O, so there should have been no disk contention either.

Any ideas?

2) Message boards : BOINC client : Efficiency of individual projects for individual CPUs? (Message 12539)
Posted 17 Sep 2007 by Phil Karn
Post:
I have a diverse collection of CPUs (PowerPC G4 and single/dual CPU G5, various Pentium 3's and 4's, AMD64, Core 2 Duo, etc). These machines have various strengths and weaknesses, e.g., one might be unusually good or bad at floating point, others have various generations of SIMD instructions, different cache sizes, etc.

I'd really like to see each project provide a list of "preferred" and "non-preferred" CPUs to better help me decide which projects to run on which CPUs.

Has anything like this been done or proposed? Thanks.




Copyright © 2024 University of California.
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation.