Re: Hyperthreading problem with IRQ handling and scheduling
Sven Groot put forth on 3/3/2011 11:28 PM:
Hello Sven,
> I am using a cluster of machines running Debian 5.0.4, kernel
> 2.6.26-2-amd64. These machines have dual Intel Xeon E5530 2.4GHz CPUs, which
> are quad-core CPUs with hyperthreading. So that means each machine has 8
> physical CPUs and a total of 16 logical CPUs.
> I have run into an apparent issue with the kernel scheduler. Under the
> circumstances described below, the scheduler will run two tasks on two
> logical CPUs of the same physical CPU, even if all the remaining physical
> CPUs are idle. This obviously causes a large slowdown for these tasks.
<snip>
Two things.
First, you're running Debian kernel 2.6.26 which, IIRC, doesn't have all
the scheduler patches required for both mutli-core and HT support, or
simply doesn't have them all enabled, which is the cause of your
problem. The following must all be set. You need a new kernel.
CONFIG_SCHED_SMT
CONFIG_SCHED_MC
1. Install the latest Debian prepackaged lenny-backport kernel on each
cluster node: linux-image-2.6.32-bpo.5-amd64_2.6.32-30~bpo50+1_i386.deb
http://backports.debian.org/Instructions/
If the nodes don't have direct internet access, preventing installation
via apt-get or aptitude, then download the .deb package, copy it to each
machine via scp/ftp/nfs/etc, and install it via dpkg:
dpkg -i
/full/path/to/linux-image-2.6.32-bpo.5-amd64_2.6.32-30~bpo50+1_i386.deb
I've never installed a backport package directly via dpkg. You may need
an additional switch or two. Others here can answer this.
2. Download the 2.6.37.2 vanilla source from:
http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.37.2.tar.bz2
Follow the build instructions here:
http://kernel-handbook.alioth.debian.org/ch-common-tasks.html
to create a kernel image with the options and modules you need, and none
you don't, and to create a kernel deb package. Copy the .deb to each
cluster node and perform:
dpkg -i /full/path/to/linux-image-2.6.37.2-custom.1.0_amd64.deb
Second, you may want to ask about this on lkml as well, as far more
expertise in this area of the kernel resides there. Installing a new
kernel will solve the bulk of your problem. To fine tune the
performance per core/thread afterward you'll need assistance from kernel
devs on lkml.
Hope this points you in the right direction.
--
Stan
Reply to: