- 3 Ways to check CPU Cores in Linux
- Methods to get number of CPU cores in Linux
- Understanding CPU cores in Linux
- Understanding CPU cores and hyper threading in Linux
- Understanding threads per core in Linux
- Check CPU cores with lscpu command in Linux
- Check CPU cores from /proc/cpuinfo File in Linux
- Check CPU cores with dmidecode command in Linux
- How to Get the Number of Processors/Cores in Linux
- Importance of Knowing the Number of Processors/Cores in Linux
- 1. Find Linux CPU Processors/Cores Using /proc/cpuinfo File
- 2. Get Linux CPU Processors/Cores Using lscpu Command
- 3. Check Linux CPU Processors/Cores Using top Command
- 4. List Linux CPU Processors/Cores Using nproc Command
- 5. List Linux CPU Processors/Cores Using getconf Command
- 6. Find Linux CPU Processors/Cores Using dmidecode Command
3 Ways to check CPU Cores in Linux
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
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 is a Cloud & DevOps Enthusiast. He has years of experience as a Linux engineer. He had working experience in AMD, EMC. He likes Linux, Python, bash, and more. He is a technical blogger and a Software Engineer. He enjoys sharing his learning and contributing to open-source.
howtouselinux.com is dedicated to providing comprehensive information on using Linux.
We hope you find our site helpful and informative.
How to Get the Number of Processors/Cores in Linux
It is a no-brainer that the various Linux operating system distributions that provide irreplaceable performance prowess in a development or production environment will lose their performance identity in the absence of processors/cores.
These processors/cores are hardware entities of a computer system responsible for computing how fast the Linux operating system and its hosted programs complete user/system assigned tasks.
The evolution/innovation of various computer hardware infrastructures has led to the production of modern CPUs whose processors/cores embrace features like hyper-threading and multiple cores.
Importance of Knowing the Number of Processors/Cores in Linux
When working under an open-source operating system distribution like Linux, performance is everything. You need both the hardware and software components of your computing system to be at their best.
Therefore, knowing the number of processors/cores on the machine that powers your Linux operating system helps gauge how best your OS can perform under specific/customizable computing conditions.
For instance, you might be able to understand why multiple cores/hyper-threading CPUs have a speed and performance advantage over single-Core CPUs without hyper-threading.
1. Find Linux CPU Processors/Cores Using /proc/cpuinfo File
Whether on a remote Linux server or desktop Linux system, this method will query the /proc/cpuinfo file for lines matching the keyword processor via grep command which passes the processor keyword to a wc (word count) function that sums it up for display.
$ cat /proc/cpuinfo | grep processor | wc -l 4
A more detailed output of the above file will look like the following:
2. Get Linux CPU Processors/Cores Using lscpu Command
To understand what lscpu command does, we first need to run it:
The lscpu command also highlights the CPU’s Architecture, op-mode(s), address sizes, thread(s) per core, core(s) per socket, family, model name, etc.
3. Check Linux CPU Processors/Cores Using top Command
Key in the command (top) on your Linux system and hit [Enter] on your keyboard. You should get a detailed output on what is going on with your processors/cores.
4. List Linux CPU Processors/Cores Using nproc Command
This approach is straightforward and will only output the available CPUs on your Linux system.
$ nproc --all 4
An alternative approach to execute this command is as follows:
$ echo "Threads/core: $(nproc --all)"
5. List Linux CPU Processors/Cores Using getconf Command
This command is straightforward and can be executed in the following manner:
$ getconf _NPROCESSORS_ONLN 4
An alternative approach to executing this command is as follows:
$ echo "Number of CPU/cores online at $HOSTNAME: $(getconf _NPROCESSORS_ONLN)"
6. Find Linux CPU Processors/Cores Using dmidecode Command
The dmidecodeis command is used to get the Linux system’s hardware related information such as Processor, RAM, BIOS detail, Memory, Serial numbers etc.
We can alternatively modify the execution of the above command to provide us with CPU details like version, core count, core enabled, and thread count.
$ sudo dmidecode -t 4 | egrep -i 'core (count|enabled)|thread count|Version'
The above discussed inbuilt Linux commands cover everything there is to know about the number of processors/cores in your Linux system and much more.