I want to know the CPU cores & threads count, so that I could know how many tasks my computer can run in parallel. This number could later be used for specifying the pool size when creating a threading pool.
To get this count, the formula is:
num_of_cpu * cores_per_cpu * threads_per_core
For example, if you have 1 cpu, and it has 2 cores, and each core enabled hyperthreading, so the final result might be 1 * 2 * 2 = 4
We get use
lscpu to get a brief result:
$ lscpu ... CPU(s): 4 Thread(s) per core: 1 ...
Or we could use 3 separate commands to get more info:
$ cat /proc/cpuinfo | grep "physical id"| sort | uniq | wc -l 4 $ cat /proc/cpuinfo | grep "cores" | uniq cpu cores : 1 $ cat /proc/cpuinfo | grep "processor"| wc -l 4
So in this machine, we have 4 cpu, each cpu has 1 core, there is no hyperthreading enabled, because the processor count is 4. Otherwise, the processor count should be greater than 4.
The number of tasks can run parallel for this computer is 4 * 1 * 1 = 4
If you go to "About This Mac > System Report", you will be able to see some information about CPU. It looks like something like this:
From here we can see the number of CPU is 1, the Cores_Per_CPU is 2, but it doesn't show how many threads for one core, i.e. if the hyperthreading is enabled.
If we open terminal and use command:
$ sysctl hw.physicalcpu hw.logicalcpu hw.physicalcpu: 2 hw.logicalcpu: 4
Or we can use:
$ sysctl -a | grep machdep.cpu | grep count machdep.cpu.core_count: 2 machdep.cpu.thread_count: 4
Now you can see the core_count is 2, and thread_count is 4, means threads_per_core is 2 (hyperthreading is enabled).
The number of tasks can run parallel for this computer is 1 * 2 * 2 = 4