03/09/2012 8 avis

Gagner de l'autonomie en coupant votre second GPU

Gagner de l'autonomie en coupant votre second GPU

Vous avez également fait l'aquisition d'un PC intégrant la "super" fonction Optimus de Nvidia et que vous avez décidé d'installer Linux, cet article est pour vous ! Alors que l'installation se déroule sans problème, j'ai remarqué directement une baisse significative d'autonomie par rapport à Windows (de 5h à 2h45 environ).

Après quelques recherches, je me suis aperçu que les deux cartes graphiques étaient alumées continuellement et en même temps. En effet, je dispose d'un chipset Intel (HD4000) plus économe en energie, mais moins puissant que ma carte graphique Nvidia (GT640m LE).

Sous Windows aucun problème, Optimus switche de l'une à l'autre en fonction des besoins, mais Linux n'intégre pas cette technologie pour le moment. Néanmoins, il existe des solutions alternatives comme le projet Bumblebee. Je vous conseille d'aller y jeter un coup d'oeil, chez moi, cela n'a pas fonctionné...

Identification du problème :

Sous linux, l'utilisation seule du chipset Intel me convient parfaitement, ce dernier est largement assez rapide pour mon usage. Je cherche à retrouver une autonomie plus vivable en coupant le GPU Nvidia inutile.

Avant de commencer, il faut déjà s'assurer que vous avez bien deux cartes écrans :

johnny@johnny-pc:~$ lspci | grep "VGA"
02.0 VGA compatible controller: Intel Corporation Ivy Bridge Graphics Controller (rev 09)
01:00.0 VGA compatible controller: NVIDIA Corporation Device 0fd3 (rev 03)

Nous voyons donc que les deux cartes sont actives. (numéro de révision connu)

Préparation de la solution :

Nous allons utiliser l'outil "acpi_call". Il s'agit d'un module noyau qui permet d’interagir avec le système au niveau électrique, notamment pour allumer/éteindre la carte graphique dédiée à la demande. Ce module n'est qu'un messager, il transmet des instructions ACPI dans le fichier /proc/acpi/call.

Attention: Ce module est hautement expérimental, dans le sens où il fera ce que vous lui demandez sans vérifications. Comme il agit au niveau matériel, une mauvaise utilisation peut entraîner des problèmes divers, parmi lesquels plantages du système, instabilité du matériel, surchauffe...

Pour installer le module, on clone le dépot GIT du projet :

cd /opt
sudo git clone http://github.com/mkottman/acpi_call.git
cd acpi_call
make # Attention : Doit être recompiler le module à chaque nouvelle mise à jour de kernel.

Après avoir compiler, on retrouve avec un module acpi_call.ko qui devra être chargé et un script test_off.sh qui permet de trouver la bonne instruction ACPI qui correspond à votre carte :

# Activation du module
johnny@johnny-pc:/opt/acpi_call$ sudo insmod acpi_call.ko

 # Recherche de la bonne instruction
johnny@johnny-pc:/opt/acpi_call# sudo sh ./test_off.sh
Trying \_SB.PCI0.P0P1.VGA._OFF: failed
Trying \_SB.PCI0.P0P2.VGA._OFF: failed
Trying \_SB_.PCI0.OVGA.ATPX: failed
Trying \_SB_.PCI0.OVGA.XTPX: failed
Trying \_SB.PCI0.P0P3.PEGP._OFF: failed
Trying \_SB.PCI0.P0P2.PEGP._OFF: failed
Trying \_SB.PCI0.P0P1.PEGP._OFF: failed
Trying \_SB.PCI0.MXR0.MXM0._OFF: failed
Trying \_SB.PCI0.PEG1.GFX0._OFF: failed
Trying \_SB.PCI0.PEG0.GFX0.DOFF: failed
Trying \_SB.PCI0.PEG1.GFX0.DOFF: failed
Trying \_SB.PCI0.PEG0.PEGP._OFF: works! # Youpiiii !

Le script a réussi à trouver une instruction fonctionnelle. Si, aucune instruction fonctionne, ce n'est pas la peine de continuer, apci_call ne fonctionne pas chez vous !

