Skip to content

feat: system metrics improvements — CPU/GPU fixes and layout#14

Merged
simonCatBot merged 20 commits intomasterfrom
feat/system-metrics-improvements
Mar 31, 2026
Merged

feat: system metrics improvements — CPU/GPU fixes and layout#14
simonCatBot merged 20 commits intomasterfrom
feat/system-metrics-improvements

Conversation

@simonCatBot
Copy link
Copy Markdown
Owner

Summary

Fixes and improvements to the System Metrics dashboard, plus a tab reordering.

CPU fixes

  • Frequency always 0: Was using (always 0 in systeminformation). Fixed to use from .
  • Enhanced details: Per-core load grid (color-coded green/yellow/red), CPU temperature and load average in stats row, frequency details line. Layout now mirrors the GPU card.

GPU fixes

  • Wrong name: UI was showing the generic (from rocminfo) instead of . Route now maps (derived from gfx version lookup) to the field.
  • Wrong GFX ID: Strix Point has Device ID → , but rocminfo reports (the family identifier). Added that uses the PCI Device ID to produce the correct gfx version string. GFX ID subtitle now also uses monospace font.
  • Temperature next to frequency: Moved temperature into the stats row alongside frequency (previously was a separate line below the power row).

Layout

  • Tab reordering: System Memory MetricRow is now positioned between the Processor card and the GPU card (was at the bottom of the main metrics list).

API

  • Added to CPU metrics for the per-core display.

Tests

  • Unit tests: 816 passed ✅
  • TypeScript: no errors ✅

Developer added 20 commits March 30, 2026 23:11
…eorder layout

CPU improvements:
- Fix CPU speed always showing 0: use cpuInfo.speed from si.cpu() instead
  of cpuData.cpus[0].speed which was always 0 in systeminformation.
- Add per-core load grid showing each core's individual usage %, with
  color coding (green/yellow/red based on load threshold).
- Add CPU temperature and load average to the stats row.
- Add a frequency details line (cores + MHz).

GPU improvements:
- Fix GPU name: route now maps marketingName (from gfx version lookup)
  to the name field, so UI correctly shows 'AMD Radeon 8060S' instead
  of the generic 'AMD Radeon Graphics' from rocminfo.
- Fix GFX ID: add resolveGfxVersion() which uses the Device ID (PCI ID)
  to determine the correct gfx version string. Device ID 0x1502 maps
  to gfx1151 (Strix Point / AMD Radeon 8060S), fixing the gfx1100
  mismatch that rocminfo was reporting. Also fix GFX ID display to use
  monospace font in the subtitle.
- Move GPU temperature next to frequency in the stats row.

Layout:
- Move System Memory MetricRow between Processor card and GPU card
  (was at the bottom of the main metrics list).
- CPU and GPU now have parallel detailed layouts with usage bar,
  stats row, and detailed info sections.

API:
- Add coreLoads array to CPU metrics for per-core display.
si.cpuCurrentSpeed().avg provides the actual current clock speed in MHz,
replacing the static max frequency in the CPU stats row.
Previously temp was gated behind currentClockMHz in a combined conditional,
so if clock was 0 temp wouldn't show either. Now each stat (temp,
frequency, power) renders independently like the CPU stats row.
- Clock regex used 'Mhz' (lowercase h) but rocm-smi outputs 'Mhz'
  (uppercase H) — add case-insensitive /i flag to fix currentClockMHz.
- Add maxClockMHz parsing: find the highest supported sclk frequency
  (marked with *) in the supported frequencies list.
- Override maxClockMHz in detectROCm with the rocm-smi resolved value.
The --showtemperature call was failing on some systems. The temperature
is already in rocm-smi -a output so we now parse it from there directly
and merge it into the GPU object alongside currentClockMHz.
@simonCatBot simonCatBot merged commit ed927a3 into master Mar 31, 2026
4 checks passed
@simonCatBot simonCatBot deleted the feat/system-metrics-improvements branch March 31, 2026 07:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant