2

I have a Dell server with two Intel Xeon E5645 cpus, each cpu has 6 cores, and each core is hyperthreaded (i.e. should be equivalent to two virtual cores). I installed CentOS 6.2 on this server and it seems to detect only 12 cores (although there should be 24 virtual cores altogether).

When I look at /proc/cpuinfo I get for each cpu:

cpu cores: 6
siblings: 6

Which seems to indicate that number of cores equals number of virtual cores, or hyperthreading not detected/enabled.

When I run dmidecode I can see that HT flag is turned on and I do see the following, which seem to indicate that the BIOS is configured correctly for hyperthreading.

Core Count: 6
Core Enabled: 6
Thread Count: 12

Is there some configuration that I am missing in order to make Linux detect all virtual cores?

Braiam
  • 35,380
  • 25
  • 108
  • 167
Oren Mel
  • 29
  • 1
  • 3

2 Answers2

1

Did you check your BIOS settings, i.e. if hyperthreading is not turned on in your BIOS, then it is not operational.

Tom
  • 21
  • 1
  • The OP says: "When I run dmidecode I can see that HT flag is turned on and I do see the following, which seem to indicate that the BIOS is configured correctly for hyperthreading." – Renan Oct 18 '12 at 14:21
  • I checked. The BIOS settings seem okay. To the best of my understanding the relevant option is "logical processor" and it is enabled. – Oren Mel Oct 18 '12 at 14:27
0

In the Linux kernel configuration, there's an option called

CONFIG_NR_CPUS

Its description in the kernel documentation:

This allows you to specify the maximum number of CPUs which this kernel will support. The maximum supported value is 512 and the minimum value which makes sense is 2.

Check this value, and increase it if needed. Of course, you need to re-compile your kernel afterwards.

Bob
  • 330
  • 2
  • 11
  • Here are the relevant config options on my server. They all seem ok to me.CONFIG_MAXSMP=y CONFIG_NR_CPUS=4096 CONFIG_SCHED_SMT=y – Oren Mel Oct 18 '12 at 14:24