Extinction de la vilaine carte graphique :

On va maintenant réaliser un petit script bash qui automatisera l'extinction de la carte :

#!/bin/bash

# Chargement du module
insmod /opt/acpi_call/acpi_call.ko

# Lancement de l'instructon ACPI
echo "\_SB.PCI0.PEG0.PEGP._OFF" > /proc/acpi/call

# Vérification
RES=$(cat /proc/acpi/call)
case "$RES" in
Error*)
	notify-send "GPU Killer" "Impossible de désactiver votre seconde carte !" ;;
*)
	notify-send "GPU Killer" "Le seconde carte a été désactivée !"
esac

Il suffit ensuite de modifier le ficher /etc/rc.local pour executer le script directement au démarrage de Linux. Voila, vous avez augmenter (normalement) votre autonomie en seulement quelques minutes !

Victoryyy
En 2012, le GIF fait has-been ?

Vos réactions 8 avis

Comment #1

MnK a écrit : le 07/09/2012 à 4:55pm

Je vais directement tester ça ce week-end, et je te tiens au courant. Merci

Comment #1

Steveo a écrit : le 07/09/2012 à 6:37pm

Il ne faudra pas oublier de recompiler le module à chaque nouvelle mise à jour de kernel. Il faut aussi les kernel headers pour pouvoir compiler.

Comment #1

Renrhaf a écrit : le 07/09/2012 à 7:01pm

Merci pour ces informations ^^

Comment #1

thomas a écrit : le 07/09/2012 à 7:26pm

John la machine !!! (ton captcha est chiant au passage lol)

Comment #1

Imparator a écrit : le 07/09/2012 à 8:00pm

Je ne vois pas pourquoi tu te casses la tete avec intel dans ce cas là. Tu n'as qu'à acheter AMD vision ... voila, tu n'aura que la carte graph du CPU... Avec AMD A8 y a du niveau quoi, tu peux tourner les derniers jeux du moment...
AMD => The Best (pour ce qui ne veulent pas trop dépenser d'argent)

Comment #1

Imparator a écrit : le 07/09/2012 à 8:02pm

Thomas : oui le captcha c'est trop chiant... faudrait p-t enlever les casses hin.. on a pas envie de taper le captcha avec des maj et min et surtt que tu as intégrer les chiffres... ça devient vite illisible...
(ex : cmt je suis sensé faire la différence entre un C et c sur une image "déformée" ?)

Comment #1

Johnny a écrit : le 07/09/2012 à 11:02pm

@Steveo: Merci pour l'infos, c'est noté ! :D
@Thomas: J'ai modifié le captcha, il ne prend plus compte de la casse. C'est vrai que c'était pas facile... :P
@Imparator: Sur linux, les cartes AMD-ATI sont pas exemplaire non plus (niveau compatibilité), mais, c'est vrai qu'elle coûte moins chère. On va peut être pas lancer le débat "Nvidia vs ATi"... :D

Comment #1

Jeunot a écrit : le 16/01/2013 à 1:32am

Merci pour cet article, je l'essaierai demain

En effet, j'ai moi aussi installé Ubuntu en dual-boot sur un Sony VAIO serie S.
J'ai rencontré néanmoins plusieurs problèmes:
-Dans les informations système, "carte graphique: inconnue"
-Chauffe anormale du PC
-Baisse de l'autonomie
-Non détection de la carte graphique au démarrage, obligeant à travailler en mode console uniquement
-Message "CPU: Package Power Limit Notification" empêchant le démarrage
En surfant sur internet, j'ai cru comprendre que tous ces problèmes étaient dus à la technologie Optimus mal gérée.
Je n'ai pas non plus réussi à installer Bumblebee sur mon ordinateur, je ne sais pas pourquoi (installation apparemment sans encombres)
Avais tu les mêmes problèmes? La désactivation de la carte NVidia les a t elle résolus?

Sinon as tu rencontré d'autres problèmes avec cette configuration (du style gestion du processeur, de la batterie, des cartes réseau)? As tu testé la batterie additionnelle?