这仅在 Linux 虚拟机中观察到。在 /proc/cpuinfo 中,物理 ID 可能非常大,超出了 CPU 的数量。
对于下面的示例,系统有 4 个核心,但物理 ID 为 13。还有另一个虚拟机,只有 2 个核心,但一个物理 ID 是 2。
有人知道虚拟机如何定义 Linux 物理 ID 吗?
处理器:0 vendor_id:GenuineIntel CPU 系列:6 型号:45 型号名称:Intel(R) Xeon(R) CPU E5-2690 0 @ 2.90GHz 步进:7 微码:1808 CPU频率:2900.040 缓存大小:20480 KB 物理 ID:13 兄弟姐妹:1 核心 ID:0 CPU 核心:1 酸度:13 初始 apicid : 13 fpu:是 fpu_exception :是 cpuid级别:13 wp :是的 标志:fpu de tsc msr pae cx8 sep cmov pat clflush mmx fxsr sse sse2 ss ht 系统调用 nx lm constant_tsc rep_good irreparable_spinlock pni pclmulqdq ssse3 cx16 sse4_1 sse4_2 popcnt tsc_deadline_timer aes 虚拟机管理程序 lahf_lm arat epb pln pts dts 博戈米普斯:5800.08 clflush 大小:64 缓存对齐:64 地址大小:46 位物理,48 位虚拟 能源管理: 处理器:1 vendor_id:GenuineIntel CPU 系列:6 型号:45 型号名称:Intel(R) Xeon(R) CPU E5-2690 0 @ 2.90GHz 步进:7 微码:1808 CPU频率:2900.040 缓存大小:20480 KB 物理 ID:13 兄弟姐妹:1 核心 ID:0 CPU 核心:1 酸度:13 初始 apicid : 13 fpu:是 fpu_exception :是 cpuid级别:13 wp :是的 标志:fpu de tsc msr pae cx8 sep cmov pat clflush mmx fxsr sse sse2 ss ht 系统调用 nx lm constant_tsc rep_good irreparable_spinlock pni pclmulqdq ssse3 cx16 sse4_1 sse4_2 popcnt tsc_deadline_timer aes 虚拟机管理程序 lahf_lm arat epb pln pts dts 博戈米普斯:5800.08 clflush 大小:64 缓存对齐:64 地址大小:46 位物理,48 位虚拟 能源管理: 处理器:2 vendor_id:GenuineIntel CPU 系列:6 型号:45 型号名称:Intel(R) Xeon(R) CPU E5-2690 0 @ 2.90GHz 步进:7 微码:1808 CPU频率:2900.040 缓存大小:20480 KB 物理 ID:13 兄弟姐妹:1 核心 ID:0 CPU 核心:1 酸度:13 初始 apicid : 13 fpu:是 fpu_exception :是 cpuid级别:13 wp :是的 标志:fpu de tsc msr pae cx8 sep cmov pat clflush mmx fxsr sse sse2 ss ht 系统调用 nx lm constant_tsc rep_good irreparable_spinlock pni pclmulqdq ssse3 cx16 sse4_1 sse4_2 popcnt tsc_deadline_timer aes 虚拟机管理程序 lahf_lm arat epb pln pts dts 博戈米普斯:5800.08 clflush 大小:64 缓存对齐:64 地址大小:46 位物理,48 位虚拟 能源管理: 处理器:3 vendor_id:GenuineIntel CPU 系列:6 型号:45 型号名称:Intel(R) Xeon(R) CPU E5-2690 0 @ 2.90GHz 步进:7 微码:1808 CPU频率:2900.040 缓存大小:20480 KB 物理 ID:13 兄弟姐妹:1 核心 ID:0 CPU 核心:1 酸度:13 初始 apicid : 13 fpu:是 fpu_exception :是 cpuid级别:13 wp :是的 标志:fpu de tsc msr pae cx8 sep cmov pat clflush mmx fxsr sse sse2 ss ht 系统调用 nx lm constant_tsc rep_good irreparable_spinlock pni pclmulqdq ssse3 cx16 sse4_1 sse4_2 popcnt tsc_deadline_timer aes 虚拟机管理程序 lahf_lm arat epb pln pts dts 博戈米普斯:5800.08 clflush 大小:64 缓存对齐:64 地址大小:46 位物理,48 位虚拟 能源管理:
答案1
物理 ID 旨在指示信息属于哪个物理 CPU。但是,由于 /proc/cpuinfo 大部分是从 CPU 本身提取的,因此很容易造成混淆。
尤其是核心和超线程会混淆物理 ID。在大多数系统中,我遇到的物理 ID 模式是核心超线程。也就是说,核心 1 的物理 ID 为 1,核心 2 的物理 ID 为 1(超线程的数量)。
就你的情况而言,我承认我的数学并不完全支持你的观察结果中央处理器有8个核心和16个超线程。
尝试:
grep "physical id" /proc/cpuinfo
“物理 ID” 的值是什么?我们期望每个核心都会有新的“ID”,从而取得一些进展。
这概括价值观可能有用或没用。