Con la llegada del Kernel 2.6.38, aparte de algunas mejoras típicas de las nuevas versiones de los Kernels, trajo una "sorpresa": Un excesivo consumo de energía. Como podéis ver en la entrada, el problema que descubrieron los chicos/as de Phoronix, era más grave de lo previsto, ya que ese núcleo es el que iban a usar todas las nuevas versiones de distribuciones de Linux, entre ellas Ubuntu, y no acababa hay la cosa, el problema es que no se sabía a ciencia cierta porque ocurría ese problema con el Kernel 2.6.38 por lo que según esas pruebas, la siguiente vesión del Kernel (2.6.39) también tiene ese problema.
Linux desde la salida de los netbook, ha ganado mucho mercado dentro de los netbook y los portátiles, es por ello que por ejemplo empresas como Canonical con su distribución estrella Ubuntu, ha apostado por Unity como Shell de Ubuntu ya que aprovecha mejor la pantalla, algo que es muy importantes para pantallas pequeñas como la de los netbook. Pero claro, si el consumo es muy elevado, no sale muy a cuento instalar Ubuntu o cualquier distribución Linux en un portátil o netbook donde la autonomía es una característica muy a tener en cuenta.
Los chicos y chicas de Phoronix, el error se debe a un bug en el controlador de energía para PCI Express. El controlador de energía para los puertos PCI Express que usa el Kernel 2.6.38 se llama ASPM (Active-State Power Management). Este controlador hace que los puertos PCI Express que no se estén usando se pongan en un modo de ahorro de energía según la BIOS del ordenador, y e aquí el problema. La BIOS de algunos ordenadores esta mal configurada, y hace que este sistema de ahorro de energía no lo sea así y haga consumir más energía al ordenador. Y os estaréis preguntando, si el problema es de la BIOS, ¿por qué con Windows no se tiene este problema? Hace unos años hubo un problema similar con los discos duros sólidos y el gestor de energía agresivo de la BIOS del sistema. El problema fue muy parecido. Linux usaba el gestor de energía de la BIOS del sistema para apartar los cabezales del disco duro cuando no se estuvieran usando. El problema fue que se empezaron a romper discos duros con muy poco tiempo y al buscar el problema se encontró que la BIOS de algunos ordenadores usaban un gestor de energía muy agresivo. Lo que hacían es que según se dejara de usar el disco duro, apartaban los cabezales del disco duro. El caso es que cada movimiento apartando los cabezales es un movimiento físico por lo que, al cabo de bastantes movimientos, el disco duro empieza a fallar. La solución fue no hacer caso a la BIOS del sistema y usar un mapa menos agresivo para apartar los cabezales del disco duro.
El caso es que Window no tenía ese problema porque el núcleo de Windows no hace caso a la BIOS del sistema y él mismo tiene sus propios controladores de energía. Ahora con el problema del exceso de energía del nucleo de Linux, viene siendo lo mismo. Algunas BIOS están mal configuradas y hacen que el consumo de energía aumente de forma considerable. Windows no tiene este problema porque como ya he comentado antes, Windows no hace caso a la BIOS. Pero entonces, quien tiene el problema ¿el Kernel de Linux o la BIOS?. Pues en mi opinión es la BIOS. La BIOS del sistema regula las partes más criticas del ordenador, por lo que tendría que estar bien programada ya que se presupone que la BIOS esta diseñada para un hardware en concreto y no el Kernel de Linux que esta diseñado para diverso hardware, por lo que se presupone que la BIOS debe tener la mejor configuración para el hardware del ordenador que el núcleo de Linux. El caso es que parece ser que con el gestor de energía de las tarjetas PCI Express no lo es. ¿Como lo solucionamos? Primero abrimos la terminial y escribimos:
- gksu gedit /etc/default/grub
Ahora tenemos que buscar una linea como esta:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
Una vez encontrada esa linea, tenemos que sustituirla por esta otra:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash pcie_aspm=force"
Ahora guardamos los cambios y escribimos esta linea en la terminal para actualizar el grup:
- sudo update-grub
Con este cambio lo que hacemos es que el controlador del Kernel llamado ASPM tome el control de la energía de los controladores PCI Express sin dejar a la BIOS del sistema tomar el control de estos controladores.
Esto solo funciona si tienes el problema del alto consumo de energía. Si no lo tienes no vas a notar nada. Yo solo recomiendo hacer este cambio si de verdad tenéis problemas, ya que se presupone que la BIOS esta configurada para no dar problemas con el hardware del ordenador. Espero que con esto se os solucionen los problemas a los que los sufris. Un saludo Si te gusta o te parece interesante esta entrada, no dudes en compartirla