Native, self-contained Cockpit page (plain HTML/JS, no build step) that polls nvidia-smi via cockpit.spawn to show live GPU utilization, memory, temperature, power, fan speed, ~5min history sparklines, and the list of processes using the GPU. No background systemd service; data collection only happens while the page is open.
cockpit-nvidia-gpu
Plugin nativo de Cockpit que agrega una página "GPU" al menú lateral, mostrando el estado en vivo de GPUs NVIDIA (uso, memoria, temperatura, consumo, fan) y los procesos que las están usando.
Por qué existe
Cockpit no trae un panel de GPU. Los plugins de terceros existentes para esto
(por ejemplo cockpit-gpu de binbinsh/gridheap-dev) son proyectos chicos, sin
auditar, con instaladores que compilan contra el código fuente completo de
Cockpit e instalan un servicio systemd persistente sin pedir confirmación
clara. Este plugin es la alternativa: HTML + JavaScript plano, sin build
step, sin dependencias externas, sin nada corriendo en segundo plano — sólo
se ejecuta nvidia-smi bajo demanda mientras la página está abierta.
Requisitos
- Cockpit (probado con versión ≥ 260).
- Driver NVIDIA instalado, con
nvidia-smidisponible en elPATHdel sistema.
Instalación
Recomendado: symlink desde un checkout del repo, así un git pull actualiza
el plugin al instante sin recopiar nada.
git clone https://gitea.mateosaldain.uy/<usuario>/cockpit-nvidia-gpu.git /opt/cockpit-nvidia-gpu
sudo mkdir -p /usr/share/cockpit
sudo ln -s /opt/cockpit-nvidia-gpu/gpu-monitor /usr/share/cockpit/gpu-monitor
Recargá la pestaña de Cockpit en el navegador y debería aparecer la entrada
GPU en el menú, junto a Overview. Si no aparece (paquete cacheado),
como último recurso: sudo systemctl restart cockpit.socket.
Instalación alternativa para desarrollo (sin root)
mkdir -p ~/.local/share/cockpit
ln -s /opt/cockpit-nvidia-gpu/gpu-monitor ~/.local/share/cockpit/gpu-monitor
Desinstalación
sudo rm /usr/share/cockpit/gpu-monitor # borra sólo el symlink
rm -rf /opt/cockpit-nvidia-gpu # opcional: borra también el checkout
Estructura
gpu-monitor/
├── manifest.json # declara la entrada de menú "GPU" en Cockpit
├── index.html # esqueleto de la página
├── gpu.js # toda la lógica: polling, parseo de nvidia-smi, render
└── style.css # estilos autocontenidos
No hay package.json ni paso de build: los archivos se copian o symlinkean
tal cual.
Screenshot
(pendiente)
Extensibilidad
- Multi-GPU: ya soportado.
nvidia-smi --query-gpu=...devuelve una línea CSV por GPU física, ygpu.jsitera todas las líneas, creando una tarjeta por índice de GPU. En un servidor con una sola GPU (como Arkax Server) simplemente se renderiza una tarjeta. - AMD / Intel: toda la obtención de datos pasa por
fetchNvidiaMetrics()engpu.js, que devuelve una forma de datos neutral ({index, util, memUsed, memTotal, tempC, powerW, fanPct}). Para agregar soporte AMD (rocm-smi) o Intel (intel_gpu_top), alcanza con escribir una función equivalente que devuelva la misma forma y elegir cuál usar (por detección del binario disponible o config), sin tocar el resto de la página. - Procesos multi-GPU: la lista de procesos hoy es global (no discrimina
por GPU). Para separarla por GPU, agregar
gpu_uuida--query-compute-appsy cruzarlo con eluuidde cada GPU.
Licencia
MIT — ver LICENSE.