howtouselinux

3 Ways to check CPU Cores in Linux

Table of Contents

In this blog post, we will discuss 3 different ways to check the number of cpu cores in Linux. This is useful information to have if you are trying to optimize your system for performance.

Each method has its own advantages and disadvantages, so be sure to read through all of them before choosing the one that is best for you. Let’s get started!

Methods to get number of CPU cores in Linux

The following commands can be used to check the number of CPU cores in Linux.

  • cat /proc/cpuinfo
  • lscpu
  • sudo dmidecode -t 4
  • nproc
  • hwinfo
  • getconf _NPROCESSORS_ONLN

 

Understanding CPU cores in Linux

When you are trying to optimize your system for performance, it is important to understand the concept of CPU cores. In Linux, a CPU core is essentially a processor.

This means that, if you have multiple CPU cores, your system can process multiple tasks at the same time. This can result in a significant increase in performance.

But the number of CPU cores is not the same as the number of processors.

Understanding CPU cores and hyper threading in Linux

Hyper threading is a feature that was first introduced in Intel processors. It allows a single CPU core to process multiple tasks at the same time by creating virtual cores.

This can be useful if you are trying to optimize your system for performance, as it can increase the number of tasks that can be processed simultaneously.

However, it is important to note that not all processors support hyper threading.

Understanding threads per core in Linux

In Linux, threads per core is a way of measuring the number of threads that can be processed simultaneously on a single CPU core. This is different than the number of CPU cores, as it measures the number of tasks that can be processed at the same time. There are 2 threads per core in most of the current CPU architecture.

  • The number of CPU cores = sockets * Core per socket
  • The number of vCPU = CPU cores * threads per core

 

Check CPU cores with lscpu command in Linux

The best way to check the number of CPU cores in Linux is using the lscpu command. Open the terminal and run this command lscpu. It gives you a lot of information about cpu, including the number of cores, the vendor_id, model name etc.


echo "Cores = $(( $(lscpu | awk '/^Socket\(s\)/{ print $2 }') * $(lscpu | awk '/^Core\(s\) per socket/{ print $4 }') ))"

 

It will list the number of CPU cores on your system.

The number of CPU cores = sockets * Core per socket


sockets=$(lscpu | awk '/^Socket\(s\)/{ print $2 }')
Core per socket=$(lscpu | awk '/^Core\(s\) per socket/{ print $4 }')

 

We can use this command to get the number of CPU cores.


echo "Cores = $(( $(lscpu | awk '/^Socket\(s\)/{ print $2 }') * $(lscpu | awk '/^Core\(s\) per socket/{ print $4 }') ))"

The lscpu command displays either one single CPU family or all families detected by querying sysfs (on Linux kernels with CONFIG_SYSFS). It supports Intel x86, AMD Family 16h/18h, and ARM processors.

In the following examples, the number of CPU cores is 1 * 2=2

$ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 4
On-line CPU(s) list: 0-3
Thread(s) per core: 2
Core(s) per socket: 2
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 85

From this example, we can get that the number of CPU cores are 2 * 8 =16


$ lscpu | grep -E '^Thread|^Core|^Socket|^CPU\('
CPU(s): 32
Thread(s) per core: 2
Core(s) per socket: 8
Socket(s): 2

Check CPU cores from /proc/cpuinfo File in Linux

Another way to check the number of cpu cores in Linux is by looking at the /proc/cpuinfo file. Open the terminal and run this command: cat /proc/cpuinfo. It will list a lot of information about the cpu, including the number of CPU cores on your system.

This file also contains CPU vendor_id, model name etc. To view it, just type the following command into your terminal:

cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 85
model name : Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
stepping : 7
microcode : 0x500320a
cpu MHz : 3109.590
cache size : 36608 KB
physical id : 0

check the physical number of CPU: 

cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc -l

check the number of vCPU: 

cat /proc/cpuinfo |grep "processor"|wc -l 

Check CPU cores with dmidecode command in Linux

dmidecode command can be used to check the number of cpu cores in Linux. It is a command-line tool to retrieve device data that the Linux kernel exposes through MCU. To run it, just type the following command into your terminal:


$ dmidecode -t processor | grep "Core Count"

 

This command is very useful if you want to get more information about your hardware info, such as CPU or memory.


dmidecode --type processor
dmidecode --type memory

 

As you can see, there are three different ways to check the number of cpu cores in Linux. Each method has its own advantages and disadvantages, so be sure to choose the one that is best for you.

If you want a simple way to check the number of cpu cores, then I recommend using the /proc/cpuinfo file. If you want more information about your system’s cpu, then I recommend using the lscpu command. Whichever method you choose, be sure to use it to optimize your system for performance. Thanks for reading

David Cao
David Cao

Hey there! I am David, a Cloud & DevOps Enthusiast and 18 years of experience as a Linux engineer. I work with AWS, Git & GitHub, Linux, Python, Ansible, and Bash. I am a technical blogger and a Software Engineer, enjoy sharing my learning and contributing to open-source.