UI: affichage de la RAM systeme dans la barre laterale

Nouvel endpoint /api/ram (lecture /proc/meminfo, used/total en Mo, 0 hors Linux)
et bloc RAM dans la sidebar a cote du GPU, rafraichi toutes les 3 s. Masque si
pas de /proc/meminfo (Windows/mac).
This commit is contained in:
nathaninline committed 2026-07-23 13:40:53 +02:00
1 parent ee76638f15
commit dbb0ac40a4
7 files changed
+60 -2

No files matched your search

+29
View File
@@ -70,6 +70,35 @@ func handleVram(w http.ResponseWriter, r *http.Request) {
sendJSON(w, 200, gpus)
}
// handleRam renvoie la RAM système {used, total} en Mo (mêmes unités que
// /api/vram → l'UI divise par 1024 pour des Gio). Lit /proc/meminfo (Linux, la
// box de prod). Sur un OS sans /proc, renvoie total=0 → l'UI masque le bloc.
func handleRam(w http.ResponseWriter, r *http.Request) {
out := map[string]any{"used": 0, "total": 0}
b, err := os.ReadFile("/proc/meminfo")
if err == nil {
var totalKB, availKB int
for _, line := range strings.Split(string(b), "\n") {
f := strings.Fields(line)
if len(f) < 2 {
continue
}
v, _ := strconv.Atoi(f[1]) // valeur en kB
switch f[0] {
case "MemTotal:":
totalKB = v
case "MemAvailable:":
availKB = v
}
}
if totalKB > 0 {
out["total"] = totalKB / 1024
out["used"] = (totalKB - availKB) / 1024
}
}
sendJSON(w, 200, out)
}
func handleConfigEnv(w http.ResponseWriter, r *http.Request) {
sendJSON(w, 200, ReadConfig())
}