Esta es la sexta parte de la serie Rejuveneciendo mi Laptop en la que narro, componente por componente, el proyecto en el cual busco darle una nueva vida a mi vieja laptop. Para la tabla de contenido, visita el primer post: Introducción: los problemas.
Temperatura, parte 1: una batalla perdida
La laptop siempre ha presentado problemas de calentamiento. Recuerdo, incluso, que por allá de 2014, a un tiempo de usarla al 100% de su capacidad de procesamiento con cuatro núcleos, el CPU alcanzaba 89 °C y la protección apagaba la laptop automáticamente. Estos problemas no eran tan obvios porque nunca fui mucho de usar juegos ni aplicaciones tan demandantes. Se volvió evidente al hacer los primeros intentos de grabar y procesar video para publicar presentaciones y charlas del Gultij y del Software Freedom Day en Tijuana.
Una opción que usé un tiempo fue limitar el uso a N núcleos para evitar sobrecalentar la laptop. Lo que hacía era anteponer cpulimit -l N*100
a cada instrucción. Por ejemplo, para limitar un proceso a 2 núcleos, usar un valor de 200. Desafortunadamente esto requiere de alterar scripts y hacer uso de otros trucos indeseables.
Total, que se siguió degradando después de tantos años de uso y sin haberle dado nunca una limpiada. Para 2018 ya no bastaba con limitarla a 3 núcleos: ¡ya no podía exceder de 1 CPU en plena carga (de los 4 virtuales) por más de unos cuantos segundos! Literalmente, la capacidad de mi laptop estaba reducida al 25% de su capacidad de procesamiento.
En 2018 la llevé a limpieza y la verdad es que hicieron un gran trabajo. Podía durar hasta 30 minutos al 100% de utilización con sus 4 núcleos virtuales sin apagarse. Desafortunadamente, el gusto sólo me duró 3 meses. Comenzó a degradarse nuevamente de forma gradual hasta quedar a 2 núcleos, y a veces ya con eso se apagaba.
Me llegó a ocurrir, literalmente, que algunos sitios Web con código Javascript defectuoso, detonaban un apagado por estar en un ciclo de alto consumo de CPU.
Afortunadamente, encontré una opción en el Setup del BIOS para deshabilitar HyperThreading. Esto me reduciría la cantidad de núcleos virtuales de 4 a 2 pero tal vez podría mantener la laptop corriendo más tiempo. Para no hacer el cuento más largo: ayudó pero no fue suficiente.
En el proyecto 2020 de rejuvenecer la laptop decidí atacar el problema: buscaría hacer que la laptop pudiera funcionar al 100% de su capacidad sin apagarse.
El primer intento y la primera batalla perdida
Eliminé las acumulaciones de polvo en el sistema de enfriamiento. Cuando el polvo se acumula en el ventilador, hace más esfuerzo para girar y se produce un poco menos de aire. Cuando el polvo se acumula en el disipador, el aire no puede fluir correctamente. En conjunto, se reduce ampliamente la capacidad de extraer el calor de la laptop.
Revisé el tubo de transferencia de calor. Quería poner una flama en una punta del tubo y medir el incremento con un termómetro en la otra. No pude encontrar un termómetro que me permitiera hacer una medición confiable y rápida. De todos modos no sé cuánto tiempo es aceptable para reflejarse de un extremo a otro el cambio de temperatura. Conseguí un termómetro para intentarlo pero el experimento fue un fracaso por dificultad para hacer contacto y la lenta reacción del propio termómetro. Medía mejor yo con los dedos que con el termómetro, constatando de propia mano (o de propios dedos) que el otro extremo se calienta rápidamente, para cierta definición de rápidamente. No es nada convincente, sin embargo, al documentarme sobre el tema también encontré referencias de que cuando el tubo está dañado, el aire expulsado de la laptop sueleestar prácticamente a temperatura ambiente, lo cual no era mi caso. Por el momento no me quedó más que suponer que el tubo en sí, funciona.
Revisé el ventilador. Le puse 5V directos y gira bien. No sé exactamente a qué velocidad ni si está dentro de lo nominal o no, pero gira sin ruidos ni fricciones y cuando está apagado no se sienten tropiezos al girarlo manualmente. Al igual que con el tubo de calor, por el momento sólo me queda suponer que funciona.
Cambié la pasta térmica. Desafortunadamente, para el día que decidí hacer el mantenimiento, ya estaban habilitadas las medidas de contingencia por la pandemia de Covid-19, así que la tienda donde compraría la pasta térmica sólo estaba entregando por paquetería y tardaría un tiempo indeterminado en llegar el producto. Yo ya no quería esperar más, porque en ese fin de semana es cuando tendría tiempo de trabajar la laptop. Afortunadamente había otra tienda abierta y vendían pasta, pero sus especificaciones térmicas decían: gran transferencia de calor, […] funciona dentro de un amplio rango de temperatura. En otras palabras: somos un producto chafa pero no lo queremos decir. Sobra decir que nunca esperé un gran resultado de esta pasta. Además, el tiempo de vida de la pasta sería totalmente desconocido. Sin embargo, dadas las circunstancias no tenía más opciones y ya me urgía intentarlo. Decidí comprar esta pasta y aplicarla. Serviría como experimento y en algo me tendría que ayudar, si no por la pasta, al menos por la remoción de polvo.
Resultados
Debo decir que ahora puede durar unos 2 minutos usando los dos núcleos al 100% (aún tengo deshabilitado HyperThreading) y se mantiene al borde de la temperatura. Antes, ni siquiera alcanzaba a detonarse el thermal throttling. Probé habilitando HyperThreading de nuevo pero fue demasiado pedir y fácilmente decayó. Lo dejé deshabilitado.
Tengo entendido que no es lo mismo un CPU en plena carga sin HyperThreading que uno a la mitad de su capacidad con HyperThreading, aún cuando en ambos casos corresponde al mismo porcentaje. No me pregunten los detalles, no los conozco. Para mí, y para efectos prácticos, yo lo estoy considerando ambos casos como lo mismo.
Uso CPU | Antes de limpiar | Pasta chafa | |
---|---|---|---|
En ocio | ~ 3% | 48 | 48 |
Carga a 1 núcleo | 100% | – | 70 |
s-tui monitor @ 200ms | ~ 170% | Throttling | – |
Carga a 2 núcleos | 200% | Apagado | Throttling / Apagado |
Carga a 4 núcleos | 400% | Apagado | Apagado |
El thermal throttling es la regulación de la frecuencia de trabajo del CPU para ahorrar energía o bajar la temperatura. En este caso es para evitar que se siga calentando. Esto significa que aunque la laptop no se apaga, el CPU no puede trabajar al límite de su capacidad.
Con esto, estaba considerando mi nueva configuración como un relativo avance, pues al menos los sitios Web ya no detonan el apagado de mi laptop, aunque eso sea sólo porque el sitio satura el CPU sólo por unos 10 o 15 segundos, lo cual es mejor tolerado por la laptop.
Inicialmente creí que al quedarme con dos núcleos virtuales tendría un equipo estable. Sin embargo, tiempo después, durante una compilación usando ambos núcleos se detonó el apagado de la laptop. No es frecuente, pero sí llega a ocurrir.
Si ejecuto make
con un solo hilo (un solo núcleo virtual), la temperatura se mantiene abajo de 70 °C. Aceptable para haber estado en un punto en el que un solo núcleo podía llegar a detonar el apagado, pero lejos, muy lejos, del objetivo.
No estoy contento con el resultado. Sin duda alguna hubo una mejoría, pero muy lejos de lo esperado. En mi expectativa, aunque funciona más establemente, lo considero un fracaso.
Temperatura 1, Octavio 0. 🙁 ¡Habrá revancha!
Siguiente parte: temperatura, parte 2: ¿pude finalmente resolver el problema de mi laptop? Y si sí, ¿hasta qué punto?