feat: add NUMA node and shared-cache-domain breakouts to mpstat metrics - #69
Conversation
Closes tool-sysstat#68 (node breakout item; generalizes the L3-only ask to every cache level a platform reports). Also adds a `cpu` string alias for `num` matching tool-procstat/tool-kernel naming. Depends on toolbox's build_cpu_topology()/get_cpu_node()/get_cpu_cache_domains() (toolbox PR#131) and CDM's explicit shared-lN-domain schema fields (CommonDataModel PR#208), both merged.
PR Review: tool-sysstat#69 — feat: add NUMA node and shared-cache-domain breakouts to mpstat metricsSummary: Adds NUMA node and shared-cache-domain breakout dimensions to mpstat metrics and collects the required sysfs CPU topology and cache data via Issues
File Coverage
Limitations
VerdictApprove with comments — The PR is fully functional, safe to merge, and correctly resolves the requested features. The identified issues are minor suggestions that can be easily fixed by the author or in a follow-up. |
|
Thanks for the review — responding to both findings:
Unregistered cache-level (L5+) concern: Declining the suggested filter. This is intentional, not an oversight: |
atheurer
left a comment
There was a problem hiding this comment.
LGTM! Great work adding NUMA node and shared-cache-domain breakouts to mpstat metrics, and cleanly handling sysfs symlinks via cpu-numa-nodes.txt.
Summary
node(NUMA node) andshared-l1-domainthroughshared-l4-domain(per-cache-level CPU grouping) breakout dimensions to mpstat metrics, plus acpustring alias fornummatchingtool-procstat/tool-kernelnaming conventions.sysstat-startnow also collectscache/index*/{level,shared_cpu_list}sysfs data and resolves each CPU's NUMA node into acpu-numa-nodes.txtmanifest (sysfsnodeNentries are symlinks, which report a zero apparent size and breakcpio'sreadlink()call — same workaround pattern already used fornetdev-types.txt).sysstat-post-process.pywires the new toolbox helpers (get_cpu_node(),get_cpu_cache_domains()) intoprocess_mpstat().Dependencies (both merged)
build_cpu_topology()/get_cpu_node()/get_cpu_cache_domains()shared-l1-domain..shared-l4-domainschema fieldsTest plan
process_mpstat(), confirmed output correctly containscpu/node/shared-lN-domainmatching the host's real topologyshared-l3-domainaccepted, unregisteredshared-l5-domaincorrectly rejected🤖 Generated with Claude Code