🛠 Surveillance fréquence et charge CPU
Objetivos
Implementar una monitorización del sistema del ODROID-C2: frecuencia real de la CPU por núcleo mediante cpufreq, carga y temperatura — teniendo en cuenta una particularidad del S905: no hay sensor térmico expuesto por el kernel mainline (la matriz U-Boot de amlogic indica «Thermal Sensor: No»), por lo que la monitorización se centra en la frecuencia, la carga y el posible estrangulamiento térmico (throttling).
Hardware
- ODROID-C2 con Armbian/mainline, carcasa con ventilación o disipador (el S905 aguanta pero se calienta)
- Consola SSH
- Paquete sysstat (mpstat) opcional
- >
Código completo
#!/usr/bin/env bash
# surveil.sh — journalise frequence CPU, charge et temperature si disponible
LOG=/var/log/c2-surveillance.csv
echo "horodatage,cpu0_khz,cpu3_khz,load1,temp" > $LOG
while :; do
f0=$(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq 2>/dev/null || echo NA)
f3=$(cat /sys/devices/system/cpu/cpu3/cpufreq/scaling_cur_freq 2>/dev/null || echo NA)
l1=$(cut -d' ' -f1 /proc/loadavg)
t=$(cat /sys/class/thermal/thermal_zone*/temp 2>/dev/null | head -n1 || true)
echo "$(date -Is),$f0,$f3,$l1,${t:-absente}" >> $LOG
sleep 10
done
# charge max volontaire pour observer le comportement (4 coeurs, 60 s)
timeout 60 sh -c 'for i in 1 2 3 4; do : & done; wait'
# governor : performance pour un serveur, powersave/ondemand sinon
sudo cpupower frequency-set -g performance
Verificación esperada
El CSV se rellena cada 10 s. Bajo carga voluntaria, load1 sube hacia 4 y scaling_cur_freq muestra 1 500 000 kHz (frecuencia de fusión del C2, no los 2 GHz de la ficha técnica del S905). En mainline, la columna de temperatura permanece «ausente»: es lo esperado, no es un fallo. Tampoco hay DVFS SCPI: la frecuencia es casi fija según el governor.
Errores frecuentes
- Buscar desesperadamente /sys/class/thermal en mainline: el sensor no está expuesto; apoyarse en loadavg + frecuencia + sensación de la carcasa.
- Confundir 1,5 GHz (fusión del C2) y 2,0 GHz (ficha técnica del S905): la placa nunca llegará a 2 GHz.
- Almacenar el CSV en una microSD barata con escritura continua: desgaste prematuro; preferir eMMC o tmpfs con rotación.
- Olvidar que cpupower puede no estar instalado (instalar linux-tools/cpupower según la distribución).
Otros tutoriales para esta placa
Ejemplos de código para esta placa
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash