物理CPU:physical id
硬件上的CPU, 也是主板上CPU的插槽个数
,是计算机上实际配置的CPU个数。常说几颗CPU。
cat /proc/cpuinfo | grep 'physical id'| sort| uniq |wc -l 注意是physical id非phy。
cpu核数:cpu cores
CPU核数
,物理上真实的cpu核,有独立的电路元件以及L1,L2缓存,可以独立地执行指令。 通常每个CPU下的核数都是固定的,如果我们的计算机有两个物理CPU,每个CPU是双核的,那么计算机总共就是四核的
。
cat /proc/cpuinfo | grep "cpu cores" | wc -l
来统计CPU核数。
单核和多核:
逻辑CPU:processor
逻辑CPU=物理CPU个数*每颗CPU核数
逻辑CPU=物理CPU个数*每颗CPU核数*2(超线程开启,只有Intel,AMD不存在)
是否启用超线程:cat /proc/cpuinfo | grep -e "cpu cores" -e "siblings" | sort | uniq
输出举例:
cpu cores : 6
siblings : 6
如果cpu cores数量和siblings数量一致,则没有启用超线程,否则超线程被启用。
逻辑处理器个数 = CPU的线程数
进程:操作系统中资源分配的基本单位
进程可以看作是程序的一次执行过程。一个程序的运行需要CPU时间、内存空间、文件以及I/O等资源。操作系统就是以进程为单位来分配这些资源的,所以说进程是操作系统中资源分配的基本单位。进程之间的资源是独立隔离的,能很好的进行资源管理和保护。
线程:资源调度的基本单位
线程是进程汇总的一个执行任务或者说控制单元,一个进程包含多个线程
线程与进程最大的区别在于,线程是调度的基本单位,而进程则是资源拥有的基本单位。说白了,所谓内核中的任务调度,实际上的调度对象是线程;而进程只是给线程提供了虚拟内存、全局变量等资源。
cpuinfo参数说明对照表,包括CPU制造商、CPU系列代号、主频、逻辑核数、缓存等信息:
输出项 | 含义 |
---|---|
processor | 系统中逻辑处理核的编号。对于单核处理器,则可认为是其CPU编号,对于多核处理器则可以是物理核、或者使用超线程技术虚拟的逻辑核 |
vendor_id | CPU制造商 |
cpu family | CPU产品系列代号 |
model | CPU属于其系列中的哪一代的代号 |
model name | CPU属于的名字及其编号、标称主频 |
stepping | CPU属于制作更新版本 |
cpu MHz | CPU的实际使用主频 |
cache size | CPU二级缓存大小 |
physical id | 单个CPU的标号 |
siblings | 单个CPU逻辑物理核数 |
core id | 当前物理核在其所处CPU中的编号,这个编号不一定连续 |
cpu cores | 该逻辑核所处CPU的物理核数 |
apicid | 用来区分不同逻辑核的编号,系统中每个逻辑核的此编号必然不同,此编号不一定连续 |
fpu | 是否具有浮点运算单元(Floating Point Unit) |
fpu_exception | 是否支持浮点计算异常 |
cpuid level | 执行cpuid指令前,eax寄存器中的值,根据不同的值cpuid指令会返回不同的内容 |
wp | 表明当前CPU是否在内核态支持对用户空间的写保护(Write Protection) |
flags | 当前CPU支持的功能 |
bogomips | 在系统内核启动时粗略测算的CPU速度(Million Instructions Per Second) |
clflush size | 每次刷新缓存的大小单位 |
cache_alignment | 缓存地址对齐单位 |
address sizes | 可访问地址空间位数 |