Crónicas del ‘Thermal Throttling’: la explicación sencilla de un problema complejo

Crónicas del ‘Thermal Throttling’: la explicación sencilla de un problema complejo

109 comentarios Facebook Twitter Flipboard E-mail
Crónicas del ‘Thermal Throttling’: la explicación sencilla de un problema complejo

Thermal Throttling. Una de esas palabras anglosajonas que jamás hemos sabido qué significaban (la mayoría de nosotros) hasta ahora. El motivo es claro y comenzó el pasado día 17 de julio cuando el youtuber Dave Lee (Dave2D para los amigos) publicaba un preocupante vídeo donde en un render con su nuevo y flamante MacBook Pro 2018 con procesador i9 tardaba más en realizar esa tarea que en el modelo con procesador i7 de la generación anterior.

Pero en ocasiones, sacar conclusiones o veredictos en mitad de la tormenta o sin tener todos los datos, suele llevar a error y por eso en mi caso he preferido tomarlo con calma. Estuve investigando, esperé que otros profesionales hicieran más pruebas a este equipo pues solo una prueba sobre un caso de uso me parecía insuficiente para llegar a una conclusión, y al final saqué un podcast hablando del tema el pasado fin de semana que podéis oír en Cuonda. En él explico técnicamente qué es el Thermal Throttling, el problema de diseño de los equipos, el problema del software (que también lo hay) y una serie de recomendaciones para cada caso de uso. Aquí en Applesfera, mi compañero Pedro Santamaría también habló del tema acertadamente.

Pero una vez pasada la tormenta y con todos los datos en la mano, vamos a narrar cronológicamente qué ha sucedido, el por qué y ponernos en antecedentes para entender con una perspectiva clara este problema que ha habido y sus posibles soluciones que van mucho más allá de Apple.

Escalado dinámico de frecuencia o CPU Throttling

Hace ya unos cuantos años, los procesadores de Intel comenzaron a incorporar una característica denominada CPU Throttling. Una función que permite a los procesadores variar su frecuencia de reloj en base al uso así como evitar situaciones que pongan en peligro su propia integridad. Es tanto una función de prevención como una destinada a conseguir un mejor rendimiento energético. En el caso de Intel está técnica tiene el nombre de SpeedStep y es gestionada por software.

CPU Throttling detectado desde las herramientas de desarrollo de Chrome
CPU Throttling detectado desde las herramientas de desarrollo de Chrome

Cuando la temperatura de una CPU supera el TDP (o poder de diseño térmico) que es el calor que puede soportar un chip siendo disipado por la estructura donde está montado, el equipo usa el CPU Throttling y con ello el reloj del mismo disminuye su velocidad. Consecuentemente, el calor que genera disminuye así como su velocidad. Cuando esta técnica es usada en esas circunstancias es cuando hablamos de Thermal Throttling, que incluso puede llegar a apagar el equipo de forma espontánea en situaciones de emergencia cuando hay un fallo en la refrigeración.

El CPU Throttling es una función que permite a los procesadores variar su frecuencia de reloj en base al uso así como evitar situaciones que pongan en peligro su propia integridad. Es tanto una función de prevención como una destinada a conseguir un mejor rendimiento energético.

Pero esta técnica también optimiza el uso de las CPUs porque si siempre estuvieran con la misma velocidad de reloj y consumo que tienen por defecto, la batería de los equipos duraría mucho menos. Así que el CPU Throttling se encarga que cuando la CPU está en estado idle (lo que podríamos denominar, sin trabajo o en espera) baja la frecuencia del reloj a 800Mhz y con ello reduce el consumo y aumenta el rendimiento energético. Es la forma en que podemos variar la frecuencia del reloj para cargas exigentes de proceso o para reducir cuando el equipo hace pocas cosas.

¿Por qué hace esto? Porque en la arquitectura x86, todos los núcleos de una CPU han de ser iguales ya que en cuanto a estos no puede integrar la tecnología de computación heterogénea que sí incluye la arquitectura ARM. ¿Recuerdan esos procesadores Samsung, Qualcomm o de Apple que tienen los dispositivos móviles, donde hay núcleos con diferente frecuencia que llaman de eficiencia energética o alto rendimiento?

Una CPU de arquitectura x86 debe bajar o subir su frecuencia en todos sus núcleos a la vez. La arquitectura ARM permite tener varios núcleos a varias frecuencias y dedicarlos a diferentes tareas, dentro un mismo chip.

Esa es la computación heterogénea y cómo resuelve ARM el problema de economizar la energía para maximizar la duración de las baterías. Con varios núcleos a diferente frecuencia y especializados en tareas más livianas o de mayor carga. Sin embargo Intel por arquitectura x86 no puede hacer eso y utiliza el CPU Throttling para bajar o subir la frecuencia de toda la CPU en función de su carga.

Componentes de Computación Heterogénea en una CPU Qualcomm
Componentes de Computación Heterogénea en una CPU Qualcomm

El problema térmico

Un procesador como el i9 o como cualquiera de Intel de los últimos años se calienta y mucho. Es una obviedad. Pongan ustedes la mano en la parte trasera de sus MacBook Pro cuando están a pleno rendimiento y si no se queman (literalmente) será un milagro. De igual forma, muchos hemos visto como nuestros portátiles de Apple en un momento determinado empiezan a aumentar la velocidad de los ventiladores hasta el punto que un día alguno seguro que ha despegado como un avión. El calor no es un problema nuevo, ya llevamos muchos años con ese problema y cuando revisaba hace 8 años los nuevos MacBook Pro de aluminio para otro medio en que comencé a trabajar en este mundo periodístico, en la parte de los problemas estaba el excesivo calentamiento que tenían estos.

¿Pero, por qué sucede esto? Pues por un problema entre los procesadores de Intel y los diseños de los equipos. Y este no es un problema exclusivo de Apple: otras marcas como Dell, Acer o HP tienen exactamente el mismo problema porque no es cuestión de una marca: es cuestión que un procesador de gama alta para portátiles de Intel en los últimos años NO se refrigera correctamente en un diseño fino y elegante, donde primen los materiales premium como el aluminio. Son portátiles de atractivo y funcional diseño pero con un sistema de refrigeración que es suficiente pero no óptimo para estos procesadores. Y esto, como digo, no es algo nuevo ni mucho menos.

Crear portátiles finos, elegantes y silenciosos choca diametralmente con la necesidad de refrigeración de los procesadores de gama alta de Intel en los últimos años. Y no es problema exclusivo de Apple.

Para enfriar estas CPUs necesitamos otro tipo de portátiles que sí están preparados para tener una buena refrigeración a la altura. Portátiles de tipo gamer (por ejemplo) que pesan 4 kilos y no son de metal. Son de materiales plásticos, gruesos y muy ruidosos. Esos sí son capaces de mantener un procesador Intel Core con el Turbo Boost a tope a unas temperaturas correctas que le permitan sacar todo el poder que tienen. Sin embargo Apple, cuando re-diseñó los MacBook Pro en 2016, creó un sistema térmico mejorado y parte de la novedad estaba en las palas asimétricas del ventilador que eran la configuración que hacía que sonara menos cuando se activaba este para refrigerar el equipo.

Portatiles Picapiedra que sí enfrían las CPUs. En primera línea los que no lo hacen tan bien.
Portatiles Picapiedra que sí enfrían las CPUs. En primera línea los que no lo hacen tan bien.

¿Significa eso que los portátiles finos y elegantes son peores? No. Significa que todos tienen el problema que no refrigeran lo suficiente y por lo tanto cuando exijamos mucha carga a los mismos no van a funcionar igual de bien que un portátil que sí está preparado (aunque sean más feos, pesados y ruidosos). Es la dicotomía de una realidad provocada porque Intel sigue aumentando la potencia de sus equipos pero no reduce en forma alguna el calor que estos generan. Y esto viene pasando en todos los MacBook Pro desde hace años, así como los Dell XPS, HP Envy, Acer ZenBook Pro, Xiaomi Mi Air… a todos los que tienen un diseño ligero y premium.

Gráfica creada por Dave Lee de la velocidad media que CPU que consigue una serie de portátiles en un render de Premiere y el ruido en dB que da su ventilador.
Gráfica creada por Dave Lee de la velocidad media que CPU que consigue una serie de portátiles en un reader de Premiere y el ruido en dB que da su ventilador. Las 3 de abajo son diseño fino y los 3 de arriba diseño Picapiedra

Pero ojo: estamos hablando de procesadores de gama alta pensados para un mercado profesional o para gamers. Las gamas medias o bajas con un diseño fino tienen más que suficiente para su ventilación. Hablamos de las gamas altas que son las que generan más calor porque tienen mayor potencia cuando se les exige un rendimiento muy alto.

