Number of CPU cores on Linux and OS X
sysctl -n hw.ncpu: OS X
I can see the number of cores or the number of threads.
sysctl -n hw.ncpu 8 sysctl -n hw.physicalcpu 4 sysctl -n hw.logicalcpu 8
nproc: Raspberry Pi & Linux
On a Raspberry Pi 2 I can see that I have 4 cores:
This isn't fool-proof. If a core is "unavailable" (whatever that means), it won't be reported.
I believe this also reports "logical" (hyperthread) cores too, but I'm not certain.
grep -c proc /proc/cpuinfo
This will count logical cores.
That usually means
num_cores * 2 -
because each hyperthread-enabled core counts twice.
grep -c processor /proc/cpuinfo
This counts the occurances of the word 'processor' in the text of
which looks like this:
cat /proc/cpuinfo processor : 0 model name : ARMv7 Processor rev 5 (v7l) BogoMIPS : 51.20 Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x0 CPU part : 0xc07 CPU revision : 5 ... Hardware : BCM2709 Revision : a01041 Serial : 00000000e3a06ac9
cat /proc/cpuinfo | grep cores
This doesn't work on Raspberry Pi, but it will on most HyperThread-enabled systems.
cat /proc/cpuinfo | grep 'cpu cores' | cut -d ':' -f2 | cut -d' ' -f2
I don't have a multi-core machine to test this on, but this should work in most cases:
NUM=$(lscpu --parse=core | grep -v '^#' | sort -nr | head -n 1) NUM=$(($NUM + 1))
If you had a really weird setup - say a 2 socket machine where 1 cpu had 2 cores that don't support hyper-threading and the other had 3 cores that do support it and you needed an accurate count... you could parse this output and get accurate results.
lscpu --parse=cpu,core,socket | grep -v '^#'
lscpu uses the term cpu to mean thread (on a cpu core).
It uses socket to mean a physical cpu die and core to mean a cpu core.
There are approximately 1 trillion brazillion million billion eleventy six other ways to do this,
but they pretty much all involve somehow parsing either
By AJ ONeal
Was this useful to you? Share it!give me a tip or hire me.