CPU原来如此

简介

Linux 系统如何查看CPU信息?我的Linux到底是几核、几个CPU?为什么购买的Linux服务器写的两核却只有一个CPU?

CPU信息

查看CPU(Central Processing Unit 中央处理单元)信息有很多相关的命令,我只介绍/proc/cpuinfo

概况

/proc/cpuinfo中记录了 cpu 相关信息,使用终端查看:

cat /proc/cpuinfo

上面命令会列出每一个处理器的相关信息会很长,你可以配合more或者less查看,比如:more /proc/cpuinfo或者less /proc/cpuinfoless可以滚动查看。

processorCPU处理器,从0开始编号。

model_nameCPU型号。

physical idCPU物理ID,也就是CPU个数,从0开始编号。每个处理器的physical id都是0的话就是说这个Linux只有一个CPU。

core idCPU核心ID,从0开始编号。

cpu coresCPU核心个数。

具体个数

通过过滤physical idcore idprocessor他们的编号,然后去重再统计数量来得到CPU、核心、处理器的个数。

使用管道|来进行操作:grep进行对应的筛选,uniq取唯一值,wc -l计算出行数。

1. 查看CPU个数

cat /proc/cpuinfo |grep 'physical id' |uniq |wc -l

2. 查看核心个数(cores)

cat /proc/cpuinfo |grep 'core id' |uniq |wc -l

3. 查看处理器个数(线程 threads)

cat /proc/cpuinfo |grep 'processor' |uniq |wc -l

理解

一个CPU能有多个核心,而每一个CPU核心(core)可以通过超线程技术实现出两个线程(thread),线程的数量依赖于CPU核心数量。

比如:一个单一处理器核心,虽然他可以每秒钟处理成千上万的指令,但是在某一时刻,它只能处理一条指令,这就是单线程;而超线程技术可以把一个物理处理器变成两个逻辑处理器,这时处理器在某一时刻就会有另一个线程在处理指令,它们可以并行处理更多的指令,这就是多线程。

线程(thread)是操作系统能够进行运算调动的最小单位,它被包含在进程(process)之中,是进程中的实际运作单位。想要创建线程就需要先创建一个进程,每一个进程至少有一个线程。

那么,阿里云的ECS服务器有的写的两核,为什么查看核心数只有一个,因为实际上它是单一处理器核心上的两个逻辑处理器。

CPU使用情况

简单介绍下top命令,终端输入top

top

第三行可以看见CPU使用占比 %Cpu:

下方显示了各进程的状态监控:

你也可以使用vmstat去定时打印CPU使用情况:

vmstat <间隔秒> <次数>

比如:vmstat 1 5每隔1秒打印一次,一共只打印5次。


版权声明:

Anand's Blog文章皆为站长Anand Zhang原创内容,转载请注明出处。

包括商业转载在内,注明下方要求的文章出处信息即可,无需联系站长授权。

请尊重他人劳动成果,用爱发电十分不易,谢谢!

请注明出处:

本文出自:Anand's Blog

本文永久链接:https://anandzhang.com/posts/linux/5