El problema térmico del MacBook Pro 2018

¿Qué sucedía con los nuevos equipos? Pues que su diseño no era capaz de soportar altas cargas de rendimiento. El i9 (sobre todo) era demasiado potente y por lo tanto, el CPU Throttling decidía bajar las frecuencias en momentos donde al final, dicha bajada de rendimiento del equipo lo convertía en inferior a generaciones anteriores. Pero, ¿por qué Apple no se dio cuenta? ¿No había hecho pruebas antes de lanzarlo? Claro que sí, pero este caso era muy específico de un caso concreto donde entra en juego el factor del software.

Apple realizó infinidad de pruebas de rendimiento de los equipos antes de lanzarlos, pero ninguna con el caso específico descubierto por Dave Lee con un software no optimizado como Premiere CC y un codec de vídeo tanto peso para el sistema.

Dave Lee había probado su equipo con Premiere Pro CC, codificando un vídeo a H.264 desde un codec RED RAW de un vídeo grabado con una cámara Scarlett en resolución 5K. Para el que no lo sepa, los codecs RAW son bastante más pesados para una máquina (en cuanto a proceso) que un codec ya procesado (o revelado). Al igual que la fotografía en formato RAW, una grabación en RED RAW (o en el nuevo codec ProRes RAW de Apple) supone que cada fotograma lleva toda la información que captó la lente al grabarlo. Es decir: lleva el fotograma “sin revelar” (algo así como el negativo digital de la imagen) y luego todos los parámetros de curva de color, apertura e incluso cada canal de color por separado para permitir tocar en post-producción todos los valores con los que se rodó la imagen y realizar lo que se conoce como el etalonaje digital de la imagen.

Premiere CC renderizando un vídeo de 3 minutos en similares características que el de Dave Lee (antes de aplicar el parche de Apple)
Premiere CC renderizando un vídeo de 3 minutos en similares características que el de Dave Lee (antes de aplicar el parche de Apple)

Este codec es de lo más usados, incluso a nivel profesional en muchas películas de Hollywood rodadas en formato digital con las cámaras RED. Pero también es de los más pesados de procesar por su complejidad. Y a eso hay que sumar otro factor: Premiere Pro CC en Mac. Este software no solo ha tardado mucho tiempo en incorporar la tecnología Quick Sync de los procesadores Intel para acelerar la codificación de vídeo, sino que no es nada óptimo pues realiza labores de transcodificación (cambio de formato del vídeo que procesa) durante el render que le obligan a realizar más pasos de lo normal para realizar su tarea. Lo curioso es que este software en Windows, gracias al apoyo de los drivers gráficos e incluso de lenguajes de cálculo computacional, consigue unos rendimientos muy superiores que en Mac, donde no está muy optimizado y su rendimiento es mucho más pesado para el equipo y por lo tanto es más lento. Usa demasiado código cruzado en C++ (que funciona por igual en Windows y en Mac).

Apple se ha enfrentado con este caso a un problema de rendimiento de software de terceros, al suponer Premiere Pro CC un problema por su poca optimización en código nativo del sistema. No como en Windows donde Premiere Pro CC funciona mucho más rápido.

Así que lo que le pasó a Dave Lee fue juntar el hambre (el codec RED RAW) con las ganas de comer (el Premiere Pro CC en Mac). Y provocó el caso de uso de codificación de vídeo más crítico que puede tener un Mac hoy día (sin entrar en las 8K, que es otro tema). Un caso que también puede pasar (como pasó) con el software Cinebench R15 donde haciendo pruebas de render 3D también se activaba el Thermal Throttling. Pero incluso antes del parche, la propia compañía creadora del software apuntó que dicho software y versión no estaban optimizados para el Mac y que los resultados por lo tanto no eran concluyentes.

Y si la historia hubiera acabado ahí pues habríamos tenido que conformarnos con saber que los nuevos Intel no estaban preparados para el diseño de los MacBook Pro y que el i9 no tenía mucho sentido comprarlo en caso que usáramos software como Premiere y codecs como los de las cámaras RED. Y fin de la historia. De donde no hay no se puede sacar. Un error de Apple sin solución.

