Collects system performance metrics using Linux sysstat utilities (mpstat, sar, iostat, pidstat) during benchmark execution and post-processes the raw output into crucible's canonical metric format.
- Bash: collection scripts (
sysstat-start,sysstat-stop) - Python: post-processor (
sysstat-post-process.py)
| File | Purpose |
|---|---|
sysstat-start |
Launches configured subtools with --subtools and --interval parameters |
sysstat-stop |
Kills running collectors, compresses output with xz |
sysstat-post-process.py |
Parses raw sysstat output into crucible metrics using CDMMetrics |
rickshaw.json |
Rickshaw integration: endpoint allow/block lists, file deployment, post-process script |
workshop.json |
Engine image build: compiles sysstat v12.5.1 from source |
tool-metadata.json |
Machine-readable description, subtool list, and CDM-indexed status (consumed by crucible tools list) |
multiplex.json |
Parameter validation rules and defaults preset for multiplex (mirrors benchmark multiplex.json) |
--subtools <list>— Comma-separated subtools to run (default:mpstat,sar,iostat,pidstat)--interval <seconds>— Collection interval (default:3)
Beyond num (CPU number), mpstat metrics carry these CDM breakout dimensions, all derived from sysfs CPU topology data collected by sysstat-start and resolved via toolbox's system_cpu_topology.build_cpu_topology()/get_cpu_topology()/get_cpu_node()/get_cpu_cache_domains():
cpu— string alias fornum, matching the naming already used bytool-procstat/tool-kernelnode— NUMA node, when determinable. Collected into acpu-numa-nodes.txtmanifest bysysstat-startrather than copied directly from sysfs: a CPU'snodeNentry is a symlink, and sysfs symlinks report a zero apparent size, which breakscpio'sreadlink()callshared-lN-domain(e.g.shared-l1-domain,shared-l3-domain) — one per cache level present on the host, valued as the formatted CPU range sharing that cache instance (e.g."0-15"). Dynamic per-platform on the collection side; registered in CDM's schema as explicitshared-l1-domainthroughshared-l4-domainfields rather than a wildcard match
- Primary branch is
master - Runs as a profiler tool on master/worker/profiler roles, blocked on client/server
- Standard Bash modelines and 4-space indentation