🛠 Surveiller température et fréquence sous charge quad-core
Objetivos
El Pi 2 es el primer Raspberry Pi de cuatro núcleos: sus 4 Cortex-A7 a 900 MHz se calientan más que el Pi 1 y reducen su frecuencia (throttling) por encima de los 85 °C (o en caso de subtensión). Este tutorial te enseña a medir la temperatura, la frecuencia y las banderas de limitación con vcgencmd, a cargar los cuatro núcleos con una prueba de multiprocessing y a interpretar el bitmap get_throttled.
Material
- Raspberry Pi 2 Model B con una fuente de alimentación adecuada (las caídas de 5 V también provocan throttling)
- Disipador opcional (la placa funciona sin él, pero se calienta)
- Terminal SSH o consola
Código completo
# Suivi temps reel : temperature + frequency + etat de bridage
watch -n 1 'vcgencmd measure_temp; vcgencmd measure_clock arm; vcgencmd get_throttled'
#!/usr/bin/env python3
"""burn.py — teste les 4 cœurs : serial vs parallel (Pi 2 quad-core)."""
import multiprocessing as mp
import time
def burn(n):
x = 0
for i in range(n):
x += i * i
return x
if __name__ == "__main__":
jobs = [20_000_000] * 4
t0 = time.time
for _ in map(burn, jobs): # reference serielle
pass
serial = time.time - t0
t0 = time.time
with mp.Pool(4) as pool: # 4 cœurs, 1 tâche chacun
pool.map(burn, jobs)
parallel = time.time - t0
print(f"serial {serial:.1f}s vs parallel {parallel:.1f}s "
f"(speedup {serial/parallel:.1f}x on {mp.cpu_count} cores)")
Verificación esperada
En reposo: ~40-45 °C, reloj a 900000000 Hz, get_throttled = 0x0. Durante una carga máxima de los cuatro núcleos (burn test): la temperatura sube; si alcanza los 85 °C, measure_clock cae por debajo de 900 MHz y get_throttled muestra 0x2 (limitación térmica). Un 0x1 o 0x5 indica una subtensión: cambia la fuente de alimentación antes de culpar a la refrigeración. La aceleración paralela debe acercarse a 3-4×.
Errores frecuentes
- Interpretar 0x50005 o 0x30002: el bitmap es acumulativo (bits 16+ = histórico); desbloquéalo con vcgencmd set_throttled=0 si está admitido, si no, reinicia.
- Culpar a la temperatura cuando la causa es eléctrica: los transitorios de los cuatro núcleos hacen caer una fuente de 5 V marginal — verifica primero el bit de subtensión.
- Olvidar que el umbral depende del firmware: 85 °C es el límite estándar de la familia Pi 2.
- Comparar v1.1 y v1.2: los BCM2837 (A53) de las placas v1.2 son más rápidos por ciclo que los BCM2836 (A7); las cifras no son intercambiables.
Otros tutoriales para esta placa
Ejemplos de código para esta placa
led_blink.pyPythonbutton_led.pyPythonservo_sweep.pyPythondht_temp.pyPythonoled_i2c.pyPythonmcp3008_read.pyPython