KernelMonitorSuite
Dashboard de monitoreo en tiempo real con syscalls personalizadas en Linux Kernel 6.12.17, servidor HTTP en C puro (Mongoose) y frontend React 19 — alternativa programática y visual a top/htop.
KernelMonitorSuite es un sistema de monitoreo de procesos Linux construido en tres capas desacopladas: (1) Siete syscalls personalizadas implementadas directamente en el árbol fuente del kernel Linux 6.12.17, registradas en la syscall table x86_64 (números 556–562), que exponen métricas avanzadas de procesos, recursos del sistema, tráfico de red y estimación energética directamente desde espacio de kernel; (2) Un servidor HTTP RESTful escrito en C puro utilizando la biblioteca embebida Mongoose como event-loop y cJSON para serialización, que invoca las syscalls vía syscall() y expone 8 endpoints REST con CORS configurado; (3) Un dashboard SPA en React 19 + Vite que consume la API cada 5 segundos, presentando tablas interactivas de procesos con selección múltiple y envío de SIGKILL, gráficas de área para CPU/RAM y tráfico de red, un gráfico de barras de consumo energético por proceso y una línea de tiempo Gantt del ciclo de vida de los procesos. La arquitectura prescinde de runtimes intermedios (Node.js, Python) para minimizar el overhead y maximizar la precisión de los datos extraídos del kernel.
- 7 syscalls personalizadas en el kernel Linux 6.12.17 registradas en arch/x86/entry/syscalls/syscall_64.tbl (números 556–562), incluyendo detailed_process_list, kill_control, sysresources, energy_usage, network_usage, get_process_by_pid y get_all_process_times
- Cálculo de uso de CPU por proceso con muestreo diferencial de jiffies (delta utime+stime vs. delta_jiffies), sincronizado con spin_lock sobre un array global de snapshots, replicando la precisión de htop desde espacio de kernel
- Algoritmo de estimación de consumo energético por proceso mediante fórmula ponderada sobre CPU (×13), RAM (×5) e I/O bytes leídos/escritos (×3), accediendo directamente a task->ioac.read_bytes y task->ioac.write_bytes
- Servidor HTTP escrito en C puro con Mongoose (event-loop single-thread), tabla de rutas estática type-safe (route_entry[]) y gestión dinámica de buffer con realloc para respuestas JSON de tamaño variable (256 KB inicial)
- Syscall kill_control con validación restrictiva de señales: solo permite SIGKILL y SIGCONT, busca el proceso con find_get_pid() y libera correctamente la referencia con put_task_struct() para evitar memory leaks en kernel space
- Acceso seguro a estructuras internas del kernel (task_struct, mm_struct) protegido con rcu_read_lock()/rcu_read_unlock() y transferencia kernel→userspace con copy_to_user() y put_user()
- Frontend React 19 con polling automático por useEffect + setInterval, componente ProcessTimeline que renderiza un Gantt canvas-free calculando posiciones en % sobre rango de tiempo, y AreaDouble con Recharts para métricas duales en tiempo real
- Alternativa funcional a top/htop con interfaz web interactiva, control de procesos (kill/continue) desde el browser y visibilidad unificada de CPU, RAM, red y energía en un único dashboard
- Footprint mínimo en el backend al usar C puro sin runtime intermedios, logrando baja latencia en la serialización de datos del kernel hacia el frontend
- Arquitectura de tres capas (kernel / C-API / React) totalmente desacoplada: nuevas métricas pueden agregarse implementando una syscall adicional y un endpoint sin modificar el resto del sistema
- Comprensión y aplicación práctica de los subsistemas internos de Linux: scheduler (task_struct, jiffies, utime/stime), gestión de memoria (RSS via get_mm_rss, swap via MM_SWAPENTS), I/O accounting y estadísticas de red a nivel de dispositivo (rtnl_lock, dev_get_stats)
- Capacidad de monitorear hasta 1 024 procesos simultáneamente con datos actualizados cada 5 segundos, incluyendo línea de tiempo de inicio/fin por proceso útil para auditoría y profiling