In this blog post, we will discuss 3 different ways to check the number of CPU cores in Linux.
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!
Table of Contents
Methods to get the 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
Get Your Free Linux training!
Join our free Linux training and discover the power of open-source technology. Enhance your skills and boost your career! Learn Linux for Free!Understanding CPU cores in Linux
Imagine a CPU core as an individual processing unit within the larger CPU. Each core can handle instructions and execute tasks independently.
So, a dual-core CPU has two processing units, a quad-core CPU has four, and so on. The more cores you have, the more tasks your system can potentially handle simultaneously.
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.
The number of cores a CPU can support varies widely and depends on the design and manufacturing of the CPU.
As of my last knowledge update in 2024, CPUs on the market can range from single-core to 64 cores or more. For example:
- CPUs for personal computers (PCs) and workstations typically have 2 to 18 cores.
- Server CPUs can have dozens or even hundreds of cores.
- CPUs for mobile devices and embedded systems usually have 2 to 8 cores
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.
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 }')
corepersocket=$(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, 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 cpu core:
$ grep ^"core id" /proc/cpuinfo | sort -u | wc -l
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.Thanks for reading.