🛠 Surveillance fréquence et charge CPU
Objectifs
Mettre en place une surveillance système de l'ODROID-C2 : fréquence CPU réelle par cœur via cpufreq, charge, et température — en tenant compte d'une particularité du S905 : pas de capteur thermique exposé par le noyau mainline (la matrice U-Boot amlogic indique « Thermal Sensor: No »), donc la surveillance série autour de la fréquence, la charge et l'étranglement éventuel.
Matériel
- ODROID-C2 sous Armbian/mainline, boîtier ventilé ou dissipateur (le S905 encaisse mais chauffe)
- Console SSH
- Paquet sysstat (mpstat) optionnel
- >
Code complet
#!/usr/bin/env bash
# surveil.sh — journalise fréquence 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
Vérification attendue
Le CSV se remplit toutes les 10 s. Sous la charge volontaire, load1 monte vers 4 et scaling_cur_freq affiche 1 500 000 kHz (fréquence de fusion du C2, pas les 2 GHz de la fiche S905). En mainline la colonne température reste « absente » : c'est attendu, pas une panne. Pas de DVFS SCPI non plus : la fréquence est quasi fixe selon le governor.
Erreurs fréquentes
- Chercher désespérément /sys/class/thermal côté mainline : le capteur n'est pas exposé ; s'appuyer sur loadavg + fréquence + ressenti du boîtier.
- Confondre 1,5 GHz (fusion C2) et 2,0 GHz (fiche S905) : la carte ne montera jamais à 2 GHz.
- Stocker le CSV sur une microSD bon marché en écriture continue : usure prématurée ; préférer l'eMMC ou tmpfs avec rotation.
- Oublier que cpupower peut être absent (installer linux-tools/cpupower selon la distribution).
Autres tutoriels pour cette carte
Exemples de code pour cette carte
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash