Cruscotto di telemetria · Qt 6 Widgets · C++20 · MIT
La macchina,
in un colpo d'occhio.
Sette pannelli in una finestra sola: carico per ogni core, memoria e swap,
temperature con il grafico, rete, disco, batteria e i processi più pesanti.
Legge /proc e /sys e disegna tutto con QPainter:
nessun widget di sistema, nessuna immagine, nessun asset — solo Qt 6.
Il campionamento si regola: 5 volte al secondo per default, 25 con
--interval 40.
- 7 pannelli, una finestra
- 5 Hz di default · 25 Hz con
--interval 40
- grafici scorrevoli, finestra regolabile
- paint 3–5 ms per frame
- nessuna dipendenza oltre a Qt 6
ctest: 2 suite con fixture di /proc
Campionare tanto, disegnare il giusto
A 25 Hz il primo tentativo costava il 30 % di un core, quasi tutto in ridisegno.
Adesso campionamento e disegno sono separati: il timer campiona all'intervallo scelto,
il ridisegno avviene al massimo ogni 100 ms, la scansione dei processi una volta al
secondo (con la lista riusata fra un giro e l'altro).
# 25 campioni al secondo nei grafici, ~10 ridisegni al secondo
./monitor-sistema --interval 40 --window 60
# e con la diagnostica del disegno
MON_PAINT_BENCH=1 ./monitor-sistema --interval 40
paint: 4.65 ms/frame, 150 frame, 23.2 campioni/s
Il paint è sceso da 12,65 a 3,3–5,2 ms per frame: fondo in una QPixmap
ricostruita al resize, niente gradienti ricalcolati a ogni frame, antialiasing solo su
testo e linee, decimazione min/max delle serie lunghe (i picchi restano), font in cache.
Verificato, non stimato. Su questo portatile a 20 core, 1280×820 a scala 1,4×:
12,8 % di un core a 25 Hz, ~4 % a 5 Hz. La velocità di scorrimento è
larghezza diviso finestra temporale, quindi si regola con --window
(60 s di default, 30 s per farlo correre).