Task · OPN-0139

Keep per-queue interrupt and iflib thread identity in the activity collector

Description

activity_command_cpu_percent strips the {thread-name} suffix, so intr{irq…: :rxqN}, kernel{if_io_tqg_N} and eastpect worker threads collapse into one command. Those threads show per-RX-queue and per-CPU packet-processing load without SSH, including PPPoE traffic landing on a single RX queue and the Zenarmor worker’s CPU. Start with a spike: capture one live get_activity response and confirm the thread names exist and are stable. Then keep identity for an allowlist of intr/iflib/eastpect patterns behind the existing cap or an opt-in flag.

Acceptance Criteria

Definition of Done

Implementation Plan

Inspect source contracts and live evidence where required; implement bounded telemetry with fixtures, regenerate shared artifacts, review and run just check before landing.

Implementation Notes

Two samples confirmed stable if_io_tqg_0..11 and named eastpect threads: configctl system diag activity json and the authenticated REST get_activity endpoint. NIC rxq interrupt threads were not observed on this host; their allowlisted support must be fixture-proven, not claimed live. REST reached through localhost on existing SSH transport for inspection only; exporter remains REST-only.

Preserves allowlisted iflib, NIC rxq and Eastpect CPU/thread identity with IRQ numbers removed; process memory stays deduplicated under original process command. Shared 128-label budget plus overflow applies across CPU/thread/memory maps. API-path red/green fixture, cap and fallback mutation checks passed.

Final Summary

Live REST/configd samples confirmed stable iflib and Eastpect thread names. Allowlisted CPU/thread labels retain identity within the shared cap, while process memory stays deduplicated. API fixture, cap/fallback tests and race suite passed. NIC rxq grammar fixture-proven, not observed live. just gen and just check passed.

View the source file on GitHub