如何通过脚本获取Intel性能核(P-cores)的数量?
如何通过脚本获取Intel性能核(P-cores)的数量?
嘿,我来帮你解决这个在脚本中获取Intel性能核(P-core)数量的问题,同时也补充了高效核(E-core)的相关方案,方便后续有需要的朋友参考:
Linux系统下的实现方法
方法1:利用CPU频率差异
P-core的最高运行频率通常显著高于E-core,我们可以通过读取每个CPU核心的最大频率来区分统计:
# 第一步:自动获取P-core的最高频率值(取所有核心中的最高频率) MAX_P_FREQ=$(grep -h "" /sys/devices/system/cpu/cpu*/cpufreq/scaling_max_freq | sort -nr | head -n1) # 第二步:统计拥有该最高频率的核心数量,即为P-core总数 P_CORE_COUNT=$(grep -l "$MAX_P_FREQ" /sys/devices/system/cpu/cpu*/cpufreq/scaling_max_freq | wc -l) echo "P-core数量: $P_CORE_COUNT"
方法2:通过sysfs的核心类型标识(内核支持时)
部分较新的Linux内核会在sysfs中直接标记核心的性能类型,你可以通过以下命令快速统计:
# 统计标记为"performance"类型的核心数量(对应P-core) P_CORE_COUNT=$(grep -r "performance" /sys/devices/system/cpu/cpu*/cpufreq/energy_performance_preference | wc -l) echo "P-core数量: $P_CORE_COUNT"
补充:获取E-core(含低功耗E-core)数量
如果后续需要统计高效核的数量,同样可以基于频率差异实现:
MAX_P_FREQ=$(grep -h "" /sys/devices/system/cpu/cpu*/cpufreq/scaling_max_freq | sort -nr | head -n1) # 统计所有最高频率不等于P-core最高频率的核心,即为E-core总数 E_CORE_COUNT=$(grep -v "$MAX_P_FREQ" /sys/devices/system/cpu/cpu*/cpufreq/scaling_max_freq | wc -l) echo "E-core数量: $E_CORE_COUNT"
额外说明
如果需要获取总物理核心数(包含所有类型的核心),可以用以下简单命令:
PHYSICAL_CORE_COUNT=$(lscpu | grep "Core(s) per socket:" | awk '{print $4}') echo "总物理核心数: $PHYSICAL_CORE_COUNT"
备注:内容来源于stack exchange,提问作者VasyaNovikov
相关产品推荐
相关产品推荐

