Kunpeng 920 7260标称72核,但系统仅识别部分CPU(如36或48核),常见原因包括:BIOS中CPU核心数配置被限制(如误设为“Half Core”或启用Core Disable);UEFI固件版本过旧,存在CPU拓扑识别缺陷;操作系统内核未启用ARM64 SMT/ACPI多核支持(需确认CONFIG_ARM64_ACPI=y、CONFIG_HOTPLUG_CPU=y);或启动参数中存在isolcpus、maxcpus等限制项。排查应按序进行:① 进BIOS确认“Processor Configuration”→“Active Cores”设为“All”且SMT开启;② 升级至华为官方推荐的最新iBMC/BMC及UEFI固件(如V2.12+);③ 检查dmesg | grep -i "acpi\|smp\|cpu"定位初始化阶段报错;④ 验证/boot/grub2/grub.cfg中kernel行无maxcpus=xx等约束;⑤ 使用lscpu、cat /proc/cpuinfo核对逻辑CPU数与拓扑结构。若仍异常,需结合华为eSDK日志工具导出BMC CPU健康状态及ACPI table进行深度分析。
1条回答 默认 最新
风扇爱好者 2026-02-26 19:05关注```html一、现象层:系统可见CPU核数与标称规格严重偏离
Kunpeng 920 7260 是华为基于ARMv8.2-A架构设计的72核(144线程)高性能服务器处理器,但实际部署中常出现
lscpu显示仅36/48/64个逻辑CPU,/proc/cpuinfo中processor编号最大值远低于71,甚至cat /sys/devices/system/cpu/online返回0-35等截断范围。该现象非随机偶发,具有强环境耦合性——同一物理机在不同固件/内核/启动参数组合下呈现不同识别结果。二、配置层:BIOS/UEFI运行时策略直接干预硬件可见性
- Active Cores 设置陷阱:华为iBMC BIOS中“Processor Configuration → Active Cores”默认可能为“Half Core”(即36核模式)或“Quarter Core”,需手动设为 All;
- SMT开关依赖性:Kunpeng 920 的SMT(Simultaneous Multithreading)开启与否影响ACPI _PXM/CPUPM表生成,关闭SMT可能导致OS仅枚举物理核的一半;
- Core Disable List:部分定制化BIOS提供按位掩码禁用特定core(如bit0–bit71),若误写入0x0000FFFF则强制屏蔽高32核。
三、固件层:UEFI/iBMC版本缺陷引发ACPI拓扑解析失败
固件版本 典型问题 影响范围 修复建议 iBMC V2.08 ACPI MADT表缺失GICR结构,导致secondary CPU无法唤醒 所有7260双路机型 升级至V2.12+(含补丁KB2023-ACPI-07) UEFI V2.05 _MAT方法返回错误MPIDR值,ARM64 SMP初始化卡在smp_init() CentOS Stream 9 / EulerOS 22.03 SP1 同步更新UEFI与iBMC(版本绑定校验) 四、内核层:ARM64平台关键配置项缺位导致热插拔失效
必须验证内核编译配置是否满足以下硬性要求(以
zcat /proc/config.gz | grep -E "(ARM64_ACPI|HOTPLUG_CPU|SMP|IRQCHIP)"检查):CONFIG_ARM64_ACPI=y CONFIG_ACPI_GENERIC_GSI=y CONFIG_HOTPLUG_CPU=y CONFIG_ARM64_SMP_ON_UP=y CONFIG_ARM64_ERRATUM_1418040=y # Kunpeng 920必需erratum补丁 CONFIG_ARM64_VHE=y # 启用虚拟化主机扩展(影响GICv3初始化)五、启动层:GRUB参数隐式限制CPU资源暴露面
检查
/boot/grub2/grub.cfg中kernel行是否存在以下高危参数:maxcpus=36—— 强制限制可激活CPU数量;isolcpus=managed_irq,1-35—— 即使未启用irqbalance,也可能触发内核early_param跳过后续core初始化;acpi_enforce_resources=lax—— 在ACPI资源冲突时静默忽略CPU设备而非报错,掩盖根本问题。
六、诊断层:多维度日志交叉验证定位根因
执行标准化诊断流水线:
dmesg -d | grep -A5 -B5 "ACPI.*CPU\|smp:.*bringup\|GICv3"—— 定位ACPI MADT/GICC解析点及SMP bring-up中断位置;acpidump -t | grep -A20 "MADT\|SRAT"—— 提取原始ACPI表结构,比对core count字段;cat /sys/firmware/acpi/table/*/header—— 验证DSDT/SSDT加载完整性;
七、深度分析层:eSDK工具链驱动的硬件可信验证
graph TD A[运行华为eSDK命令] --> B[eSDK-cli --cmd get_bmc_cpu_health] A --> C[eSDK-cli --cmd dump_acpi_tables --output acpi_dump.bin] B --> D[解析CPU状态寄存器:Core Status Map / Thermal Throttle Flag] C --> E[使用iasl -d acpi_dump.bin反编译MADT/SRAT] D & E --> F[比对BMC报告的active core mask与ACPI _MAT返回的MPIDR列表]八、规避与加固:生产环境最小化风险实践
- 建立固件基线清单:所有Kunpeng 920节点统一采用iBMC V2.15 + UEFI V2.18(2024Q2 LTS);
- 内核启动参数白名单机制:
maxcpus和isolcpus列入CI/CD构建阶段静态扫描规则; - 部署Ansible Playbook自动校验:
assert: { that: \"ansible_processor_cores == 72\" }并集成eSDK健康检查模块; - ACPI表哈希固化:首次部署后计算
sha256sum /sys/firmware/acpi/tables/MADT写入CMDB,变更告警。
九、延伸思考:ARM64 CPU热插拔与NUMA拓扑的协同演进
值得注意的是,Kunpeng 920 7260 的72核并非单die设计,而是由4×18核chiplet通过HCCN总线互联。当SRAT表中
Proximity Domain字段缺失或重复时,Linux内核会退化为flat NUMA模型,进而触发topology_parse_cpu_capacity()失败,最终抑制部分cluster的CPU上线。此问题在启用CONFIG_ARM64_AMU_EXTN=y(Activity Monitor Unit)后更为显著,需结合arm64.cpu-map=firmware启动参数显式声明拓扑来源。十、生态兼容层:主流发行版适配现状与补丁追踪
截至2024年,各发行版对Kunpeng 920 7260全核支持状态如下:
- EulerOS 22.03 SP3:已合入华为提交的
arm64: acpi: fix MADT GICC UID overflow for >64 cores(commit 8a3f1c2); - OpenEuler 24.03 LTS:默认启用
CONFIG_ARM64_ACPI_PPTT=y,支持芯片级cache topology发现; - Rocky Linux 9.4:需手动打补丁
0001-arm64-acpi-add-Kunpeng-920-7260-core-mask-hint.patch; - Ubuntu 24.04 LTS:5.15.0-105内核起内置
kunpeng-cpufreq驱动,但需配合iBMC V2.13+才能解锁全部72核功耗管理策略。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报