user@devops:~$ cat README.md
Slab Watch
# Descripción
Slab Watch (cpp-slab-watch) es un monitor del slab allocator del kernel de Linux escrito en C++23 que lee /proc/slabinfo y muestra el estado de las caches de objetos del kernel. Parseo robusto: banner de version, lineas de header #, formato moderno con secciones : tunables y : slabdata, formato legacy de 6 campos (kernels antiguos sin slabdata) y lineas malformadas que se saltan sin romper el resto. Calculo de memoria por cache: num_slabs x pagesperslab x page_size (total) y active_slabs x pagesperslab x page_size (activa), con sysconf(_SC_PAGESIZE) real. Tabla top-N por memoria (--top N) con nombre truncado a 20 chars, objetos activos/totales, objsize, slabs, memoria y utilizacion; semaforo de color: verde <=70%, amarillo <=90%, rojo >90% (dim = inactivo), con --no-color para pipes/logs. Modo watch en vivo cada N segundos (--watch N) con tasas delta (objetos/s y bytes/s por cache), tiempo transcurrido, limpieza de pantalla y flush (salida completa incluso con timeout/kill). Modo demo (--demo) con muestra sintetica embebida de 32 caches realistas (kmalloc-*, dentry, filp, inode_cache, TCP, ...) cuyos contadores crecen — permite ver el tool en contenedores/VMs donde /proc/slabinfo esta enmascarado. Salida JSON completa (--json) con {caches[{name, active_objs, num_objs, objsize, objperslab, pagesperslab, active_slabs, num_slabs, active_mem, total_mem, utilization}], summary{page_size, caches, total_objs, active_objs, total_mem, active_mem, utilization}} y formato de numeros legible (12.3k, 987.7M, 1.2G). 34 tests de auto-verificacion (--selftest): parseo sintetico (moderno, legacy, malformado, vacio), matematica de memoria, agregacion, formateo, tasas y smoke test condicional contra /proc real. Cero dependencias: compilacion directa con g++ -std=c++23.
# Características principales
$ Parseo robusto de /proc/slabinfo: banner de version, header #, formato moderno con secciones tunables/slabdata y formato legacy de 6 campos
$ Lineas malformadas o no numericas se saltan sin romper el resto del parseo
$ Calculo de memoria por cache: num_slabs x pagesperslab x page_size (total) y active_slabs x pagesperslab x page_size (activa), con sysconf real
$ Tabla top-N por memoria (--top N): nombre truncado a 20 chars, objetos activos/totales, objsize, slabs, memoria y utilizacion
$ Semaforo de color por utilizacion: verde <=70%, amarillo <=90%, rojo >90% (--no-color desactiva ANSI)
$ Modo watch en vivo cada N segundos (--watch N) con tasas delta: objetos/s y bytes/s por cache, tiempo transcurrido, limpieza de pantalla y flush
$ Modo demo (--demo) con muestra sintetica de 32 caches realistas (kmalloc-*, dentry, filp, inode_cache, TCP) con contadores crecientes para contenedores/VMs
$ Salida JSON completa para scripting (--json) y 34 tests de auto-verificacion (--selftest) con smoke test condicional contra /proc real
# Galería
# Tecnologías utilizadas