user@devops:~$ cat README.md
IRQ Watch
# Descripción
IRQ Watch (cpp-irq-watch) es un monitor de interrupciones del kernel de Linux escrito en C++23 que lee /proc/interrupts y muestra la distribucion de interrupciones por nucleo de CPU. Parseo robusto: header de CPUs, filas IRQ con conteos por nucleo, entradas nombradas (NMI, LOC, RES, ...), entradas de conteo unico (ERR, MIS — rellenadas con ceros) y lineas de continuacion multi-linea (filas que envuelven en maquinas con muchos CPUs). Tabla top-N por actividad (--top N) con columna por CPU y total, nombres truncados a 18 chars y columnas alineadas; semaforo de color por actividad: verde <500 int/s, amarillo <5000, rojo >=5000 (dim = inactivo), y en modo snapshot por magnitud del total (<10M verde, <1G amarillo, >=1G rojo). Modo watch en vivo cada N segundos (--watch N) con tasas delta (interrupciones por segundo por IRQ y por CPU), limpieza de pantalla y flush (salida completa incluso con timeout/kill). Modo demo (--demo) con muestra sintetica embebida cuyos contadores crecen con un LCG — permite ver el tool en contenedores/VMs donde /proc/interrupts esta vacio o enmascarado. Salida JSON completa (--json) con {cpus, irqs[{irq,name,counts,total|rate}], summary{irqs,cpus,total,total_rate}} y formato de numeros legible (12.3k, 987.7M, 1.2G). 19 tests de auto-verificacion (--selftest): parseo sintetico (header, nombradas, ERR/MIS, continuaciones), deltas, formateo y smoke test condicional contra /proc real. Cero dependencias: compilacion directa con g++ -std=c++23.
# Características principales
$ Parseo robusto de /proc/interrupts: header de CPUs, filas IRQ con conteos por nucleo, entradas nombradas (NMI, LOC, RES) y conteo unico (ERR, MIS)
$ Lineas de continuacion multi-linea: filas que envuelven en maquinas con muchos CPUs se completan y concatenan al nombre del dispositivo
$ Tabla top-N por actividad (--top N) con columna por CPU y total; nombres truncados a 18 chars con columnas alineadas
$ Semaforo de color: verde <500 int/s, amarillo <5000, rojo >=5000 (dim = inactivo); en snapshot, por magnitud del total (<10M verde, <1G amarillo, >=1G rojo)
$ Modo watch en vivo cada N segundos (--watch N) con tasas delta: interrupciones por segundo por IRQ y por CPU, con limpieza de pantalla y flush
$ Modo demo (--demo) con muestra sintetica embebida y contadores LCG para contenedores/VMs donde /proc/interrupts esta vacio o enmascarado
$ Salida JSON completa para scripting (--json): cpus, irqs[{irq,name,counts,total|rate}] y summary con total y total_rate
$ 19 tests de auto-verificacion (--selftest): parseo sintetico de header/nombradas/ERR-MIS/continuaciones, deltas, formateo y smoke test condicional contra /proc real
# Galería
# Tecnologías utilizadas