我们知道linux下查看cpu信息可以用 cat /proc/cpuinfo 指令。
最近需要给程序加速,开openmp。开openmp之前需要了解以下知识。
but,你真的读懂了 cat /proc/cpuinfo ?
第一件事:
# 总核数 = 物理CPU个数 X 每颗物理CPU的核数
# 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数
查看物理CPU个数
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
查看每个物理CPU中core的个数
cat /proc/cpuinfo| grep "cpu cores"| uniq
查看逻辑CPU的个数
cat /proc/cpuinfo| grep "processor"| wc -l
所以不要认为 cat /proc/info Processor=32 (0~31),就真的有32个cpu哦。
实例
我么拿示例来说一下:
这段的含义时:主机有2个物理cpu。每个物理cpu有8核。
诶? 那processor为啥是32呢?
首先明白:processor 指的是什么?
是啥?
是逻辑cpu的个数。说白了就是你这个cpu给用户看来,他相当于多少个独立的运算单元。
逻辑cpu数=物理CPU个数 × 每颗核数 × 超线程数
32 = 2 × 8 × ?
? = 2 说明我的cpu支持超线程。
超线程
它可使处理器中的1 颗内核(core)如2 颗(core)内核那样在操作系统中发挥作用。这样一来,操作系统可使用的执行资源扩大了一倍,大幅提高了系统的整体性能。