CPU Count

Hi,

I am observing high load average on RHEL5 server and need to check the number of core processors available on the box to give me a bigger picture on whether or not I should be worried.

I have always checked the physical count quite simply.....

# grep 'physical id' /proc/cpuinfo | sort | uniq | wc -l
1

....however can anyone confirm that the below output truely represents the actual number of core processors available on my server?

# cat /proc/cpuinfo | grep processor | awk '{a++} END {print a}'
8

R,
D.

You get a useless use of cat award. And if you're using awk, why bother using grep?

I'd grep for something a little less generic than 'processor'. That might turn up in a CPU name or something potentially. And pin it to the beginning of the line where it should always be found.

 awk '/^cpu MHz/ { a++ } END { print a }' /proc/cpuinfo

I am aware of that so (without printing the entire cpuinfo) "processor : 7" equates to 8 core CPU's? - Just looking for a consensus/confirmation.

It could mean one 8-core CPU, a pair of 4-core CPU's, four 2-core CPU's, or 8 1-core CPU's. Cores are counted individually. If you care which belongs in what chip, that's the physical ID.

If you just care about the number of cores, counting the line match like that will work fine.

In fact, you don't need to even match anything. Just count the number of records, splitting on blank lines, by setting RS to "". Then when awk runs out of input, print NR, the number of records. On my dual-core system:

$ awk -v RS="" 'END { print NR }' /proc/cpuinfo
2
$

Yip, simply looking for the number of cores which according to this is 8. Thing is though it does not correspond to what the hardware mgmt interface sayes?

# hpasmcli
HP management CLI for Linux (v2.0)
Copyright 2008 Hewlett-Packard Development Group, L.P.
hpasmcli> show server
System : ProLiant BL460c G6
Serial No. : GB8033X7FV
ROM version : I24 03/30/2010
iLo present : Yes
Embedded NICs : 2
NIC1 MAC: 78:e7:d1:65:3a:60
NIC2 MAC: 78:e7:d1:65:3a:64
Processor: 0
Name : Intel Xeon
Stepping : 5
Speed : 2933 MHz
Bus : 133 MHz
Core : 4
Thread : 8
Socket : 1
Level2 Cache : 1024 KBytes
Status : Ok
Processor total : 1

R,
D

If you'd bothered posting your /proc/cpuinfo, I might be able to explain, but at present I can only guess.

Do your CPU's have hyperthreading? That will show up as double the number of cores in Linux.

Ok, cpuinfo attached...

hpasmcli (and other cli commands) should be considered relevant to detail HW configuration using Proliant support pack on that HW.

So that's one CPU with 4 cores, 8 threads.

Regards
Peasant.

1 Like
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx rdtscp lm constant_tsc ida nonstop_tsc pni monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr sse4_1 sse4_2 popcnt lahf_lm [8]
bogomips        : 5867.30

These CPU's definitely have hyperthreading. So there's 4 cores with hyperthreading, not 8 individual cores.

1 Like

Great, thanks.

Also, what you may want to do is this:

cat /proc/cpuinfo | egrep 'core id|cpu cores|physical id'

The reason for this is that while the CPU may have hyperthreading on it, you can always disable some CPU cores with the maxcpus=$NUM on the kernel line in grub.

This shell string will allow you to see how many physical CPU packages exist (physical ID), how many cores are active (counting core IDs in use) and how many cores each package provides (cpu cores).

Do not, however, pipe this to word count, as you will get an incorrect number unless you sort it uniquely or pass it to uniq.

I hope that makes sense.

1 Like