You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
cpuinfo: arm64 parser ignores CPU implementer/variant/part/revision, so CPU identity is empty on arm64 servers #875
On arm64 servers, /proc/cpuinfo has no model name line. The CPU identity is only given by the CPU implementer, CPU architecture, CPU variant, CPU part and CPU revision fields (printed by the kernel in arch/arm64/kernel/cpuinfo.c).
parseCPUInfoARM only reads processor, BogoMIPS, Features and model name, so on these machines every CPUInfo has empty VendorID, CPUFamily, Model, ModelName and Stepping. Downstream, node_exporter's node_cpu_info (--collector.cpu.info) carries only the cpu label on arm64, with no vendor, family, model or model_name.
Seen on Google Cloud Axion (c4a) instances, kernel 6.12, with node_exporter v1.10.2 (procfs v0.19.0). The parser is unchanged on master (v0.22.0).
/proc/cpuinfo (first CPU, Google Axion, 8 vCPU)
processor : 0
BogoMIPS : 2000.00
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x0
CPU part : 0xd4f
CPU revision : 1
The other 7 CPUs repeat the same block.
Proposal
Parse the five CPU * fields in parseCPUInfoARM, mapping them the way lscpu does: implementer to VendorID, architecture to CPUFamily, part to Model, r<variant>p<revision> to Stepping. Resolving the implementer and part to names (here ARM and Neoverse-V2) could be left to consumers, or done with a small lookup table.
Previous ARM work in this area: #291, #294, #296. The open #297 does not cover these fields.
I'm happy to send a PR with test fixtures if the mapping above sounds right.
I'd like to work on this — plan is to extend parseCPUInfoARM to parse implementer, CPU variant, CPU part, and CPU revision into the existing CPU identity fields (matching the x86 parser's output contract), with a real-arm64 fixture following the repo's testdata pattern. PR shortly.
Activity
CodeAlex52 commentedon Sep 29, 2026
I'd like to work on this — plan is to extend
parseCPUInfoARMto parseimplementer,CPU variant,CPU part, andCPU revisioninto the existing CPU identity fields (matching the x86 parser's output contract), with a real-arm64 fixture following the repo's testdata pattern. PR shortly.