如何查看特定CPU核心属于P核心还是E核心组?有没有办法列出正在运行的 Linux x86_64 alder Lake 系统中有关性能/能源核心的信息?比如,打印任何 sysfs 参数?
我们可以识别哪个核心启用了SMT(超线程)。运行:
lscpu --all --extended
这是 12900K 的结果:
➜ lscpu --all --extended
CPU NODE SOCKET CORE L1d:L1i:L2:L3 ONLINE MAXMHZ MINMHZ
0 0 0 0 0:0:0:0 yes 6700.0000 800.0000
1 0 0 0 0:0:0:0 yes 6700.0000 800.0000
2 0 0 1 1:1:1:0 yes 6700.0000 800.0000
3 0 0 1 1:1:1:0 yes 6700.0000 800.0000
4 0 0 2 2:2:2:0 yes 6500.0000 800.0000
5 0 0 2 2:2:2:0 yes 6500.0000 800.0000
6 0 0 3 3:3:3:0 yes 6500.0000 800.0000
7 0 0 3 3:3:3:0 yes 6500.0000 800.0000
8 0 0 4 4:4:4:0 yes 6500.0000 800.0000
9 0 0 4 4:4:4:0 yes 6500.0000 800.0000
10 0 0 5 5:5:5:0 yes 6500.0000 800.0000
11 0 0 5 5:5:5:0 yes 6500.0000 800.0000
12 0 0 6 6:6:6:0 yes 6500.0000 800.0000
13 0 0 6 6:6:6:0 yes 6500.0000 800.0000
14 0 0 7 7:7:7:0 yes 6500.0000 800.0000
15 0 0 7 7:7:7:0 yes 6500.0000 800.0000
16 0 0 8 8:8:8:0 yes 3900.0000 800.0000
17 0 0 9 9:9:8:0 yes 3900.0000 800.0000
18 0 0 10 10:10:8:0 yes 3900.0000 800.0000
19 0 0 11 11:11:8:0 yes 3900.0000 800.0000
20 0 0 12 12:12:9:0 yes 3900.0000 800.0000
21 0 0 13 13:13:9:0 yes 3900.0000 800.0000
22 0 0 14 14:14:9:0 yes 3900.0000 800.0000
23 0 0 15 15:15:9:0 yes 3900.0000 800.0000
现在,查看
CPU
列和 CORE
列。例如:
请注意,此方法仅在您未在 BIOS 中明确禁用 P-core 的 SMT 时才有效。如果您在 BIOS 中禁用了 SMT,您可以按照 Peter 评论中的建议查看
MAXMHZ
列。
不需要根据频率或线程数等处理器特性进行猜测的更准确答案是,此信息在
/sys
伪文件系统中公开:
在 Alder Lake(和其他混合 Intel 架构一样)上,不是
/sys/devices/cpu
,而是有两个目录:/sys/devices/cpu_atom/
和 /sys/devices/cpu_core/
,第一个 (cpu_atom) 用于 e-core,第二个 (cpu_core) 用于存储p 核。
每个目录内都有一个名为
cpus
的文件,其中包含 cpu 范围编号。
例如,在我的 i7-1360P 中:
/sys/devices/cpu_core/cpus
包含 0-7
(四个 p 核,每个核有两个线程)/sys/devices/cpu_atom/cpus
包含 8-15