理解Linux /proc/cpuinfo
/proc/cpuinfo文件包含系统上每个处理器的数据段落。/proc/cpuinfo 描述中有6个条目适用于多内核和超线程(HT)技术检查:processor, vendor id, physical id, siblings, core id 和 cpu cores。为理解上述信息,首先理解几个概念:
超线程处理器(hyperthreaded processor)和普通的处理器有相同的计算模块,但是超线程处理器有多个执行上下文环境。使用超线程技术可以使一个物理处理器虚拟出多个逻辑处理器,因此一个超线程处理器只有一个物理id,但可以有多个逻辑id。
双核处理器(dual core processor)则有两套计算模块,而这两套模块可以共享L2 cache;双核处理器已有多个物理id。
- /proc/cpuinfo输出个条目意义如下:
- processor:逻辑处理器的唯一标识符。
- physical id:物理封装的唯一标识符。
- core id:内核的唯一标识符(在我的系统中,好像是一个物理封装的唯一标示)。
- siblings:位于相同物理封装中的逻辑处理器的数量。
- cpu cores:位于相同物理封装中的内核数量。
简单地说,如果采用多核技术,一个物理封装(physical id)会对应(cpu cores)个内核(core id);如果采用超线程技术,一个内核会对应(siblings)/(cpu cores)个逻辑处理器(processor)。
假设所有的物理封装一样,则有以下关系:
processor = physical_id * siblings
siblings = cpu cores * 2(超线程数)