CPU个数、核心数、make编译最大的线程数
查看CPU的常用命令
[wyn11@localhost ~]$ lscpu
架构: x86_64
CPU 运行模式: 32-bit, 64-bit
字节序: Little Endian
CPU: 64
在线 CPU 列表: 0-63
每个核的线程数: 2
每个座的核数: 16
座: 2
NUMA 节点: 2
厂商 ID: GenuineIntel
CPU 系列: 6
型号: 85
型号名称: Intel(R) Xeon(R) Gold 6226R CPU @ 2.90GHz
步进: 7
CPU MHz: 3580.304
CPU 最大 MHz: 3900.0000
CPU 最小 MHz: 1200.0000
BogoMIPS: 5800.00
虚拟化: VT-x
L1d 缓存: 32K
L1i 缓存: 32K
L2 缓存: 1024K
L3 缓存: 22528K
NUMA 节点0 CPU: 0-15,32-47
NUMA 节点1 CPU: 16-31,48-63
标记: fpu ......
[wyn11@localhost ~]$ cat /proc/cpuinfo
processor : 0//逻辑处理器的id
vendor_id : GenuineIntel
cpu family : 6
model : 85
model name : Intel(R) Xeon(R) Gold 6226R CPU @ 2.90GHz
stepping : 7
microcode : 0x5002f01
cpu MHz : 3600.020
cache size : 22528 KB
physical id : 0//物理封装的处理器的id
siblings : 32//位于相同物理封装的处理器中的逻辑处理器的数量
core id : 0//每个核心的id
cpu cores : 16//位于相同物理封装的处理器中的内核数量
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 22
1、查看物理CPU个数(CPU 路数)
物理CPU个数
CPU物理核心就是计算机上实际配置的CPU个数(机器的主板上实际插入插槽的 CPU 个数)。在 Linux 上可以打开 cat /proc/cpuinfo 来查看,其中的 physical id 就是每个物理CPU的ID,你能找到几个 physical id 就代表你的计算机实际有几个CPU。
[wyn11@localhost ~]$ cat /proc/cpuinfo |grep "physical id"|sort|uniq|wc -l
2
//2个cpu
//sort -u相同的数据中,仅输出一行,表示2个物理CPU
[wyn11@localhost ~]$ grep 'physical id' /proc/cpuinfo | sort -u
physical id : 0
physical id : 1
逻辑CPU的个数
当计算机没有开启超线程时,逻辑CPU的个数就是计算机的核数。 而当超线程开启后,逻辑CPU的个数是核数的两倍。 实际上逻辑CPU的数量就是平时称呼的几核几线程中的线程数量,在linux的cpuinfo中逻辑CPU数就是processor的数量。 CPU中心那块隆起的芯片就是核心,是由单晶硅以一定的生产工艺制造出来的。
//可以用cat或者grep
[wyn11@localhost ~]$ cat /proc/cpuinfo| grep "processor"| wc -l
64
[wyn11@localhost ~]$ grep 'physical id' /proc/cpuinfo
physical id : 0
physical id : 0
physical id : 0
physical id : 0
physical id : 0
physical id : 0
physical id : 0
physical id : 0
physical id : 0
physical id : 0
physical id : 0
physical id : 0
physical id : 0
physical id : 0
physical id : 0
physical id : 0
physical id : 1
physical id : 1
physical id : 1
physical id : 1
physical id : 1
physical id : 1
physical id : 1
physical id : 1
physical id : 1
physical id : 1
physical id : 1
physical id : 1
physical id : 1
physical id : 1
physical id : 1
physical id : 1
physical id : 0
physical id : 0
physical id : 0
physical id : 0
physical id : 0
physical id : 0
physical id : 0
physical id : 0
physical id : 0
physical id : 0
physical id : 0
physical id : 0
physical id : 0
physical id : 0
physical id : 0
physical id : 0
physical id : 1
physical id : 1
physical id : 1
physical id : 1
physical id : 1
physical id : 1
physical id : 1
physical id : 1
physical id : 1
physical id : 1
physical id : 1
physical id : 1
physical id : 1
physical id : 1
physical id : 1
physical id : 1
[wyn11@localhost ~]$
//64个逻辑CPU
总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数
2、查看核心数量
查看每个物理CPU含有的核心个数,通常每个 CPU 下的核数都是固定的,比如你的计算机有两个物理CPU,每个CPU是双核,那么你的计算机就是四核的。通过指令 cat /proc/cpuinfo 查看的到,其中的 core id 指的是每个物理CPU下的 CPU 核的 id,能找到几个 core id 就代表你的计算机有几个核心。
[wyn11@localhost ~]$ cat /proc/cpuinfo| grep "cpu cores"| uniq
cpu cores : 16
[wyn11@localhost ~]$ grep 'core id' /proc/cpuinfo | sort -u |wc -l
16
总的核数量
[wyn11@localhost ~]$ grep 'core id' /proc/cpuinfo |wc -l
64
[wyn11@localhost ~]$ nproc
64
[wyn11@localhost ~]$ cat /proc/cpuinfo | grep processor | wc -l
64
[wyn11@localhost ~]$ grep -c processor /proc/cpuinfo
64
[wyn11@localhost ~]$ getconf _NPROCESSORS_ONLN
64
//总的核心,共64个
总核数 = 物理CPU个数 X 每颗物理CPU的核数
3、查看线程数
cpu支持的线程数 = cpu数目 * 每个cpu含有的核心数目* 每个核心含有的线程数(64=2162)
//查看每个CPU核心含有的线程数
[wyn11@localhost ~]$ cat /proc/cpuinfo |grep "processor"|wc -l
64
[wyn11@localhost ~]$ grep 'processor' /proc/cpuinfo | sort -u | wc -l
64
[wyn11@localhost ~]$ grep 'processor' /proc/cpuinfo | wc -l
64
[wyn11@localhost ~]$
//64个线程
因为CPU是一个影响编译速度的重要因素,所以make -j带上一个参数,可以把项目在进行中的并行编译,现在服务器上的CPU差不多都是多核多线程的,所以完全可以用make -j64,让make最多允许64个编译进程同时执行,这样可以更有效的利用CPU资源。
4、查看CPU信息(型号)
[wyn11@localhost ~]$ cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
64 Intel(R) Xeon(R) Gold 6226R CPU @ 2.90GHz