jueves, 22 de noviembre de 2012

Hybrid Graphics – Solución a dos placas de video en Linux


Linux puede traer algunos problemas en aquellas notebooks que poseen dos placas de video, ya que de no estar configurado correctamente el kernel posiblemente las active a las dos (en vez de a una sola). Esto impacta directamente en el rendimiento de la batería y el recalentamiento de la máquina. 

 

Existe un grave problema para los usuarios de Linux que posean notebooks con procesadores intel core i3, core i5 y core i7. Dichos equipos tienen dos placas de video para lograr un mejor rendimiento. Una, llamada “integrada” que está dentro del procesador para manejo de gráficos estándar como dibujo de la interfaz y cosas simples. La otra, llamada “discreta” es una placa poderosa que puede ser usada en casos donde sea necesario utilizar gráficos de alto rendimiento como por ejemplo los requeridos por juegos. 

En mi caso particular el procesador es un Intel Core i5-2430M Dual-Core 2.40GHz que posee una placa de video “integrada” y una placa de video “discreta” AMD Radeon HD 6630. 

El mal manejo por parte del kernel de esta característica (“Hybrid Graphics”) genera dos problemas. El primero es que el sistema arranca con ambas placas de video encendidas y el ventilador de la placa “discreta” trabajando al 100%. Esto provoca que haya un consumo de energía sobremedido y que la duración de la batería se acorte. El segundo problema se da a causa del recién mencionado: se genera mucho calor, que hasta llega a calentar el teclado y parte de la estructura de la notebook. 

Para solucionar este tema recorrí varios sitios, blogs y foros en español y en inglés donde pude recoger experiencias de unos cuantos usuarios que por sí solas no solucionaban el problema pero en conjunto sí lo hacen. Les dejo la solución. 

Antes de comenzar, asegúrense de tener instalados los paquetes debug del kernel y debugfs funcionando. En algunas distros no viene por default. Para comprobar que todo está ok y poder avanzar con los pasos pueden probar ver el contenido del archivo /sys/kernel/debug/vgaswitcheroo/switch. Si no lo tienen en su sistema, no podrán modificar la configuración. 

Pasos a seguir 

1.- Habilitar permisos para realizar el switch: 

sudo su 
chown -R nombreDeUsuario:nombreDeUsuario /sys/kernel/debug 
chown nombreDeUsuario:nombreDeUsuario /sys/kernel/debug/vgaswitcheroo/switch 
exit


2.- Encender la placa de video que está apagada (no está generando salida de video actualmente). 
echo ON > /sys/kernel/debug/vgaswitcheroo/switch 

Conectar la salida de video a la placa integrada. 
echo IGD > /sys/kernel/debug/vgaswitcheroo/switch 

Conectar la salida de video a la placa discreta. 
echo DIS > /sys/kernel/debug/vgaswitcheroo/switch 

Apagar la placa de video que está “desconectada” actualmente. 
echo OFF > /sys/kernel/debug/vgaswitcheroo/switch 

Ver el estado actual de la configuración de vga_switcheroo: 
cat /sys/kernel/debug/vgaswitcheroo/switch 

Generará una salida como esta: 
0:IGD:+: Pwr:0000:00:02.0 --> placa integrada encendida (Pwr) y utilizándose (+). 
1: DIS: :Off:0000:01:00.0 --> placa discreta apagada (Off)


Y con este set de instrucciones podremos realizar todos los cambios que necesitemos para lograr un mejor consumo de energía, menor cantidad de calor, y poder seleccionar qué placa de video utilizar a gusto. Espero que sea de utilidad para alguien que se encuentre con este problema.