🛠 Surveiller température et fréquence sous charge quad-core

Raspberry Pi 2 Model B (2015) — Ficha de la placa · avance · Schéma : IMG-model-2b-avance-2-model2b-thermique.svg — les 4 cœurs Cortex-A7 du Pi 2 en charge, sonde de température affichant le seuil de throttling à 85 °C et courbe de fréquence qui plafonne

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

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

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales