Skip to content
Back to projects

Kilroy

Agente de monitoreo de energía para Linux que nunca inventa un vatio en silencio: cuando no puede medir de verdad, lo declara en el informe.

This case study hasn't been translated yet — the text below is in Spanish. Read it on the Spanish site

Outcome

Cero

datos inventados cuando no puede medir de verdad

Cada 30 min

informe al día sin que nadie lo pida

100%

del análisis ocurre en tu propio equipo

Tus datos

siguen ahí aunque desinstales el programa

Constraints

  • Sin acceso a RAPL el agente no puede medir consumo real. En vez de estimar en silencio, declara la calidad de la medición en el propio informe y explica qué puede y qué no puede medir ese equipo.
  • Leer RAPL sin sudo exige una regla udev que toca permisos del sistema. El instalador la pide con consentimiento explícito, nunca la aplica por defecto.
  • Desinstalar no borra la base de datos. Los datos de consumo son del usuario, no del programa que los recogió.

El problema

Medir cuánta energía consume cada aplicación en Linux es fácil de hacer mal. Las herramientas que existen suelen dar un número redondo y confiado sin decir de dónde salió, y ese número cambia por completo según el hardware: una CPU con RAPL entrega lecturas reales del contador del procesador; una sin RAPL solo permite estimar.

El problema de fondo no es técnico, es de honestidad del dato. Un número estimado presentado igual que uno medido convierte la herramienta en algo peor que no tener herramienta, porque ahora hay una cifra en la que apoyarse.

Lo que decidí, y por qué

La calidad de la medición es parte del dato, no una nota al pie. kilroy --sources existe antes que cualquier informe: dice qué puede medir ese equipo y qué no. El informe declara si los vatios son medidos o estimados. Es la decisión que ordena el resto del diseño, y la que más código de presentación cuesta.

Un daemon de usuario, no un servicio de sistema. Corre como servicio de usuario de systemd con linger habilitado, así sigue midiendo sin sesión abierta pero sin pedir privilegios de root para operar. El único punto donde se tocan permisos del sistema es la regla udev que permite leer energy_uj sin sudo, y el instalador la pide con consentimiento explícito en vez de aplicarla callando.

El informe se regenera solo. Un timer lo reconstruye cada 30 minutos y otro, a la semana de instalar, recuerda mirarlo. Una herramienta de medición que exige acordarse de correr un comando termina midiendo nada.

Validación contra el mundo real. --validar-desktop compara contra un medidor de enchufe externo y --validar-laptop contrasta power_now de la batería contra RAPL ciclo a ciclo. Sin una forma de contrastar, la calidad declarada sería otra afirmación sin respaldo.

Qué me llevo

Que 53 de los archivos del proyecto sean pruebas no es disciplina por gusto: en una herramienta de medición, un error silencioso no se nota nunca. El fallo no llega como una excepción, llega como un número plausible.