Messages in this thread | | | Subject | Re: CPU scheduler weirdness? | From | Peter Zijlstra <> | Date | Wed, 19 Aug 2009 09:04:15 +0200 |
| |
On Tue, 2009-08-18 at 21:49 +0200, Marton Balint wrote:
> In the meantime, I was able to create a tiny C program which always > succesfully reproduces the bug. It's basically an endless loop which does > not stop while the process is running on the last CPU core. The program > creates multiple instances of itself, to be able to keep all of the CPU > cores busy. After 1 second, the processes running on other than the last > CPU core die, the processes running on the last CPU core remain stuck > there... > > I tested it on my dual core system, if someone could test it on a quad > core and report back that would probably be useful. > > Usage: ./schedtest <number of CPU cores> > > And don't forget to kill the stuck processes after using the program! :)
So what's the bug? Sure one task will stay on the cpu, and because there is no contention it doesn't get migrated, and therefore won't quit, how's that a problem?
If you start a bunch of loops (enough to fill all cpus) you'll find it'll get migrated and die pretty quickly.
Those same loops `while :; do :; done &` get spread around the available cores just fine, still no bug.
btw: sysconf(_SC_NPROCESSORS_ONLN);
| |