$ cd ../
Slab Watch — bash

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

Terminal del proyecto
Slab Watch - Terminal del proyecto
Vista movil
Slab Watch - Vista movil

# Tecnologías utilizadas

C++23