Take the 2-minute tour ×
Server Fault is a question and answer site for system and network administrators. It's 100% free, no registration required.

I have 8 logical CPUs in my linux box. (As seen from /proc/cpuinfo). When I look in

/sys/kernel/debug/tracing/per_cpu

it shows 32 CPUs.

Why the difference? If it matters, I have hyperthreading disabled in the BIOS.

share|improve this question
    
The contents of both would be helpful, I'm not sure that John Edward or Miss Cleo troll serverfault. –  yoonix Mar 4 at 20:19
    
Well the first 8 CPUs show what looks like valid data. The remaining just show a preamble and nothing else. I am guessing that the kernel creates buffers for atleast 32 cpus by default. Not a problem, just confusing when you see it for the first time –  MK. Mar 4 at 21:55

2 Answers 2

There's a separate listing for each core. I'm guessing your system has 8 logical CPU's with 4 cores each.

share|improve this answer
    
No, I am pretty sure I have just 8 cores. –  MK. Mar 4 at 21:55
    
I misread the question--sorry about that. –  Jeremy Villegas Mar 4 at 22:44

Physical cores are just that, physical cores within the CPU. Logical cores are the abilities of a single core to do 2 or more things simultaneously. This grew out of the early Pentium 4 CPUs ability to do what was termed Hyper Threading (HTT).

It was a bit of a game that was being played where sub components of the core weren't being used for certain types of instructions while, another long running instruction might have been being executed. So the CPU could in effect work on 2 things simultaneously.

Newer cores are more full-fledged CPUs so they're working on multiple things simultaneously, but they aren't true CPUs as the physical cores are. You can read more about the limitations of the hyperthreading functionality vs. the physical capabilities of the core here on tomshardware in this article titled: Intel Core i5 And Core i7: Intel’s Mainstream Magnum Opus.

You can see the breakdown of your box using the lscpu command:

$ lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
CPU(s):                4
Thread(s) per core:    2
Core(s) per socket:    2
CPU socket(s):         1
NUMA node(s):          1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 37
Stepping:              5
CPU MHz:               2667.000
Virtualization:        VT-x
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              3072K
NUMA node0 CPU(s):     0-3

In the above my Intel i5 laptop has 4 "CPUs" in total

CPU(s): 4

of which there are 2 physical cores

Core(s) per socket: 2

of which each can run up to 2 threads

Thread(s) per core: 2

at the same time. These threads are the core's logical capabilities.

lstopo

You can use the tool lstopo to get an actual diagram of your system's topography, this is sometimes helpful in understanding what's significant with a CPU's architecture.

                                     ss of lstopo

"PU P#" = Processing Unit Processor #. These are processing elements within the cores of the CPU. On my laptop (Intel i5) I have 2 cores that each have 2 processing elements, for a total of 4. But in actuality I only have 2 physical cores.

If you want a further breakdown of the lstopo output take a look at my answer in this U&L Q&A titled: Interpret the output of lstopo.

References

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.