find the number of CPU cores on Linux

Multi-core CPU processors are common nowadays, including dual-core processors (e.g., Intel Core Duo), quad-core processors (e.g., Intel Core i5), and hexa-core processors (e.g., AMD Phenom II X6). Also, many server-grade physical machines are equipped with more than one CPU processor.

To find the number of physical CPUs:

$ cat /proc/cpuinfo | grep “^physical id” | sort | uniq | wc -l

To find the number of cores per CPU:

$ cat /proc/cpuinfo | grep “^cpu cores” | uniq
cpu cores       : 4

The total number of processors available is the number of physical CPUs multiplied by the number of cores per CPU.

To find the total number of processors:

$ cat /proc/cpuinfo | grep “^processor” | wc -l

Note that Intel Xeon 5600 series processors have Intel Hyper-Threading capability. So each core shows up as “two” processors in Linux, and thus the total processor count seen by Linux is 16 (= 2 x 4 x 2).