需区分标称规格与实时状态:用lscpu查物理核心数、siblings与cpu cores对比判断超线程,cat读cpuinfo_cur_freq获瞬时频率,结合lscpu三字段交叉验证睿频启用情况。

如果您在麒麟操作系统中需要确认CPU的物理核心数量、逻辑线程总数以及当前实际运行频率,以便进行性能调优、散热评估或排查系统响应迟缓问题,则必须区分“标称规格”与“实时状态”——前者反映硬件设计能力,后者体现当前负载下的动态表现。仅看lscpu中的CPU MHz字段会误判瞬时性能,仅数processor行又无法识别超线程是否启用。
查看CPU核心数与线程数
第一步:打开终端(Ctrl + Alt + T),执行以下命令获取逻辑处理器总数:
lscpu | grep "CPU(s)" | head -n1
第二步:提取物理核心数,避免将超线程虚拟核误认为真实核心:
lscpu | grep "Core(s) per socket" | awk '{print $4}'
第三步:验证超线程是否启用——若siblings数值大于cpu cores,则说明已开启;该判断比单纯数/proc/cpuinfo中processor行更可靠,因为后者包含所有逻辑核,无法自动过滤虚拟线程。【siblings值必须严格大于cpu cores才代表超线程激活】
方法二:用nproc命令快速获知当前可用线程数:
nproc --all
查看CPU当前实时频率
直接读取/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq文件,该值来自硬件寄存器,单位为kHz,精度最高,不受内核采样周期影响。
执行命令:
cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq
若需转换为MHz并四舍五入到小数点后一位:
echo "scale=1; $(cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq) / 1000" | bc
注意:此路径下每个cpuN目录对应一个逻辑核,cpu0仅反映首个核心频率;如需全部核实时值,用循环批量读取:
for i in $(seq 0 $(($(nproc)-1))); do echo "cpu$i: $(cat /sys/devices/system/cpu/cpu$i/cpufreq/cpuinfo_cur_freq 2>/dev/null) kHz"; done
交叉验证频率与规格一致性
运行lscpu命令,重点比对三处字段:
• “CPU MHz”行显示的是内核统计周期内的平均频率,非瞬时值;
• “Model name”末尾标注的@ X.XXGHz是厂商标称的基准或睿频上限;
• “CPU max MHz”字段(若有)反映当前策略允许的最高频率档位。
若发现cpuinfo_cur_freq持续低于Model name中标注值,且CPU max MHz字段缺失,则大概率是BIOS中禁用了Turbo Boost或内核未加载acpi-cpufreq驱动。
方法一:检查是否启用睿频技术:
grep -i "turbo\|boost" /proc/cpuinfo | head -1
方法二:确认当前调频策略是否限制上限:
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor


















