Intel® Moderncode for Parallel Architectures
Support for developing parallel programming applications on Intel® Architecture.

strange cpu physical id with redhat

lspes
Beginner
337 Views
I have a dual Xeon hp server running redhat EL (certified by hp). Hyperthreading is disabled in BIOS. The kernel is a smp in order to use correctly the dual cpu. Everythings seems looking good however I am quite disappointing about the cpu performance and the very strange thing is the cpu id.

As hyperthreading is disable the OS recognizes only two cpu (so I hope two physical cpu) but the problem is when I look to the cpu id (from cat /proc/cpuinfo), the two cpu physical id are identical !!!!!!!!!!!!!


and that 's should be only the case when the two cpu are not two physisal but two logical ...so my question is : is it a redhat bug or really a problem with cpu detection and use

Thanks for help
0 Kudos
4 Replies
jim_dempsey
Beginner
337 Views

The processors have an instruction named CPUID. This returns the manufacture name, model number and feature set (extended instruction set). The instruction does not return a CPU serial number. Therefore on dual processor (or more). You typicaly will find all processors return same CPUID.

Imagine the trouble you would have if the system had two processors, one supporting SSE3 instructions and one that does not. If the O/S switches processors for an application after the application determined that SSE3 instructions were available then the program will fail. SMP usaly requires all processors support the same instruction set.

Jim Dempsey

0 Kudos
ClayB
New Contributor I
337 Views

lspes -

What code are you using to determine the cpu physical id number?

You might want to look at Detecting Support for Hyper-Threading Technology Enabled Processors on how to identify different physical (and logical) processors.

Good luck.

-- clay
0 Kudos
lspes
Beginner
337 Views
So how I determine the cpuid.

I am running a linux smp kernel 2.4.21.37 on a dual Xeon cpu server

hyper threading is disabled in the bios. To get the cpuid, I simply cat the /proc/cpuinfo and as a result, I see that there is two activated cpu but the cpu physical ID are identical for the two cpu (ID is 0 for both)

I looks very strange to me because usually when two physical cpu are activated and hyperthreading is disabled as the two cpu are physical the cpu ID are different (I work in a laboratory with different kind of intel architecture and I have already checked that cpu physical ID are different for different physical cpu)

As a result, my first feeling is : as the two cpu as the same id, my linux operating system only activates one cpu but I have no way at this time to confirm my feeling

What I did also is to enabled on this computer the HT in that case when I cat the /proc/cpuinfo I can see 4 processor (normal situation) with two logical cpu with the ID 0 and the two last cpu with the physical ID 6

So I do not understand why when HT is swiched off, the two cpu physical ID are not 0 and 6 and are in fact 0 and 0?

Do you know a way to checked effeciently my feeling? is it a linux operating system trouble or a hardware trouble (the server is a HP proliant DL 140 equipped with two Intel Xeon processors)

Thanks
0 Kudos
ClayB
New Contributor I
337 Views
I don't have any idea why some systems show the same physical ID number for two separate processors. As you did, I checked some of my other LInux systems, but didn't see this phenomenon on any of them.
I suspect that it may be some interaction with the processor and the operating system. Someone else may be able to shed some light on why this is happening.
Have you tried using the program that is given in the paper referenced above? You may need to use some OS or coding tricks to get the application to compile and run on Linux, but this would be an alternative method for finding the physical ID numbers of processors.
--clay
0 Kudos
Reply