diff options
| author | Paul Buetow <paul@buetow.org> | 2026-05-08 19:43:33 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-05-08 19:43:33 +0300 |
| commit | f86699a94bdde7d973ba5d6fa3e7ca4ab2f234fb (patch) | |
| tree | c2e11bfa4fdac965623a8058716c514fce507eba /internal/tui/dashboard/model.go | |
| parent | c41a38ef55bb80681a6cc0b2161f8e84bfabcf17 (diff) | |
add duration metric, tolerate missing tracepoints, ship el8 build
- Bubbles, treemap, icicle, and the live flamegraph 'b' cycle now include
syscall duration (sum) as a third metric alongside events and bytes.
Statsengine snapshots expose TotalLatencyNs to support this.
- AttachAll takes an optional warn callback. Production passes one so older
kernels that lack newer tracepoints log a warning and keep going instead
of aborting startup.
- Dockerfile.el8 + scripts/build-with-docker-el8.sh + mage buildDockerEl8
produce ior.el8, a static binary built against Rocky Linux 8 glibc for
RHEL/Rocky/Alma 8 hosts.
- README.md documents installing mage and the new el8 target.
Diffstat (limited to 'internal/tui/dashboard/model.go')
| -rw-r--r-- | internal/tui/dashboard/model.go | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/internal/tui/dashboard/model.go b/internal/tui/dashboard/model.go index 850a483..42a9ad4 100644 --- a/internal/tui/dashboard/model.go +++ b/internal/tui/dashboard/model.go @@ -713,10 +713,14 @@ func sortedProcessSnapshots(rows []statsengine.ProcessSnapshot, metric bubbleMet } func processMetricValue(proc statsengine.ProcessSnapshot, metric bubbleMetric) uint64 { - if metric == bubbleMetricBytes { + switch metric { + case bubbleMetricBytes: return proc.Bytes + case bubbleMetricDuration: + return proc.TotalLatencyNs + default: + return proc.Syscalls } - return proc.Syscalls } func processSelectionLabel(proc statsengine.ProcessSnapshot) string { @@ -1289,10 +1293,15 @@ func nextVizMode(current tabVizMode, allowed []tabVizMode) tabVizMode { } func nextBubbleMetric(metric bubbleMetric) bubbleMetric { - if metric == bubbleMetricBytes { + // 3-way cycle: count (events) → bytes → duration → count. + switch metric { + case bubbleMetricCount: + return bubbleMetricBytes + case bubbleMetricBytes: + return bubbleMetricDuration + default: return bubbleMetricCount } - return bubbleMetricBytes } func tickCmd(d time.Duration) tea.Cmd { |
