Overhaul TUI: Flex, charts, CPU Analyzer heatmap#47
Draft
emansom wants to merge 1 commit intolevel1techs:mainfrom
Draft
Overhaul TUI: Flex, charts, CPU Analyzer heatmap#47emansom wants to merge 1 commit intolevel1techs:mainfrom
emansom wants to merge 1 commit intolevel1techs:mainfrom
Conversation
0496ab4 to
2e3e88a
Compare
Contributor
Author
|
Was browsing the web for CPU heatmap designs, came across this tweet from @HumbleUser33 and it looked very intriguing and exactly the kind of data visualization showing off the strengths of Ported his code over and the result looks like this:
@HumbleUser33 Would love your input on this project, and how to make dashboard data visualization more useful! |
27d9467 to
d05d438
Compare
Rework the TUI dashboard to maximize screen use and add rich data visualizations. Replace static percentage layouts with Ratatui Flex API, convert most panels to time-series charts, and add a histogram-based CPU Analyzer panel inspired by HumbleUser33's CPU-Heatmap project. Layout engine: - Fill(1) + Flex::SpaceBetween for equal-width columns - Fixed panels: Length(h), growable: Fill(h), truncated: Fill(1) — no wasted vertical space - Sparkline width derived from column width, not fixed breakpoints; left-padded to fill immediately CPU Analyzer panel: - Histogram heatmap: time-distribution of frequency and load per physical core, heat-colored bins over 10s history window (configurable via chart_history_secs) - Groups logical CPUs by physical core via sysfs topology/core_id (C0 bold, Th1/Th2 grey) - Multi-NUMA: per-CCD aggregated rows, "CCD Analyzer" - Always-visible Power, L3 HR, DRAM BW side columns; greyed out with N/A when data unavailable - Bottom-up vertical histogram bars with scale labels Chart conversions: - Power, Storage, Network, Fans, CPU Freq, Voltage, GPU, Memory → Ratatui Chart with Braille markers - 12-color palette ordered for maximum contrast - CPU Freq groups by NUMA node on multi-NUMA systems - Memory tracks RAM/Swap utilization over time New sensor sources: - perf_cache: L3 hit rate via perf_event_open(2) LLC counters; degrades when perf_event_paranoid blocks - resctrl: LLC occupancy + memory bandwidth via /sys/fs/resctrl/ (Intel RDT / AMD QoS) NUMA topology: - read_numa_nodes() for CCD awareness - read_physical_core_map() for SMT grouping - parse_cpulist() for "0-3,8-11" range strings Cleanup: - Removed MultiCol, NetIfaceData, HashMap import - Removed HeatmapCell, HeatmapSection, HeatmapWithFallback, PanelContent::Heatmap - Thermal panel: sparklines only, no fallback - net_bar moved to #[cfg(test)] Config: - Added [dashboard] chart_history_secs (default 10) Co-authored-by: HumbleUser33 <sadheal@live.com>
d05d438 to
a0456c7
Compare
Contributor
Author
|
Claude Code limits hit, will try to setup local. Got a 16GB 9070 XT and 96GB of DDR5, had some success with OpenCode + Qwen2.5-Coder. Any recommendations? @eous |
|
Looks great !
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Description
Rework dashboard to fill up the screen with as much stuff in a reasonable displayable format, leaving as little blank space possible.
In future PRs, some panels from the dashboard that aren't really what siomon was designed to show should be removed.
e.g. we should show front and center what
siomoncan specifically show what other tools cannot.Screenshots
Summary
Fill(1)+Flex::SpaceBetweenfor equal-width columns.Fixed panels get exact sizing, growable chart panels absorb surplus.
Per-physical-core frequency + per-thread load rows with heat-colored bins.
Groups by core (
C0/Th1/Th2); multi-NUMA shows per-CCD rows.Always-visible Power, L3 HR, DRAM BW side columns (greyed N/A when unavailable).
Chartwith Braille markers. 12-color contrast palette.perf_cache(L3 hit rate viaperf_event_openLLC counters) andresctrl(LLC occupancy + MBM via/sys/fs/resctrl/). Both degrade gracefully.chart_history_secs(default 10s).MultiCol,NetIfaceData, old heatmap infra. Thermal simplified to sparklines only.Attribution
CPU Analyzer visualization inspired by
HumbleUser33/CPU-Heatmap
(tweet).