Prueba realizada por Jonathan Morrison en un vídeo de similares características al realizado por Dave Lee con Premiere Pro CC. La diferencia salta a la vista.
Prueba realizada por Jonathan Morrison en un vídeo de similares características al realizado por Dave Lee con Premiere Pro CC. La diferencia salta a la vista y eso que este es de 5 minutos.

No obstante, es importante entender que ese mismo caso de codec RED RAW en Final Cut Pro X no lleva al equipo a esos límites de proceso que provocan la bajada de frecuencia. El software aquí es clave y el problema de la bajada de rendimiento de los equipos por una mala refrigeración derivada del diseño sucede solo con Adobe Premiere CC o con software no optimizado para macOS. Si ese mismo proyecto lo ponemos en Final Cut Pro X (como hizo más adelante en pruebas similares otro youtuber) resulta que el equipo codifica en apenas 12 minutos cuando en Premiere CC se iba a unos 30 en un vídeo de apenas 3 minutos. El mismo en ambos casos.. ¿Por qué? Porque el software de Apple está mucho más optimizado, no hace transcodificaciones y trabaja con el formato origen como base. Y usa todas las ayudas del sistema para mejorar el rendimiento. Además de usar todo el código nativo del sistema operativo.

La diferencia de rendimiento entre Premiere Pro CC y Final Cut Pro X en codificación de vídeos es enorme, ya que Final Cut está muy optimizado para sacar el máximo provecho del sistema operativo y los componentes, pero Premiere Pro CC no porque usa mucho código cruzado de Windows para ahorrar trabajo a Adobe.

Por eso Apple no detectó el problema que sí detectó Dave Lee en sus muchos test y pruebas con profesionales del sector durante meses. Porque a nadie le dio por probar un flujo con Premiere Pro CC con esa carga. De hecho, ni una sola de las pruebas que hizo Apple con esos equipos exigió la carga que sí pidió la prueba con Premiere CC. Y eso que Apple ha probado apps muy gordas como DaVinci Resolve, Autodesk Maya e incluso Photoshop CC de la propia Adobe. Pero todo, con software que sí está mejor preparado para el Mac que el Media Encoder de Adobe que es el que se encarga (junto a Premiere CC) de hacer los renders usando su motor de reproducción Mercury Engine.

Y por razones obvias, si ponemos una eGPU como también probó Apple en sus pruebas de rendimiento publicadas en la web para otras apps también de gran peso de proceso, pues muchas de esas tareas se derivarán a la dicha eGPU y la CPU poco o nada tendrá que hacer.

La solución de Apple y el problema

Y llegamos al final de la historia donde Apple, a las 48 horas de publicar Dave Lee el vídeo, lo llamó y le pidió que, por favor, le pasara los ficheros que había usado para la prueba para que ellos pudieran reproducir el problema en sus laboratorios y detectaran qué estaba pasando.

Y en cuanto lo probaron dieron con la tecla: el firmware estaba mal. Cuando Intel da los procesadores a los fabricantes, viene con unas indicaciones de resistencia térmica, voltajes recomendados... lo que se denomina Thermal Design Power o TDP, Y esos datos no habían sido cargados correctamente, tratando a estos equipos de 6 núcleos como si tuvieran 4. De hecho, les daba un tratamiento térmico como si fueran la anterior generación y no la nueva con un cambio en su diseño y teniendo mayor resistencia. Esto es una explicación a muy grandes rasgos, porque los temas técnicos son muy complejos pero esta es la forma más fácil que se entienda.

Los límites de temperatura y carga de la CPU no estaban teniendo en cuenta la nueva arquitectura de más núcleos y con más capacidad que permiten a esos procesadores calentarse más sin poner en peligro su integridad.

Así que Apple lanzó una actualización de ese firmware cargando los valores correctos para estos equipos y problema resuelto. ¿Problema resuelto? En parte. Seguimos teniendo el mismo problema que estos equipos se calientan hasta el exceso (en un trabajo con Turbo Boost podrían superar los 90 grados de temperatura) pero no hay nada nuevo en el horizonte. Intenten mirar la temperatura de sus actuales portátiles en cargas de trabajo y verán como superan los 80 grados fácilmente y ahí siguen año tras año.

Uno de los ventiladores del MacBook Pro
Uno de los ventiladores del MacBook Pro

