linux 多核与CPUs利用率超过100%问题

lscpu命令可以查看linux下的cpu的详细信息

Socket(s):2 表示可以看到的物理上的CPU
Core(s) per socket:14 表示针对每一个物理CPU而言,内部有14个物理核。也就是说,在一个物理CPU内,有14个物理层面的运算器&控制器,它们是实实在在存在的
Thread(s) per core: 由于Intel采用了超线程技术,所以每个物理核对应2个逻辑核
服务器中插有2个物理CPU, 每个物理CPU有14个物理核,每个物理核有2个逻辑核,故总共56个逻辑核。因此,当操作系统俯视CPU硬件时,它看到的是,在计算机中,有56个核,即有56个运算器&控制器。
针对多核的服务器,我们来看看以下程序
cat test.c
#include <stdio.h>
int main() {
while(1);
return 0;
}
gcc test.c
然后在终端1上执行a.out, 终端2上执行a.out

可以看到有2个CPU核利用率是100%
top之后按1

可以看到CPU17和CPU51这两个逻辑核就是刚才运行的a.out
因此当看到部分CPU的利用率为100%,或者有用过clickhouse的会发现进程占用cpu都达到了800%这样的, 实际上是使用了多个CPU核,这种情况也属于正常。