Linux cpuinfo 详解

Linux 中通过 cat /proc/cpuinfo 查看 CPU 信息,但要确定几个物理 CPU、几核、几线程,需要理解各字段的含义。
判断依据:
- 具有相同 core id 的 cpu 是同一个 core 的超线程。
- 具有相同 physical id 的 cpu 是同一颗 cpu 封装的线程或 cores。
统计脚本:
echo "logical CPU number:"
# 逻辑 CPU 个数
cat /proc/cpuinfo | grep "processor" | wc -l
echo "physical CPU number:"
# 物理 CPU 个数
cat /proc/cpuinfo | grep "physical id" | sort -u | wc -l
echo "core number in a physical CPU:"
# 每个物理 CPU 中 Core 的个数
cat /proc/cpuinfo | grep "cpu cores" | uniq | awk -F: '{print $2}'
# 查看 core id 的数量,即所有物理 CPU 上的 core 个数
cat /proc/cpuinfo | grep "core id" | uniq | wc -l
# 每个物理 CPU 中逻辑 CPU 的个数
cat /proc/cpuinfo | grep "siblings"
各字段含义(/proc/cpuinfo 中与多内核和超线程检查相关的 6 个条目):
processor:逻辑处理器的唯一标识符。physical id:每个物理封装的唯一标识符。core id:每个内核的唯一标识符。siblings:位于相同物理封装中的逻辑处理器数量。cpu cores:位于相同物理封装中的内核数量。vendor id:英特尔处理器为GenuineIntel。
判断规则:
- 拥有相同 physical id 的逻辑处理器共享同一物理插座,每个 physical id 代表一个唯一物理封装。
- siblings 表示该物理封装上的逻辑处理器数量。
- 每个 core id 代表一个唯一的处理器内核,相同 core id 的逻辑处理器位于同一内核。
- 若一个以上逻辑处理器拥有相同 core id 和 physical id,则系统支持超线程。
- 若两个及以上逻辑处理器拥有相同 physical id 但 core id 不同,则为多内核处理器。
判断是否 64 位:检查 cpuinfo 的 flags 区段是否有 lm(long mode)标识——64 位处理器有,32 位没有。