Intente hacer de mi MacBook Pro 2016 un M5 con undervolt y throttled. No funciono.


3 de abril de 2026

La idea

Tengo un MacBook Pro 13" de 2016 con un i5-6267U corriendo NixOS. Apple pone en el firmware unos limites de potencia absurdos: PL1=100W y PL2=125W para un chip de 15W TDP. La CPU nunca llega a esos valores, pero al no tener limites reales, se calienta hasta que PROCHOT la frena.

El plan era doble:

  1. undervolt: bajar el voltaje para menos calor con el mismo rendimiento
  2. throttled: poner limites de potencia reales para evitar ciclos de throttling

En teoria, menos calor = mas frecuencia sostenida = mas rendimiento. En la practica, nada de eso funciono.

Undervolt: BLOQUEADO por Plundervolt

$ nix-shell -p undervolt --run "sudo undervolt --core -50 --cache -50"
ERROR:root:Failed to apply core: set -49.8046875, read 0.0

El MSR 0x150 acepta la escritura pero ignora el valor. El microcode 0xF0 tiene el lockout de Plundervolt (CVE-2019-11157) activo, aunque SGX este deshabilitado. Intel lo bloquea en todos los chips afectados, sin excepciones.

En este MacBook, undervolt es imposible.

throttled: funciona, pero no sirve para nada

Despues de 3 rebuilds de NixOS (Update_Rate_s en la seccion equivocada, power supply ADP1 en vez de AC0, y otros gotchas), throttled corrio bien:

$ undervolt-status
--- Power Limits (RAPL) ---
  PL1 (long):  30.0W
  PL2 (short): 44.0W
--- CPU Frequency ---
  cpu0: 3099 MHz
  cpu1: 3290 MHz
--- Temperature ---
  Package id 0:  +66.0C
--- throttled service ---
  [OK] running

El stress test pinto genial: 3100 MHz sostenidos, 73C, cero throttling.

Pero entonces corri Geekbench.

Los numeros que importan

Test Apple defaults Con throttled Diferencia
Single-Core 861 834 -3%
Multi-Core 1601 1588 -1%

throttled no mejora nada. De hecho, empeora ligeramente (TripTemp a 97C en vez de 100C = 3C menos de margen para turbo).

¿Por que? Porque el i5-6267U solo consume ~22W a plena carga. Da igual que Apple ponga PL1=100W o nosotros 30W: la CPU nunca llega ni a 30W. Los limites de potencia son irrelevantes cuando el chip no los alcanza.

El debugging fue lo mejor

Aunque el resultado fue un fracaso en rendimiento, el proceso fue interesante:

Gotcha 1: Update_Rate_s no va donde dice la doc

throttled v0.11 crasheaba con:

[E] The mandatory "Update_Rate_s" parameter is missing.

Leyendo el source (linea 494), el parser busca Update_Rate_s en [AC] y [BATTERY], no en [GENERAL] como dice la documentacion.

Gotcha 2: MacBook usa ADP1, no AC0

$ ls /sys/class/power_supply/
ADP1  apple_mfi_fastcharge_1-2  BAT0

La config por defecto de throttled busca AC*. En MacBook es ADP*.

Gotcha 3: Plundervolt lock es silencioso

El MSR 0x150 no da error al escribir. Simplemente ignora el valor. La unica forma de detectarlo es leer de vuelta y comparar:

set -49.8046875, read 0.0   # <-- bloqueado

Gotcha 4: thermald y throttled se pelean

Ambos escriben PL1/PL2 via RAPL MSR. Si habilitas los dos, se pisan mutuamente.

La config que tenia (ya revertida)

Para quien quiera probar en un Mac sin Plundervolt lock:

services.thermald.enable = false;
services.throttled = {
  enable = true;
  extraConfig = ''
    [GENERAL]
    Enabled: True
    Sysfs_Power_Path: /sys/class/power_supply/ADP*/online

    [AC]
    Update_Rate_s: 5
    PL1_Tdp_W: 30
    PL1_Duration_s: 28
    PL2_Tdp_W: 44
    PL2_Duration_S: 0.002
    Trip_Temp_C: 97
    cTDP: 0
    HWP_Mode: False

    [BATTERY]
    Update_Rate_s: 30
    PL1_Tdp_W: 20
    PL1_Duration_s: 28
    PL2_Tdp_W: 35
    PL2_Duration_S: 0.002
    Trip_Temp_C: 95
    cTDP: 0
    HWP_Mode: False
  '';
};

Conclusion

No hay M5 del pueblo. El i5-6267U con microcode parcheado no se puede undervoltar, y los power limits no aportan nada porque el chip no los alcanza.

Lo unico util de throttled en este MacBook seria limitar consumo en bateria. Pero con una bateria de 10 anos hecha una mierda, tampoco merece la pena un daemon para eso.

Lo que si me llevo: 4 gotchas documentados de throttled en NixOS que le ahoraran horas a alguien, y la confirmacion de que Plundervolt lock no se puede saltar ni con SGX deshabilitado.

Geekbench results:

Comparte este post:

Es tu post

Estas seguro? Esto no se puede deshacer.

Comentarios (0)

Sin comentarios todavia. Se el primero!

Deja un comentario