Pero el hecho es que ahora los equipos rinden como Apple prometió en todas las circunstancias. ¿Antes no lo hacían? Por supuesto que sí: todas las pruebas en la página web de Apple son totalmente ciertas tanto como la prueba de Dave Lee. Pero ahora, como el propio Lee demostró, el equipo tarda en realizar el vídeo 5K de las Red en H.264 lo mismo que tardaba al meterlo en el congelador con Premiere CC. Por lo tanto, un problema menos que nos demuestra que en la optimización del software hay una clave muy importante para valorar los rendimientos de los equipos.

Ha habido un error muy grave por parte de Apple, pero por fortuna lo han detectado y subsanado con un parche lo que demuestra que no es un fallo de diseño del hardware. Así que bien está lo que bien acaba y aplaudimos a Apple por su capacidad de reacción y resolución de los problemas.

El verdadero problema: Intel

Hace meses en Bloomberg ponían fecha para la transición de Apple de Intel a ARM. Y es un paso lógico. Si echamos la vista atrás y recordamos por qué Apple abandonó a IBM y pasó a Intel, la razón era que los G5 consumían demasiado en los portátiles y no daban todo el rendimiento que debían. Por lo tanto Apple se pasó a Intel por eficiencia energética, gestión del calor y rendimiento ya que la arquitectura PowerPC no daba para más.

Pero irónicamente los PowerPC eran arquitectura RISC y ARM significa Advanced RISC Machine. Todos sabemos que los nuevos A11 Bionic en proceso de un solo hilo son capaces de competir con los Intel incluso de las últimas generaciones que llevan los MacBook Pro de 2016 o 2017. Y estoy seguro que los A12 los superarán igualmente. Pero no queda ahí la cosa. Porque los Qualcomm 845 y los nuevos 850 son unas auténticas bestias con una increíble capacidad, que además permiten la ejecución emulada de arquitectura x86 por lo que podemos correr un sistema como Windows 10. Y los últimos Exynos de Samsung tampoco se quedan atrás.

Las nuevas CPU de arquitectura ARM de Qualcomm, Apple o Samsung vienen pegando muy fuerte, con unas potencias increíbles, mucha mejor disipación de calor y menor coste energético.

Y todos ellos tienen una característica en común: su potencia no compromete su integridad y el calor que generan ni siquiera necesita disipación mecánica en muchos casos. ¿Imaginan una de estas CPUs bien cargadas de núcleos detrás de un sistema de refrigeración mecánica como las de las máquinas tipo MacBook Pro? El rendimiento que pueden llegar a conseguir sería espectacular.

Rendimiento de un A11 Bionic
Rendimiento de un A11 Bionic

Ya sé que aún necesitan más recorrido, no por nada Apple comenzará la transición en 2020 y lo hará con los ordenadores de gama más de consumo. Pero lo que es una realidad es que mientras ARM ya fabrica en 10nm, la novena generación de Intel (que aún no ha sido lanzada) sigue estancada en los 14nm. Lo que es una realidad es que mientras las CPUs de Qualcomm, Apple o Samsung son cada vez más potentes y eficientes, los Intel tiran de fuerza bruta y se calientan hasta límites físicos nada aconsejables que superan los 90 grados y solo una carcasa formato los Picapiedra es capaz de mantenerlos a raya.

Por lo tanto, sin quitarle importancia al error de Apple de no cargar los valores correctos de gestión energética de sus nuevos procesadores, está claro que Intel lleva muchos años con un problema serio y que la arquitectura ARM es quien tiene todas las cartas para solucionarlo y desplazarlo del mercado.

Algunos de los equipos cuyo diseño limita el rendimiento debido a que no disipan el calor de los procesadores Intel lo suficientemente bien.
Algunos de los equipos cuyo diseño limita el rendimiento debido a que no disipan el calor de los procesadores Intel lo suficientemente bien.

Es cierto que la arquitectura ARM es menos eficiente a nivel de potencia (hay un podcast de Apple Coding donde explico la diferencia técnica de ambas arquitecturas al detalle, que les invito a oír si les interesa el tema) pero llegará un momento que lo que importe realmente es cuánto tarda mi máquina en hacer X tarea. Y llegará el día en que Intel se vea superada en tiempos por los nuevos ARM con una gestión más eficiente de la energía, del calor y de la integridad. Muchos gigantes caen y si yo fuera Intel tendría miedo porque Qualcomm viene pisando muy fuerte al mercado y Apple no se queda atrás.

También en Applesfera | La frontera entre la delgadez y la potencia, o el futuro de los MacBook Pro

Comentarios cerrados
Inicio