Public bug reported:

To reproduce the problem:

1) Find yourself an X86_64 machine with 2 CPUs. In my case it is Feisty on 2 
AMD Opteron(tm) Processor 252. 
    uname -a reports: Linux dalburk 2.6.20-16-generic #2 SMP Thu Jun 7 19:00:28 
UTC 2007 x86_64 GNU/Linux

2) Write a program that consumes CPU cycles and does little or no I/O.
E.g

#include <stdio.h>
int main()
{
  int i, junk = 0;
  for (i = 1; i < 1000000000; ++i)
    junk += i * i + i / i;
  return junk;
}

3) Compile it (without optimization, we want it to take a noticeable
amount of time). On my machine it completes in about 20 seconds which is
enough to illustrate the problem. You might need to adjust the upper
limit in the loop to get suitable timing.

4) Start three copies of the program:
    ./a.out & ./a.out & ./a.out &

5) Check the running processes with top. I see one process consuming
close to 100% CPU on one processor, lets call that process A, and two
processes consuming about 50% CPU each on the other processor, lets call
the B and C.

6) Either wait until process A terminates or kill it. At this point one
expects the processes B and C to get one processor each, but they still
execute on the same processor getting only 50% each. (It is possible to
force them onto another processor by changing the affinity with taskset,
but that is the kernels job, isn't it?)

I've tried repeating it on the feisty Fawn x86_64 Live CD and it behaves
the same way, so it shouldn't be a problem with anything I've done after
installation. I've tried to repeat it on the Feisty Fawn i386 live CD
but the i386 version seems to handle the rebalancing correctly.

** Affects: Ubuntu
     Importance: Undecided
         Status: New

-- 
x86_64 SMP load balancing broken
https://bugs.launchpad.net/bugs/122521
You received this bug notification because you are a member of Ubuntu
Bugs, which is the bug contact for Ubuntu.

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to