🛠 Surveiller la thermique big.LITTLE et piloter les fréquences CPU
Objetivos
Supervisar la temperatura y la frecuencia de los 8 núcleos big.LITTLE del RK3588 (4 Cortex-A76 hasta 2,4 GHz + 4 Cortex-A55 hasta 1,8 GHz), comprender la política térmica del device-tree mainline (ventilador activado a 55 °C, velocidad máxima a 65 °C, umbral package_thermal) y elegir un gobernador de frecuencia. La placa no tiene un rango de temperatura oficial publicado: se espera refrigeración activa (conector de ventilador PWM de 5 V o disipador) bajo carga sostenida.
Hardware
- Orange Pi 5 Plus con disipador y/o ventilador de 5 V en el conector dedicado
- Fuente de alimentación de 5 V / 4 A mínimo (los picos de los A76 a 2,4 GHz + NVMe + 2,5 GbE exigen la entrada)
sudo apt install -y stress-ng linux-tools-common linux-cpupower
Código completo
# 1. Températures en continu (une ligne par zone thermique)
watch -n1 'paste <(cat /sys/class/thermal/thermal_zone*/type 2>/dev/null) \
<(cat /sys/class/thermal/thermal_zone*/temp 2>/dev/null)'
# 2. Fréquences par policy cpufreq (une policy par cluster big.LITTLE)
for p in /sys/devices/system/cpu/cpufreq/policy*; do
echo "$(basename $p) : $(cat $p/scaling_cur_freq) Hz (max $(cat $p/cpuinfo_max_freq))"
done
# 3. Gouverneurs : performance en bench, powersched/ondemand au quotidien
sudo apt install -y linux-cpupower
sudo cpupower frequency-set -g performance
cat /sys/devices/system/cpu/cpufreq/policy*/scaling_governor
# 4. Stress 8 cœurs pendant 60 s et observation du throttling
sudo apt install -y stress-ng
stress-ng --cpu 8 --timeout 60s &
for i in $(seq 1 12); do
paste <(cat /sys/class/thermal/thermal_zone*/temp) \
<(cat /sys/devices/system/cpu/cpufreq/policy*/scaling_cur_freq)
sleep 5
done
# 5. Seuils thermiques déclarés par le device-tree
sudo apt install -y lm-sensors && sensors
paste <(cat /sys/class/thermal/thermal_zone*/type) \
<(cat /sys/class/thermal/thermal_zone*/trip_type 2>/dev/null)
Verificación esperada
En reposo: 30–50 °C. Bajo stress-ng, las frecuencias suben (hasta 2 400 000 kHz en el clúster A76, 1 800 000 kHz en el clúster A55) y luego la temperatura aumenta hacia los umbrales de 55/65 °C donde el ventilador integrado acelera; en caso de saturación, scaling_cur_freq cae por debajo del máximo (throttling visible en el bucle).
Errores frecuentes
- Confundir la política cpufreq con los núcleos: cada política cubre un clúster (los índices cpu0..cpu7 de los clústeres big.LITTLE no están garantizados entre imágenes) — verificar con
cat $p/related_cpus. - Dejar el gobernador performance permanentemente: genera calor y consumo innecesarios durante el servicio.
- Placa sin flujo de aire en una carcasa cerrada: los umbrales de 55/65 °C se alcanzan en pocos minutos; prever el ventilador en el conector PWM de 5 V.
- >
Otros tutoriales para esta placa
- Allumer une LED via le GPIO 40 broches (libgpiod)
- Lire un bouton poussoir et afficher dans la console
- Premier script Python : fiche signalétique de la carte et LED
- Variation d'intensité d'une LED avec PWM (sysfs pwm)
- Lire un capteur I2C (BMP280) depuis le bus du connecteur
- Exploiter le double Ethernet 2,5 GbE et sécuriser le SSH
Ejemplos de código para esta placa
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash