How can I count the number of CPU cores?
Of course we know cat /proc/cpuinfo |grep "cpu cores"
will give an output
[root@14:47 ~]# cat /proc/cpuinfo |grep "cpu cores"
cpu cores : 2
cpu cores : 2
cpu cores : 2
cpu cores : 2
But actually I want to get the total number of cpu cores. I want the result to be
cpu cores: 8
How can I get such a result?
cpu
add a comment |
Of course we know cat /proc/cpuinfo |grep "cpu cores"
will give an output
[root@14:47 ~]# cat /proc/cpuinfo |grep "cpu cores"
cpu cores : 2
cpu cores : 2
cpu cores : 2
cpu cores : 2
But actually I want to get the total number of cpu cores. I want the result to be
cpu cores: 8
How can I get such a result?
cpu
I don't think summing those will get you the total number of cores on the system, thecpu cores
line seems to show the number of cores on the processor (socket) that particular core is on. I get output identical to your example on one dual-socket dual-core system (that has a total of 4 cores, not 8).
– ilkkachu
Jul 12 '17 at 9:57
@ilkkachu: I was also wondering about the output (see my answer below). I now think, that the four rows stem from the fact, that all 4 cores (2xphysical, 2x hyperthreading) are considered and thecpu cores: 2
line stems from the fact, that a total of 2xphysical cores are on the host machine.
– FloHe
Jul 12 '17 at 10:06
@yode Please specify which CPU you have. This simplifies the interpretation of your result. Do you expect to have 8 physical cores (with hyperthreading they could be counted as 16 virtual cores) or do you expect to have 4 physical but 8 virtual cores?cat /proc/cpuinfo
should print out the number of physical cores. But it prints out this information for each virtual core. Thus I would expect that you have a dual core CPU with hyperthreading (or how its called by non-intel processors).
– daniel.neumann
Jul 12 '17 at 11:39
Example: myIntel(R) Core(TM) i7-3740QM CPU @ 2.70GHz
has 4 physical cores and supports hyperthreading. If I printcat /proc/cpuinfo
I get 8 times the linecpu cores : 4
because I have 8 virtual cores (2 per physical core) and thiscpu cores
information is printed out once per virtual core.
– daniel.neumann
Jul 12 '17 at 11:42
And please also specify if you have one CPU (one piece of hardware) or maybe two CPUs on your mainboard.
– daniel.neumann
Jul 12 '17 at 12:09
add a comment |
Of course we know cat /proc/cpuinfo |grep "cpu cores"
will give an output
[root@14:47 ~]# cat /proc/cpuinfo |grep "cpu cores"
cpu cores : 2
cpu cores : 2
cpu cores : 2
cpu cores : 2
But actually I want to get the total number of cpu cores. I want the result to be
cpu cores: 8
How can I get such a result?
cpu
Of course we know cat /proc/cpuinfo |grep "cpu cores"
will give an output
[root@14:47 ~]# cat /proc/cpuinfo |grep "cpu cores"
cpu cores : 2
cpu cores : 2
cpu cores : 2
cpu cores : 2
But actually I want to get the total number of cpu cores. I want the result to be
cpu cores: 8
How can I get such a result?
cpu
cpu
edited Jul 12 '17 at 12:59
Community♦
1
1
asked Jul 12 '17 at 6:50
yode
4431515
4431515
I don't think summing those will get you the total number of cores on the system, thecpu cores
line seems to show the number of cores on the processor (socket) that particular core is on. I get output identical to your example on one dual-socket dual-core system (that has a total of 4 cores, not 8).
– ilkkachu
Jul 12 '17 at 9:57
@ilkkachu: I was also wondering about the output (see my answer below). I now think, that the four rows stem from the fact, that all 4 cores (2xphysical, 2x hyperthreading) are considered and thecpu cores: 2
line stems from the fact, that a total of 2xphysical cores are on the host machine.
– FloHe
Jul 12 '17 at 10:06
@yode Please specify which CPU you have. This simplifies the interpretation of your result. Do you expect to have 8 physical cores (with hyperthreading they could be counted as 16 virtual cores) or do you expect to have 4 physical but 8 virtual cores?cat /proc/cpuinfo
should print out the number of physical cores. But it prints out this information for each virtual core. Thus I would expect that you have a dual core CPU with hyperthreading (or how its called by non-intel processors).
– daniel.neumann
Jul 12 '17 at 11:39
Example: myIntel(R) Core(TM) i7-3740QM CPU @ 2.70GHz
has 4 physical cores and supports hyperthreading. If I printcat /proc/cpuinfo
I get 8 times the linecpu cores : 4
because I have 8 virtual cores (2 per physical core) and thiscpu cores
information is printed out once per virtual core.
– daniel.neumann
Jul 12 '17 at 11:42
And please also specify if you have one CPU (one piece of hardware) or maybe two CPUs on your mainboard.
– daniel.neumann
Jul 12 '17 at 12:09
add a comment |
I don't think summing those will get you the total number of cores on the system, thecpu cores
line seems to show the number of cores on the processor (socket) that particular core is on. I get output identical to your example on one dual-socket dual-core system (that has a total of 4 cores, not 8).
– ilkkachu
Jul 12 '17 at 9:57
@ilkkachu: I was also wondering about the output (see my answer below). I now think, that the four rows stem from the fact, that all 4 cores (2xphysical, 2x hyperthreading) are considered and thecpu cores: 2
line stems from the fact, that a total of 2xphysical cores are on the host machine.
– FloHe
Jul 12 '17 at 10:06
@yode Please specify which CPU you have. This simplifies the interpretation of your result. Do you expect to have 8 physical cores (with hyperthreading they could be counted as 16 virtual cores) or do you expect to have 4 physical but 8 virtual cores?cat /proc/cpuinfo
should print out the number of physical cores. But it prints out this information for each virtual core. Thus I would expect that you have a dual core CPU with hyperthreading (or how its called by non-intel processors).
– daniel.neumann
Jul 12 '17 at 11:39
Example: myIntel(R) Core(TM) i7-3740QM CPU @ 2.70GHz
has 4 physical cores and supports hyperthreading. If I printcat /proc/cpuinfo
I get 8 times the linecpu cores : 4
because I have 8 virtual cores (2 per physical core) and thiscpu cores
information is printed out once per virtual core.
– daniel.neumann
Jul 12 '17 at 11:42
And please also specify if you have one CPU (one piece of hardware) or maybe two CPUs on your mainboard.
– daniel.neumann
Jul 12 '17 at 12:09
I don't think summing those will get you the total number of cores on the system, the
cpu cores
line seems to show the number of cores on the processor (socket) that particular core is on. I get output identical to your example on one dual-socket dual-core system (that has a total of 4 cores, not 8).– ilkkachu
Jul 12 '17 at 9:57
I don't think summing those will get you the total number of cores on the system, the
cpu cores
line seems to show the number of cores on the processor (socket) that particular core is on. I get output identical to your example on one dual-socket dual-core system (that has a total of 4 cores, not 8).– ilkkachu
Jul 12 '17 at 9:57
@ilkkachu: I was also wondering about the output (see my answer below). I now think, that the four rows stem from the fact, that all 4 cores (2xphysical, 2x hyperthreading) are considered and the
cpu cores: 2
line stems from the fact, that a total of 2xphysical cores are on the host machine.– FloHe
Jul 12 '17 at 10:06
@ilkkachu: I was also wondering about the output (see my answer below). I now think, that the four rows stem from the fact, that all 4 cores (2xphysical, 2x hyperthreading) are considered and the
cpu cores: 2
line stems from the fact, that a total of 2xphysical cores are on the host machine.– FloHe
Jul 12 '17 at 10:06
@yode Please specify which CPU you have. This simplifies the interpretation of your result. Do you expect to have 8 physical cores (with hyperthreading they could be counted as 16 virtual cores) or do you expect to have 4 physical but 8 virtual cores?
cat /proc/cpuinfo
should print out the number of physical cores. But it prints out this information for each virtual core. Thus I would expect that you have a dual core CPU with hyperthreading (or how its called by non-intel processors).– daniel.neumann
Jul 12 '17 at 11:39
@yode Please specify which CPU you have. This simplifies the interpretation of your result. Do you expect to have 8 physical cores (with hyperthreading they could be counted as 16 virtual cores) or do you expect to have 4 physical but 8 virtual cores?
cat /proc/cpuinfo
should print out the number of physical cores. But it prints out this information for each virtual core. Thus I would expect that you have a dual core CPU with hyperthreading (or how its called by non-intel processors).– daniel.neumann
Jul 12 '17 at 11:39
Example: my
Intel(R) Core(TM) i7-3740QM CPU @ 2.70GHz
has 4 physical cores and supports hyperthreading. If I print cat /proc/cpuinfo
I get 8 times the line cpu cores : 4
because I have 8 virtual cores (2 per physical core) and this cpu cores
information is printed out once per virtual core.– daniel.neumann
Jul 12 '17 at 11:42
Example: my
Intel(R) Core(TM) i7-3740QM CPU @ 2.70GHz
has 4 physical cores and supports hyperthreading. If I print cat /proc/cpuinfo
I get 8 times the line cpu cores : 4
because I have 8 virtual cores (2 per physical core) and this cpu cores
information is printed out once per virtual core.– daniel.neumann
Jul 12 '17 at 11:42
And please also specify if you have one CPU (one piece of hardware) or maybe two CPUs on your mainboard.
– daniel.neumann
Jul 12 '17 at 12:09
And please also specify if you have one CPU (one piece of hardware) or maybe two CPUs on your mainboard.
– daniel.neumann
Jul 12 '17 at 12:09
add a comment |
6 Answers
6
active
oldest
votes
If you are only interested in the sum, you can also use GNU awk:
cat /proc/cpuinfo |grep "cpu cores" | awk -F: '{ num+=$2 } END{ print "cpu cores", num }'
Edit: This is the correct answer for the OP's intention to sum the numbers of the last column. However the question about finding out how many cores (physical/virtual) are on the machine is given in the other answers to the question.
Please Correct me if I am wrong , The command sums all thecpu cores
from the/proc/cpuinfo
, but the total sum doesn't translate to actual cores in the system does it ?
– sai sasanka
Jul 12 '17 at 9:30
Afaik yes. As I mentioned in my answer, I just followed what the OP asked for, i.e. summing up the 2nd column.
– FloHe
Jul 12 '17 at 9:48
1
My notebook posseses e.g. an Intel Core i5-4210M dual core processor, which thanks to Hyperthreading has a total sum of 4 virtual cores. . I think, that the four rows stem from the fact, that all 4 cores (2xphysical, 2x hyperthreading) are considered and thecpu cores: 2
line stems from the fact, that a total of 2xphysical cores are on the host machine.
– FloHe
Jul 12 '17 at 10:09
This answer answers the questionHow can I get such a result? (cpu cores:8)
but not the questionHow can I count the number of CPU cores?
. It is somehow the correct answer for the wrong question. I would suggest to include this into the answer. Otherwise some people might really think that one gets the number of cores (physical/virtual whatever) by this command.
– daniel.neumann
Jul 12 '17 at 12:01
1
awk
can do pattern matching, you rarely need bothgrep
andawk
:awk -F: '/cpu cores/ {num+=...
, also, bothgrep
andawk
can read files directly, so no eed forcat
– Eric Renouf
Jul 12 '17 at 12:40
|
show 3 more comments
In Terminal nproc
, OP: total cpu cores
1
It will give an empty output here..
– yode
Jul 12 '17 at 7:02
And I'm after a method that can process that output to get the result. :)
– yode
Jul 12 '17 at 7:08
@yode did you type the # because it's not part of the command it's meant to represent the shell prompt. If it's still not working, what os are you using?
– M4rty
Jul 12 '17 at 7:08
2
@yode dont use that #, and as your question there is only 2 cores is there in your system as i guess, not 8
– Durga
Jul 12 '17 at 7:11
Oh, sorry,it works.But it seem will give the number of CUP but not core number.See this
– yode
Jul 12 '17 at 7:12
|
show 2 more comments
Try this,
As per man lscpu
CORE The logical core number. A core can contain several CPUs.
SOCKET The logical socket number. A socket can contain several cores.
cores
as well as sockets
are physical where as CPU(s)
are logical number. So to find the number of cores your system has, do number of cores x number of sockets
A sample output of lscpu
is as follows :
Thread(s) per core: 2
Core(s) per socket: 8
Socket(s): 2
So the total number of cores: 16
The total number of CPU(s): 32
(Since number of threads
per core
is 2
)
As @Durga mentioned , the nproc
gives total number of CPUs
.
For more , refer this answer , to get interpretation of /proc/cpuinfo
refer this
I'd like to thank @Kusalananda for helping me to understand the same.
Thanks for your lesson.I'm very green on this area.And I read your answer many times.As my understand, one Intel(R) Core(TM) i7-6500U CPU @ 2.50GHz mean 1 socket,two core and four thread.So the CPU(s) is equivalent to thread?
– yode
Jul 12 '17 at 10:57
@yode If your system has1 socket
,2 cores
, and2 threads per core
, then yes you totally have4 CPU(s)
, each CPU being able to execute athread
, that counts to4 threads
– sai sasanka
Jul 12 '17 at 11:26
So thenproc
will give the number ofCPU(s)
actually?And that mean one computer can have a lot of sockets(physical cpu)?
– yode
Jul 12 '17 at 11:32
@yode Well Almost all processors these days have more than one core.
– sai sasanka
Jul 12 '17 at 14:03
add a comment |
Short Answer
The number of physical cores:
> cat /proc/cpuinfo | grep -m 1 "cpu cores"
cpu cores : 2
The number of virtual cores (e.g. 2x number of physical cores with hyper threading):
> cat /proc/cpuinfo | grep -c "cpu cores"
4
If you have more than one CPU/processor (in this sense) on your mainboard this does not properly work. See section "Several CPUs per mainboard". This may be the case if you work on a computing cluster or on a high-end desktop workstation for CAD/Engineering-purposes.
Long Answer
The command cat /proc/cpuinfo
should print out the number of physical cores in the line cpu cores
. But it prints out this information for each virtual core. Thus, if you want to have the number of physical core, you just take the first occurrence of the line cpu cores
, which is
> cat /proc/cpuinfo | grep -m 1 "cpu cores"
cpu cores : 2
Alternatively, if you are looking for the number of virtual cores, you count the number of times the line cpu cores
is found, which is
> cat /proc/cpuinfo | grep -c "cpu cores"
4
Example
I have got a Intel(R) Core(TM) i7-3740QM CPU @ 2.70GHz
(4 physical cores, hyperthreading). Lets see what I get:
> cat /proc/cpuinfo | grep "cpu cores"
cpu cores : 4
cpu cores : 4
cpu cores : 4
cpu cores : 4
cpu cores : 4
cpu cores : 4
cpu cores : 4
cpu cores : 4
Number of physical cores:
> cat /proc/cpuinfo | grep -m 1 "cpu cores"
cpu cores : 4
Number of virtual cores:
> cat /proc/cpuinfo | grep -l "cpu cores"
8
You could also take the last found processor number and increment it by one
> cat /proc/cpuinfo | grep "processor" | tail -1
processor : 7
# +1
Several CPUs per mainboard
I just looked onto one node of a computing cluster, on which I am currently working: 1 node has 4 CPUs (Intel Xeon) with each 8 physical cores; each CPU supports hyptherthreading; therefore, each CPU has 16 virtual cores; summing it up, the one node has 32 physical and 64 virtual cores;
cat /proc/cpuinfo
prints out information for each virtual core. Thus, we get 64 'packages' of information. If we have such a setup, we need to consider the row physical id
in cat /proc/cpuinfo
.
This is the output I get:
> cat /proc/cpuinfo | grep -m 1 "cpu cores"
cpu cores : 8
> cat /proc/cpuinfo | grep -c "cpu cores"
64
> cat /proc/cpuinfo | grep "physical id" | tail -1
physical id : 3
# this result +1 => number of CPUs
Thus, "number behind cpu cores
" x "number behind physical id
+ 1" is the number of physical cores one our node (8 x (3 + 1)). The 64 is the number of virtual cores.
Nomenclature
Since everyone uses cores, CPU and processor in another context, I introduce a nomenclature for my answer here:
- processor: the whole piece of hardware (e.g. my Intel® Core™ i7-3740QM Processor)
- CPU: CPU = processor
- core or physical core: number of physical calculation units in the CPU
- thread or virtual core: number of threads that can run on parallel on one CPU; if the (intel-)processor is able to perform hyperthreading the number of virtual cores is twice the number of physical cores (I am not sure how other processor vendors call this feature);
__Example: __
- processor: Intel(R) Core(TM) i7-3740QM CPU @ 2.70GHz
- source: Intel Ark
Data:
- CPU number: 1
- processor number: 1
- cores (or physical cores): 4
- threads (or virtual cores): 8
The question about how to sum that core number,but the follow answer(include yours) give me a lot of information about hardware.I'm afraid to make this question too board,acutally I have ping you in this room.Anyway,thanks very very much.And you get my upvote. :)
– yode
Jul 12 '17 at 12:14
An as the terdon say here ,thecat /proc/cpuinfo | grep -c "cpu cores"
is equivalent togrep -c "cpu cores" /proc/cpuinfo
– yode
Jul 12 '17 at 12:25
add a comment |
If you have glibc and a reasonably recent kernel you can use
getconf _NPROCESSORS_ONLN
to return the number of currently online1 processors. That includes virtual and hyper-thread processors.
1 On most systems that will be identical to the number of overall processors. The exception are systems that have one or more processors disabled for whatever reason (e. g. because it's faulty or because of artificial restrictions like leased/licensed hardware) or systems that support "hot-plugging" CPUs, had new CPUs added but not yet enabled.
add a comment |
Use lscpu to get mumber of cores per socket; then multiply by the number of sockets;then by threads per core.
Welcome to the site. Please consider expanding your answer by adding an example to it.
– Haxiel
Dec 19 '18 at 7:21
add a comment |
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "106"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f377883%2fhow-can-i-count-the-number-of-cpu-cores%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
6 Answers
6
active
oldest
votes
6 Answers
6
active
oldest
votes
active
oldest
votes
active
oldest
votes
If you are only interested in the sum, you can also use GNU awk:
cat /proc/cpuinfo |grep "cpu cores" | awk -F: '{ num+=$2 } END{ print "cpu cores", num }'
Edit: This is the correct answer for the OP's intention to sum the numbers of the last column. However the question about finding out how many cores (physical/virtual) are on the machine is given in the other answers to the question.
Please Correct me if I am wrong , The command sums all thecpu cores
from the/proc/cpuinfo
, but the total sum doesn't translate to actual cores in the system does it ?
– sai sasanka
Jul 12 '17 at 9:30
Afaik yes. As I mentioned in my answer, I just followed what the OP asked for, i.e. summing up the 2nd column.
– FloHe
Jul 12 '17 at 9:48
1
My notebook posseses e.g. an Intel Core i5-4210M dual core processor, which thanks to Hyperthreading has a total sum of 4 virtual cores. . I think, that the four rows stem from the fact, that all 4 cores (2xphysical, 2x hyperthreading) are considered and thecpu cores: 2
line stems from the fact, that a total of 2xphysical cores are on the host machine.
– FloHe
Jul 12 '17 at 10:09
This answer answers the questionHow can I get such a result? (cpu cores:8)
but not the questionHow can I count the number of CPU cores?
. It is somehow the correct answer for the wrong question. I would suggest to include this into the answer. Otherwise some people might really think that one gets the number of cores (physical/virtual whatever) by this command.
– daniel.neumann
Jul 12 '17 at 12:01
1
awk
can do pattern matching, you rarely need bothgrep
andawk
:awk -F: '/cpu cores/ {num+=...
, also, bothgrep
andawk
can read files directly, so no eed forcat
– Eric Renouf
Jul 12 '17 at 12:40
|
show 3 more comments
If you are only interested in the sum, you can also use GNU awk:
cat /proc/cpuinfo |grep "cpu cores" | awk -F: '{ num+=$2 } END{ print "cpu cores", num }'
Edit: This is the correct answer for the OP's intention to sum the numbers of the last column. However the question about finding out how many cores (physical/virtual) are on the machine is given in the other answers to the question.
Please Correct me if I am wrong , The command sums all thecpu cores
from the/proc/cpuinfo
, but the total sum doesn't translate to actual cores in the system does it ?
– sai sasanka
Jul 12 '17 at 9:30
Afaik yes. As I mentioned in my answer, I just followed what the OP asked for, i.e. summing up the 2nd column.
– FloHe
Jul 12 '17 at 9:48
1
My notebook posseses e.g. an Intel Core i5-4210M dual core processor, which thanks to Hyperthreading has a total sum of 4 virtual cores. . I think, that the four rows stem from the fact, that all 4 cores (2xphysical, 2x hyperthreading) are considered and thecpu cores: 2
line stems from the fact, that a total of 2xphysical cores are on the host machine.
– FloHe
Jul 12 '17 at 10:09
This answer answers the questionHow can I get such a result? (cpu cores:8)
but not the questionHow can I count the number of CPU cores?
. It is somehow the correct answer for the wrong question. I would suggest to include this into the answer. Otherwise some people might really think that one gets the number of cores (physical/virtual whatever) by this command.
– daniel.neumann
Jul 12 '17 at 12:01
1
awk
can do pattern matching, you rarely need bothgrep
andawk
:awk -F: '/cpu cores/ {num+=...
, also, bothgrep
andawk
can read files directly, so no eed forcat
– Eric Renouf
Jul 12 '17 at 12:40
|
show 3 more comments
If you are only interested in the sum, you can also use GNU awk:
cat /proc/cpuinfo |grep "cpu cores" | awk -F: '{ num+=$2 } END{ print "cpu cores", num }'
Edit: This is the correct answer for the OP's intention to sum the numbers of the last column. However the question about finding out how many cores (physical/virtual) are on the machine is given in the other answers to the question.
If you are only interested in the sum, you can also use GNU awk:
cat /proc/cpuinfo |grep "cpu cores" | awk -F: '{ num+=$2 } END{ print "cpu cores", num }'
Edit: This is the correct answer for the OP's intention to sum the numbers of the last column. However the question about finding out how many cores (physical/virtual) are on the machine is given in the other answers to the question.
edited Jul 12 '17 at 12:38
answered Jul 12 '17 at 7:27
FloHe
63739
63739
Please Correct me if I am wrong , The command sums all thecpu cores
from the/proc/cpuinfo
, but the total sum doesn't translate to actual cores in the system does it ?
– sai sasanka
Jul 12 '17 at 9:30
Afaik yes. As I mentioned in my answer, I just followed what the OP asked for, i.e. summing up the 2nd column.
– FloHe
Jul 12 '17 at 9:48
1
My notebook posseses e.g. an Intel Core i5-4210M dual core processor, which thanks to Hyperthreading has a total sum of 4 virtual cores. . I think, that the four rows stem from the fact, that all 4 cores (2xphysical, 2x hyperthreading) are considered and thecpu cores: 2
line stems from the fact, that a total of 2xphysical cores are on the host machine.
– FloHe
Jul 12 '17 at 10:09
This answer answers the questionHow can I get such a result? (cpu cores:8)
but not the questionHow can I count the number of CPU cores?
. It is somehow the correct answer for the wrong question. I would suggest to include this into the answer. Otherwise some people might really think that one gets the number of cores (physical/virtual whatever) by this command.
– daniel.neumann
Jul 12 '17 at 12:01
1
awk
can do pattern matching, you rarely need bothgrep
andawk
:awk -F: '/cpu cores/ {num+=...
, also, bothgrep
andawk
can read files directly, so no eed forcat
– Eric Renouf
Jul 12 '17 at 12:40
|
show 3 more comments
Please Correct me if I am wrong , The command sums all thecpu cores
from the/proc/cpuinfo
, but the total sum doesn't translate to actual cores in the system does it ?
– sai sasanka
Jul 12 '17 at 9:30
Afaik yes. As I mentioned in my answer, I just followed what the OP asked for, i.e. summing up the 2nd column.
– FloHe
Jul 12 '17 at 9:48
1
My notebook posseses e.g. an Intel Core i5-4210M dual core processor, which thanks to Hyperthreading has a total sum of 4 virtual cores. . I think, that the four rows stem from the fact, that all 4 cores (2xphysical, 2x hyperthreading) are considered and thecpu cores: 2
line stems from the fact, that a total of 2xphysical cores are on the host machine.
– FloHe
Jul 12 '17 at 10:09
This answer answers the questionHow can I get such a result? (cpu cores:8)
but not the questionHow can I count the number of CPU cores?
. It is somehow the correct answer for the wrong question. I would suggest to include this into the answer. Otherwise some people might really think that one gets the number of cores (physical/virtual whatever) by this command.
– daniel.neumann
Jul 12 '17 at 12:01
1
awk
can do pattern matching, you rarely need bothgrep
andawk
:awk -F: '/cpu cores/ {num+=...
, also, bothgrep
andawk
can read files directly, so no eed forcat
– Eric Renouf
Jul 12 '17 at 12:40
Please Correct me if I am wrong , The command sums all the
cpu cores
from the /proc/cpuinfo
, but the total sum doesn't translate to actual cores in the system does it ?– sai sasanka
Jul 12 '17 at 9:30
Please Correct me if I am wrong , The command sums all the
cpu cores
from the /proc/cpuinfo
, but the total sum doesn't translate to actual cores in the system does it ?– sai sasanka
Jul 12 '17 at 9:30
Afaik yes. As I mentioned in my answer, I just followed what the OP asked for, i.e. summing up the 2nd column.
– FloHe
Jul 12 '17 at 9:48
Afaik yes. As I mentioned in my answer, I just followed what the OP asked for, i.e. summing up the 2nd column.
– FloHe
Jul 12 '17 at 9:48
1
1
My notebook posseses e.g. an Intel Core i5-4210M dual core processor, which thanks to Hyperthreading has a total sum of 4 virtual cores. . I think, that the four rows stem from the fact, that all 4 cores (2xphysical, 2x hyperthreading) are considered and the
cpu cores: 2
line stems from the fact, that a total of 2xphysical cores are on the host machine.– FloHe
Jul 12 '17 at 10:09
My notebook posseses e.g. an Intel Core i5-4210M dual core processor, which thanks to Hyperthreading has a total sum of 4 virtual cores. . I think, that the four rows stem from the fact, that all 4 cores (2xphysical, 2x hyperthreading) are considered and the
cpu cores: 2
line stems from the fact, that a total of 2xphysical cores are on the host machine.– FloHe
Jul 12 '17 at 10:09
This answer answers the question
How can I get such a result? (cpu cores:8)
but not the question How can I count the number of CPU cores?
. It is somehow the correct answer for the wrong question. I would suggest to include this into the answer. Otherwise some people might really think that one gets the number of cores (physical/virtual whatever) by this command.– daniel.neumann
Jul 12 '17 at 12:01
This answer answers the question
How can I get such a result? (cpu cores:8)
but not the question How can I count the number of CPU cores?
. It is somehow the correct answer for the wrong question. I would suggest to include this into the answer. Otherwise some people might really think that one gets the number of cores (physical/virtual whatever) by this command.– daniel.neumann
Jul 12 '17 at 12:01
1
1
awk
can do pattern matching, you rarely need both grep
and awk
: awk -F: '/cpu cores/ {num+=...
, also, both grep
and awk
can read files directly, so no eed for cat
– Eric Renouf
Jul 12 '17 at 12:40
awk
can do pattern matching, you rarely need both grep
and awk
: awk -F: '/cpu cores/ {num+=...
, also, both grep
and awk
can read files directly, so no eed for cat
– Eric Renouf
Jul 12 '17 at 12:40
|
show 3 more comments
In Terminal nproc
, OP: total cpu cores
1
It will give an empty output here..
– yode
Jul 12 '17 at 7:02
And I'm after a method that can process that output to get the result. :)
– yode
Jul 12 '17 at 7:08
@yode did you type the # because it's not part of the command it's meant to represent the shell prompt. If it's still not working, what os are you using?
– M4rty
Jul 12 '17 at 7:08
2
@yode dont use that #, and as your question there is only 2 cores is there in your system as i guess, not 8
– Durga
Jul 12 '17 at 7:11
Oh, sorry,it works.But it seem will give the number of CUP but not core number.See this
– yode
Jul 12 '17 at 7:12
|
show 2 more comments
In Terminal nproc
, OP: total cpu cores
1
It will give an empty output here..
– yode
Jul 12 '17 at 7:02
And I'm after a method that can process that output to get the result. :)
– yode
Jul 12 '17 at 7:08
@yode did you type the # because it's not part of the command it's meant to represent the shell prompt. If it's still not working, what os are you using?
– M4rty
Jul 12 '17 at 7:08
2
@yode dont use that #, and as your question there is only 2 cores is there in your system as i guess, not 8
– Durga
Jul 12 '17 at 7:11
Oh, sorry,it works.But it seem will give the number of CUP but not core number.See this
– yode
Jul 12 '17 at 7:12
|
show 2 more comments
In Terminal nproc
, OP: total cpu cores
In Terminal nproc
, OP: total cpu cores
edited Jul 12 '17 at 7:10
answered Jul 12 '17 at 6:52
Durga
1613
1613
1
It will give an empty output here..
– yode
Jul 12 '17 at 7:02
And I'm after a method that can process that output to get the result. :)
– yode
Jul 12 '17 at 7:08
@yode did you type the # because it's not part of the command it's meant to represent the shell prompt. If it's still not working, what os are you using?
– M4rty
Jul 12 '17 at 7:08
2
@yode dont use that #, and as your question there is only 2 cores is there in your system as i guess, not 8
– Durga
Jul 12 '17 at 7:11
Oh, sorry,it works.But it seem will give the number of CUP but not core number.See this
– yode
Jul 12 '17 at 7:12
|
show 2 more comments
1
It will give an empty output here..
– yode
Jul 12 '17 at 7:02
And I'm after a method that can process that output to get the result. :)
– yode
Jul 12 '17 at 7:08
@yode did you type the # because it's not part of the command it's meant to represent the shell prompt. If it's still not working, what os are you using?
– M4rty
Jul 12 '17 at 7:08
2
@yode dont use that #, and as your question there is only 2 cores is there in your system as i guess, not 8
– Durga
Jul 12 '17 at 7:11
Oh, sorry,it works.But it seem will give the number of CUP but not core number.See this
– yode
Jul 12 '17 at 7:12
1
1
It will give an empty output here..
– yode
Jul 12 '17 at 7:02
It will give an empty output here..
– yode
Jul 12 '17 at 7:02
And I'm after a method that can process that output to get the result. :)
– yode
Jul 12 '17 at 7:08
And I'm after a method that can process that output to get the result. :)
– yode
Jul 12 '17 at 7:08
@yode did you type the # because it's not part of the command it's meant to represent the shell prompt. If it's still not working, what os are you using?
– M4rty
Jul 12 '17 at 7:08
@yode did you type the # because it's not part of the command it's meant to represent the shell prompt. If it's still not working, what os are you using?
– M4rty
Jul 12 '17 at 7:08
2
2
@yode dont use that #, and as your question there is only 2 cores is there in your system as i guess, not 8
– Durga
Jul 12 '17 at 7:11
@yode dont use that #, and as your question there is only 2 cores is there in your system as i guess, not 8
– Durga
Jul 12 '17 at 7:11
Oh, sorry,it works.But it seem will give the number of CUP but not core number.See this
– yode
Jul 12 '17 at 7:12
Oh, sorry,it works.But it seem will give the number of CUP but not core number.See this
– yode
Jul 12 '17 at 7:12
|
show 2 more comments
Try this,
As per man lscpu
CORE The logical core number. A core can contain several CPUs.
SOCKET The logical socket number. A socket can contain several cores.
cores
as well as sockets
are physical where as CPU(s)
are logical number. So to find the number of cores your system has, do number of cores x number of sockets
A sample output of lscpu
is as follows :
Thread(s) per core: 2
Core(s) per socket: 8
Socket(s): 2
So the total number of cores: 16
The total number of CPU(s): 32
(Since number of threads
per core
is 2
)
As @Durga mentioned , the nproc
gives total number of CPUs
.
For more , refer this answer , to get interpretation of /proc/cpuinfo
refer this
I'd like to thank @Kusalananda for helping me to understand the same.
Thanks for your lesson.I'm very green on this area.And I read your answer many times.As my understand, one Intel(R) Core(TM) i7-6500U CPU @ 2.50GHz mean 1 socket,two core and four thread.So the CPU(s) is equivalent to thread?
– yode
Jul 12 '17 at 10:57
@yode If your system has1 socket
,2 cores
, and2 threads per core
, then yes you totally have4 CPU(s)
, each CPU being able to execute athread
, that counts to4 threads
– sai sasanka
Jul 12 '17 at 11:26
So thenproc
will give the number ofCPU(s)
actually?And that mean one computer can have a lot of sockets(physical cpu)?
– yode
Jul 12 '17 at 11:32
@yode Well Almost all processors these days have more than one core.
– sai sasanka
Jul 12 '17 at 14:03
add a comment |
Try this,
As per man lscpu
CORE The logical core number. A core can contain several CPUs.
SOCKET The logical socket number. A socket can contain several cores.
cores
as well as sockets
are physical where as CPU(s)
are logical number. So to find the number of cores your system has, do number of cores x number of sockets
A sample output of lscpu
is as follows :
Thread(s) per core: 2
Core(s) per socket: 8
Socket(s): 2
So the total number of cores: 16
The total number of CPU(s): 32
(Since number of threads
per core
is 2
)
As @Durga mentioned , the nproc
gives total number of CPUs
.
For more , refer this answer , to get interpretation of /proc/cpuinfo
refer this
I'd like to thank @Kusalananda for helping me to understand the same.
Thanks for your lesson.I'm very green on this area.And I read your answer many times.As my understand, one Intel(R) Core(TM) i7-6500U CPU @ 2.50GHz mean 1 socket,two core and four thread.So the CPU(s) is equivalent to thread?
– yode
Jul 12 '17 at 10:57
@yode If your system has1 socket
,2 cores
, and2 threads per core
, then yes you totally have4 CPU(s)
, each CPU being able to execute athread
, that counts to4 threads
– sai sasanka
Jul 12 '17 at 11:26
So thenproc
will give the number ofCPU(s)
actually?And that mean one computer can have a lot of sockets(physical cpu)?
– yode
Jul 12 '17 at 11:32
@yode Well Almost all processors these days have more than one core.
– sai sasanka
Jul 12 '17 at 14:03
add a comment |
Try this,
As per man lscpu
CORE The logical core number. A core can contain several CPUs.
SOCKET The logical socket number. A socket can contain several cores.
cores
as well as sockets
are physical where as CPU(s)
are logical number. So to find the number of cores your system has, do number of cores x number of sockets
A sample output of lscpu
is as follows :
Thread(s) per core: 2
Core(s) per socket: 8
Socket(s): 2
So the total number of cores: 16
The total number of CPU(s): 32
(Since number of threads
per core
is 2
)
As @Durga mentioned , the nproc
gives total number of CPUs
.
For more , refer this answer , to get interpretation of /proc/cpuinfo
refer this
I'd like to thank @Kusalananda for helping me to understand the same.
Try this,
As per man lscpu
CORE The logical core number. A core can contain several CPUs.
SOCKET The logical socket number. A socket can contain several cores.
cores
as well as sockets
are physical where as CPU(s)
are logical number. So to find the number of cores your system has, do number of cores x number of sockets
A sample output of lscpu
is as follows :
Thread(s) per core: 2
Core(s) per socket: 8
Socket(s): 2
So the total number of cores: 16
The total number of CPU(s): 32
(Since number of threads
per core
is 2
)
As @Durga mentioned , the nproc
gives total number of CPUs
.
For more , refer this answer , to get interpretation of /proc/cpuinfo
refer this
I'd like to thank @Kusalananda for helping me to understand the same.
edited Jul 12 '17 at 11:04
Braiam
23.1k1976137
23.1k1976137
answered Jul 12 '17 at 9:22
sai sasanka
754110
754110
Thanks for your lesson.I'm very green on this area.And I read your answer many times.As my understand, one Intel(R) Core(TM) i7-6500U CPU @ 2.50GHz mean 1 socket,two core and four thread.So the CPU(s) is equivalent to thread?
– yode
Jul 12 '17 at 10:57
@yode If your system has1 socket
,2 cores
, and2 threads per core
, then yes you totally have4 CPU(s)
, each CPU being able to execute athread
, that counts to4 threads
– sai sasanka
Jul 12 '17 at 11:26
So thenproc
will give the number ofCPU(s)
actually?And that mean one computer can have a lot of sockets(physical cpu)?
– yode
Jul 12 '17 at 11:32
@yode Well Almost all processors these days have more than one core.
– sai sasanka
Jul 12 '17 at 14:03
add a comment |
Thanks for your lesson.I'm very green on this area.And I read your answer many times.As my understand, one Intel(R) Core(TM) i7-6500U CPU @ 2.50GHz mean 1 socket,two core and four thread.So the CPU(s) is equivalent to thread?
– yode
Jul 12 '17 at 10:57
@yode If your system has1 socket
,2 cores
, and2 threads per core
, then yes you totally have4 CPU(s)
, each CPU being able to execute athread
, that counts to4 threads
– sai sasanka
Jul 12 '17 at 11:26
So thenproc
will give the number ofCPU(s)
actually?And that mean one computer can have a lot of sockets(physical cpu)?
– yode
Jul 12 '17 at 11:32
@yode Well Almost all processors these days have more than one core.
– sai sasanka
Jul 12 '17 at 14:03
Thanks for your lesson.I'm very green on this area.And I read your answer many times.As my understand, one Intel(R) Core(TM) i7-6500U CPU @ 2.50GHz mean 1 socket,two core and four thread.So the CPU(s) is equivalent to thread?
– yode
Jul 12 '17 at 10:57
Thanks for your lesson.I'm very green on this area.And I read your answer many times.As my understand, one Intel(R) Core(TM) i7-6500U CPU @ 2.50GHz mean 1 socket,two core and four thread.So the CPU(s) is equivalent to thread?
– yode
Jul 12 '17 at 10:57
@yode If your system has
1 socket
, 2 cores
, and 2 threads per core
, then yes you totally have 4 CPU(s)
, each CPU being able to execute a thread
, that counts to 4 threads
– sai sasanka
Jul 12 '17 at 11:26
@yode If your system has
1 socket
, 2 cores
, and 2 threads per core
, then yes you totally have 4 CPU(s)
, each CPU being able to execute a thread
, that counts to 4 threads
– sai sasanka
Jul 12 '17 at 11:26
So the
nproc
will give the number of CPU(s)
actually?And that mean one computer can have a lot of sockets(physical cpu)?– yode
Jul 12 '17 at 11:32
So the
nproc
will give the number of CPU(s)
actually?And that mean one computer can have a lot of sockets(physical cpu)?– yode
Jul 12 '17 at 11:32
@yode Well Almost all processors these days have more than one core.
– sai sasanka
Jul 12 '17 at 14:03
@yode Well Almost all processors these days have more than one core.
– sai sasanka
Jul 12 '17 at 14:03
add a comment |
Short Answer
The number of physical cores:
> cat /proc/cpuinfo | grep -m 1 "cpu cores"
cpu cores : 2
The number of virtual cores (e.g. 2x number of physical cores with hyper threading):
> cat /proc/cpuinfo | grep -c "cpu cores"
4
If you have more than one CPU/processor (in this sense) on your mainboard this does not properly work. See section "Several CPUs per mainboard". This may be the case if you work on a computing cluster or on a high-end desktop workstation for CAD/Engineering-purposes.
Long Answer
The command cat /proc/cpuinfo
should print out the number of physical cores in the line cpu cores
. But it prints out this information for each virtual core. Thus, if you want to have the number of physical core, you just take the first occurrence of the line cpu cores
, which is
> cat /proc/cpuinfo | grep -m 1 "cpu cores"
cpu cores : 2
Alternatively, if you are looking for the number of virtual cores, you count the number of times the line cpu cores
is found, which is
> cat /proc/cpuinfo | grep -c "cpu cores"
4
Example
I have got a Intel(R) Core(TM) i7-3740QM CPU @ 2.70GHz
(4 physical cores, hyperthreading). Lets see what I get:
> cat /proc/cpuinfo | grep "cpu cores"
cpu cores : 4
cpu cores : 4
cpu cores : 4
cpu cores : 4
cpu cores : 4
cpu cores : 4
cpu cores : 4
cpu cores : 4
Number of physical cores:
> cat /proc/cpuinfo | grep -m 1 "cpu cores"
cpu cores : 4
Number of virtual cores:
> cat /proc/cpuinfo | grep -l "cpu cores"
8
You could also take the last found processor number and increment it by one
> cat /proc/cpuinfo | grep "processor" | tail -1
processor : 7
# +1
Several CPUs per mainboard
I just looked onto one node of a computing cluster, on which I am currently working: 1 node has 4 CPUs (Intel Xeon) with each 8 physical cores; each CPU supports hyptherthreading; therefore, each CPU has 16 virtual cores; summing it up, the one node has 32 physical and 64 virtual cores;
cat /proc/cpuinfo
prints out information for each virtual core. Thus, we get 64 'packages' of information. If we have such a setup, we need to consider the row physical id
in cat /proc/cpuinfo
.
This is the output I get:
> cat /proc/cpuinfo | grep -m 1 "cpu cores"
cpu cores : 8
> cat /proc/cpuinfo | grep -c "cpu cores"
64
> cat /proc/cpuinfo | grep "physical id" | tail -1
physical id : 3
# this result +1 => number of CPUs
Thus, "number behind cpu cores
" x "number behind physical id
+ 1" is the number of physical cores one our node (8 x (3 + 1)). The 64 is the number of virtual cores.
Nomenclature
Since everyone uses cores, CPU and processor in another context, I introduce a nomenclature for my answer here:
- processor: the whole piece of hardware (e.g. my Intel® Core™ i7-3740QM Processor)
- CPU: CPU = processor
- core or physical core: number of physical calculation units in the CPU
- thread or virtual core: number of threads that can run on parallel on one CPU; if the (intel-)processor is able to perform hyperthreading the number of virtual cores is twice the number of physical cores (I am not sure how other processor vendors call this feature);
__Example: __
- processor: Intel(R) Core(TM) i7-3740QM CPU @ 2.70GHz
- source: Intel Ark
Data:
- CPU number: 1
- processor number: 1
- cores (or physical cores): 4
- threads (or virtual cores): 8
The question about how to sum that core number,but the follow answer(include yours) give me a lot of information about hardware.I'm afraid to make this question too board,acutally I have ping you in this room.Anyway,thanks very very much.And you get my upvote. :)
– yode
Jul 12 '17 at 12:14
An as the terdon say here ,thecat /proc/cpuinfo | grep -c "cpu cores"
is equivalent togrep -c "cpu cores" /proc/cpuinfo
– yode
Jul 12 '17 at 12:25
add a comment |
Short Answer
The number of physical cores:
> cat /proc/cpuinfo | grep -m 1 "cpu cores"
cpu cores : 2
The number of virtual cores (e.g. 2x number of physical cores with hyper threading):
> cat /proc/cpuinfo | grep -c "cpu cores"
4
If you have more than one CPU/processor (in this sense) on your mainboard this does not properly work. See section "Several CPUs per mainboard". This may be the case if you work on a computing cluster or on a high-end desktop workstation for CAD/Engineering-purposes.
Long Answer
The command cat /proc/cpuinfo
should print out the number of physical cores in the line cpu cores
. But it prints out this information for each virtual core. Thus, if you want to have the number of physical core, you just take the first occurrence of the line cpu cores
, which is
> cat /proc/cpuinfo | grep -m 1 "cpu cores"
cpu cores : 2
Alternatively, if you are looking for the number of virtual cores, you count the number of times the line cpu cores
is found, which is
> cat /proc/cpuinfo | grep -c "cpu cores"
4
Example
I have got a Intel(R) Core(TM) i7-3740QM CPU @ 2.70GHz
(4 physical cores, hyperthreading). Lets see what I get:
> cat /proc/cpuinfo | grep "cpu cores"
cpu cores : 4
cpu cores : 4
cpu cores : 4
cpu cores : 4
cpu cores : 4
cpu cores : 4
cpu cores : 4
cpu cores : 4
Number of physical cores:
> cat /proc/cpuinfo | grep -m 1 "cpu cores"
cpu cores : 4
Number of virtual cores:
> cat /proc/cpuinfo | grep -l "cpu cores"
8
You could also take the last found processor number and increment it by one
> cat /proc/cpuinfo | grep "processor" | tail -1
processor : 7
# +1
Several CPUs per mainboard
I just looked onto one node of a computing cluster, on which I am currently working: 1 node has 4 CPUs (Intel Xeon) with each 8 physical cores; each CPU supports hyptherthreading; therefore, each CPU has 16 virtual cores; summing it up, the one node has 32 physical and 64 virtual cores;
cat /proc/cpuinfo
prints out information for each virtual core. Thus, we get 64 'packages' of information. If we have such a setup, we need to consider the row physical id
in cat /proc/cpuinfo
.
This is the output I get:
> cat /proc/cpuinfo | grep -m 1 "cpu cores"
cpu cores : 8
> cat /proc/cpuinfo | grep -c "cpu cores"
64
> cat /proc/cpuinfo | grep "physical id" | tail -1
physical id : 3
# this result +1 => number of CPUs
Thus, "number behind cpu cores
" x "number behind physical id
+ 1" is the number of physical cores one our node (8 x (3 + 1)). The 64 is the number of virtual cores.
Nomenclature
Since everyone uses cores, CPU and processor in another context, I introduce a nomenclature for my answer here:
- processor: the whole piece of hardware (e.g. my Intel® Core™ i7-3740QM Processor)
- CPU: CPU = processor
- core or physical core: number of physical calculation units in the CPU
- thread or virtual core: number of threads that can run on parallel on one CPU; if the (intel-)processor is able to perform hyperthreading the number of virtual cores is twice the number of physical cores (I am not sure how other processor vendors call this feature);
__Example: __
- processor: Intel(R) Core(TM) i7-3740QM CPU @ 2.70GHz
- source: Intel Ark
Data:
- CPU number: 1
- processor number: 1
- cores (or physical cores): 4
- threads (or virtual cores): 8
The question about how to sum that core number,but the follow answer(include yours) give me a lot of information about hardware.I'm afraid to make this question too board,acutally I have ping you in this room.Anyway,thanks very very much.And you get my upvote. :)
– yode
Jul 12 '17 at 12:14
An as the terdon say here ,thecat /proc/cpuinfo | grep -c "cpu cores"
is equivalent togrep -c "cpu cores" /proc/cpuinfo
– yode
Jul 12 '17 at 12:25
add a comment |
Short Answer
The number of physical cores:
> cat /proc/cpuinfo | grep -m 1 "cpu cores"
cpu cores : 2
The number of virtual cores (e.g. 2x number of physical cores with hyper threading):
> cat /proc/cpuinfo | grep -c "cpu cores"
4
If you have more than one CPU/processor (in this sense) on your mainboard this does not properly work. See section "Several CPUs per mainboard". This may be the case if you work on a computing cluster or on a high-end desktop workstation for CAD/Engineering-purposes.
Long Answer
The command cat /proc/cpuinfo
should print out the number of physical cores in the line cpu cores
. But it prints out this information for each virtual core. Thus, if you want to have the number of physical core, you just take the first occurrence of the line cpu cores
, which is
> cat /proc/cpuinfo | grep -m 1 "cpu cores"
cpu cores : 2
Alternatively, if you are looking for the number of virtual cores, you count the number of times the line cpu cores
is found, which is
> cat /proc/cpuinfo | grep -c "cpu cores"
4
Example
I have got a Intel(R) Core(TM) i7-3740QM CPU @ 2.70GHz
(4 physical cores, hyperthreading). Lets see what I get:
> cat /proc/cpuinfo | grep "cpu cores"
cpu cores : 4
cpu cores : 4
cpu cores : 4
cpu cores : 4
cpu cores : 4
cpu cores : 4
cpu cores : 4
cpu cores : 4
Number of physical cores:
> cat /proc/cpuinfo | grep -m 1 "cpu cores"
cpu cores : 4
Number of virtual cores:
> cat /proc/cpuinfo | grep -l "cpu cores"
8
You could also take the last found processor number and increment it by one
> cat /proc/cpuinfo | grep "processor" | tail -1
processor : 7
# +1
Several CPUs per mainboard
I just looked onto one node of a computing cluster, on which I am currently working: 1 node has 4 CPUs (Intel Xeon) with each 8 physical cores; each CPU supports hyptherthreading; therefore, each CPU has 16 virtual cores; summing it up, the one node has 32 physical and 64 virtual cores;
cat /proc/cpuinfo
prints out information for each virtual core. Thus, we get 64 'packages' of information. If we have such a setup, we need to consider the row physical id
in cat /proc/cpuinfo
.
This is the output I get:
> cat /proc/cpuinfo | grep -m 1 "cpu cores"
cpu cores : 8
> cat /proc/cpuinfo | grep -c "cpu cores"
64
> cat /proc/cpuinfo | grep "physical id" | tail -1
physical id : 3
# this result +1 => number of CPUs
Thus, "number behind cpu cores
" x "number behind physical id
+ 1" is the number of physical cores one our node (8 x (3 + 1)). The 64 is the number of virtual cores.
Nomenclature
Since everyone uses cores, CPU and processor in another context, I introduce a nomenclature for my answer here:
- processor: the whole piece of hardware (e.g. my Intel® Core™ i7-3740QM Processor)
- CPU: CPU = processor
- core or physical core: number of physical calculation units in the CPU
- thread or virtual core: number of threads that can run on parallel on one CPU; if the (intel-)processor is able to perform hyperthreading the number of virtual cores is twice the number of physical cores (I am not sure how other processor vendors call this feature);
__Example: __
- processor: Intel(R) Core(TM) i7-3740QM CPU @ 2.70GHz
- source: Intel Ark
Data:
- CPU number: 1
- processor number: 1
- cores (or physical cores): 4
- threads (or virtual cores): 8
Short Answer
The number of physical cores:
> cat /proc/cpuinfo | grep -m 1 "cpu cores"
cpu cores : 2
The number of virtual cores (e.g. 2x number of physical cores with hyper threading):
> cat /proc/cpuinfo | grep -c "cpu cores"
4
If you have more than one CPU/processor (in this sense) on your mainboard this does not properly work. See section "Several CPUs per mainboard". This may be the case if you work on a computing cluster or on a high-end desktop workstation for CAD/Engineering-purposes.
Long Answer
The command cat /proc/cpuinfo
should print out the number of physical cores in the line cpu cores
. But it prints out this information for each virtual core. Thus, if you want to have the number of physical core, you just take the first occurrence of the line cpu cores
, which is
> cat /proc/cpuinfo | grep -m 1 "cpu cores"
cpu cores : 2
Alternatively, if you are looking for the number of virtual cores, you count the number of times the line cpu cores
is found, which is
> cat /proc/cpuinfo | grep -c "cpu cores"
4
Example
I have got a Intel(R) Core(TM) i7-3740QM CPU @ 2.70GHz
(4 physical cores, hyperthreading). Lets see what I get:
> cat /proc/cpuinfo | grep "cpu cores"
cpu cores : 4
cpu cores : 4
cpu cores : 4
cpu cores : 4
cpu cores : 4
cpu cores : 4
cpu cores : 4
cpu cores : 4
Number of physical cores:
> cat /proc/cpuinfo | grep -m 1 "cpu cores"
cpu cores : 4
Number of virtual cores:
> cat /proc/cpuinfo | grep -l "cpu cores"
8
You could also take the last found processor number and increment it by one
> cat /proc/cpuinfo | grep "processor" | tail -1
processor : 7
# +1
Several CPUs per mainboard
I just looked onto one node of a computing cluster, on which I am currently working: 1 node has 4 CPUs (Intel Xeon) with each 8 physical cores; each CPU supports hyptherthreading; therefore, each CPU has 16 virtual cores; summing it up, the one node has 32 physical and 64 virtual cores;
cat /proc/cpuinfo
prints out information for each virtual core. Thus, we get 64 'packages' of information. If we have such a setup, we need to consider the row physical id
in cat /proc/cpuinfo
.
This is the output I get:
> cat /proc/cpuinfo | grep -m 1 "cpu cores"
cpu cores : 8
> cat /proc/cpuinfo | grep -c "cpu cores"
64
> cat /proc/cpuinfo | grep "physical id" | tail -1
physical id : 3
# this result +1 => number of CPUs
Thus, "number behind cpu cores
" x "number behind physical id
+ 1" is the number of physical cores one our node (8 x (3 + 1)). The 64 is the number of virtual cores.
Nomenclature
Since everyone uses cores, CPU and processor in another context, I introduce a nomenclature for my answer here:
- processor: the whole piece of hardware (e.g. my Intel® Core™ i7-3740QM Processor)
- CPU: CPU = processor
- core or physical core: number of physical calculation units in the CPU
- thread or virtual core: number of threads that can run on parallel on one CPU; if the (intel-)processor is able to perform hyperthreading the number of virtual cores is twice the number of physical cores (I am not sure how other processor vendors call this feature);
__Example: __
- processor: Intel(R) Core(TM) i7-3740QM CPU @ 2.70GHz
- source: Intel Ark
Data:
- CPU number: 1
- processor number: 1
- cores (or physical cores): 4
- threads (or virtual cores): 8
edited Jul 12 '17 at 12:30
answered Jul 12 '17 at 11:52
daniel.neumann
15011
15011
The question about how to sum that core number,but the follow answer(include yours) give me a lot of information about hardware.I'm afraid to make this question too board,acutally I have ping you in this room.Anyway,thanks very very much.And you get my upvote. :)
– yode
Jul 12 '17 at 12:14
An as the terdon say here ,thecat /proc/cpuinfo | grep -c "cpu cores"
is equivalent togrep -c "cpu cores" /proc/cpuinfo
– yode
Jul 12 '17 at 12:25
add a comment |
The question about how to sum that core number,but the follow answer(include yours) give me a lot of information about hardware.I'm afraid to make this question too board,acutally I have ping you in this room.Anyway,thanks very very much.And you get my upvote. :)
– yode
Jul 12 '17 at 12:14
An as the terdon say here ,thecat /proc/cpuinfo | grep -c "cpu cores"
is equivalent togrep -c "cpu cores" /proc/cpuinfo
– yode
Jul 12 '17 at 12:25
The question about how to sum that core number,but the follow answer(include yours) give me a lot of information about hardware.I'm afraid to make this question too board,acutally I have ping you in this room.Anyway,thanks very very much.And you get my upvote. :)
– yode
Jul 12 '17 at 12:14
The question about how to sum that core number,but the follow answer(include yours) give me a lot of information about hardware.I'm afraid to make this question too board,acutally I have ping you in this room.Anyway,thanks very very much.And you get my upvote. :)
– yode
Jul 12 '17 at 12:14
An as the terdon say here ,the
cat /proc/cpuinfo | grep -c "cpu cores"
is equivalent to grep -c "cpu cores" /proc/cpuinfo
– yode
Jul 12 '17 at 12:25
An as the terdon say here ,the
cat /proc/cpuinfo | grep -c "cpu cores"
is equivalent to grep -c "cpu cores" /proc/cpuinfo
– yode
Jul 12 '17 at 12:25
add a comment |
If you have glibc and a reasonably recent kernel you can use
getconf _NPROCESSORS_ONLN
to return the number of currently online1 processors. That includes virtual and hyper-thread processors.
1 On most systems that will be identical to the number of overall processors. The exception are systems that have one or more processors disabled for whatever reason (e. g. because it's faulty or because of artificial restrictions like leased/licensed hardware) or systems that support "hot-plugging" CPUs, had new CPUs added but not yet enabled.
add a comment |
If you have glibc and a reasonably recent kernel you can use
getconf _NPROCESSORS_ONLN
to return the number of currently online1 processors. That includes virtual and hyper-thread processors.
1 On most systems that will be identical to the number of overall processors. The exception are systems that have one or more processors disabled for whatever reason (e. g. because it's faulty or because of artificial restrictions like leased/licensed hardware) or systems that support "hot-plugging" CPUs, had new CPUs added but not yet enabled.
add a comment |
If you have glibc and a reasonably recent kernel you can use
getconf _NPROCESSORS_ONLN
to return the number of currently online1 processors. That includes virtual and hyper-thread processors.
1 On most systems that will be identical to the number of overall processors. The exception are systems that have one or more processors disabled for whatever reason (e. g. because it's faulty or because of artificial restrictions like leased/licensed hardware) or systems that support "hot-plugging" CPUs, had new CPUs added but not yet enabled.
If you have glibc and a reasonably recent kernel you can use
getconf _NPROCESSORS_ONLN
to return the number of currently online1 processors. That includes virtual and hyper-thread processors.
1 On most systems that will be identical to the number of overall processors. The exception are systems that have one or more processors disabled for whatever reason (e. g. because it's faulty or because of artificial restrictions like leased/licensed hardware) or systems that support "hot-plugging" CPUs, had new CPUs added but not yet enabled.
answered Jul 12 '17 at 10:24
David Foerster
949616
949616
add a comment |
add a comment |
Use lscpu to get mumber of cores per socket; then multiply by the number of sockets;then by threads per core.
Welcome to the site. Please consider expanding your answer by adding an example to it.
– Haxiel
Dec 19 '18 at 7:21
add a comment |
Use lscpu to get mumber of cores per socket; then multiply by the number of sockets;then by threads per core.
Welcome to the site. Please consider expanding your answer by adding an example to it.
– Haxiel
Dec 19 '18 at 7:21
add a comment |
Use lscpu to get mumber of cores per socket; then multiply by the number of sockets;then by threads per core.
Use lscpu to get mumber of cores per socket; then multiply by the number of sockets;then by threads per core.
answered Dec 19 '18 at 6:28
guest
1
1
Welcome to the site. Please consider expanding your answer by adding an example to it.
– Haxiel
Dec 19 '18 at 7:21
add a comment |
Welcome to the site. Please consider expanding your answer by adding an example to it.
– Haxiel
Dec 19 '18 at 7:21
Welcome to the site. Please consider expanding your answer by adding an example to it.
– Haxiel
Dec 19 '18 at 7:21
Welcome to the site. Please consider expanding your answer by adding an example to it.
– Haxiel
Dec 19 '18 at 7:21
add a comment |
Thanks for contributing an answer to Unix & Linux Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f377883%2fhow-can-i-count-the-number-of-cpu-cores%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
I don't think summing those will get you the total number of cores on the system, the
cpu cores
line seems to show the number of cores on the processor (socket) that particular core is on. I get output identical to your example on one dual-socket dual-core system (that has a total of 4 cores, not 8).– ilkkachu
Jul 12 '17 at 9:57
@ilkkachu: I was also wondering about the output (see my answer below). I now think, that the four rows stem from the fact, that all 4 cores (2xphysical, 2x hyperthreading) are considered and the
cpu cores: 2
line stems from the fact, that a total of 2xphysical cores are on the host machine.– FloHe
Jul 12 '17 at 10:06
@yode Please specify which CPU you have. This simplifies the interpretation of your result. Do you expect to have 8 physical cores (with hyperthreading they could be counted as 16 virtual cores) or do you expect to have 4 physical but 8 virtual cores?
cat /proc/cpuinfo
should print out the number of physical cores. But it prints out this information for each virtual core. Thus I would expect that you have a dual core CPU with hyperthreading (or how its called by non-intel processors).– daniel.neumann
Jul 12 '17 at 11:39
Example: my
Intel(R) Core(TM) i7-3740QM CPU @ 2.70GHz
has 4 physical cores and supports hyperthreading. If I printcat /proc/cpuinfo
I get 8 times the linecpu cores : 4
because I have 8 virtual cores (2 per physical core) and thiscpu cores
information is printed out once per virtual core.– daniel.neumann
Jul 12 '17 at 11:42
And please also specify if you have one CPU (one piece of hardware) or maybe two CPUs on your mainboard.
– daniel.neumann
Jul 12 '17 at 12:09