Bumblebee (Italiano)

From ArchWiki
Revision as of 11:12, 28 June 2012 by Dartfira (Talk | contribs) ([ERROR]Cannot access secondary GPU)

Jump to: navigation, search

Tratto da Bumblebee's FAQ:

Bumblebee è una soluzione per rendere la tecnologia di Nvidia Optimus, presente sui computer portatili predisposti, disponibile nei sistemi GNU/Linux. Tale caratteristica coinvolge due schede grafiche con due differenti profili di consumo di alimentazione, che collegati in modo stratificato condividono un singolo framebuffer.

Bumblebee: Tecnologia Optimus per Linux

La Tecnologia Optimus è un'implementazione grafica ibrida senza hardware multiplexer. La GPU integrata gestisce il display, mentre la GPU dedicata gestisce il rendering più impegnativo ed invia il risultato alla GPU integrata per la visualizzazione. Quando il portatile è alimentato a batteria, la GPU dedicata si spegne per risparmiare energia e aumentare l'autonomia.

Bumblebee è un'implementazione software basata su VirtualGL ed un driver del kernel in grado di utilizzare la GPU dedicata, che non è fisicamente collegata allo schermo.

Bumblebee cerca di imitare il comportamento della tecnologia Optimus, utilizzando la GPU dedicata per il rendering quando necessario e spegnendolo quando non utilizzato. La release attuale supporta solo il rendering on-demand, mentre la gestione energetica è ancora in fase di sviluppo.

La scheda dedicata Nvidia è gestita come un server X separato e collegato ad uno schermo "fake" (lo schermo è configurato ma non utilizzato). Il secondo server viene chiamato mediante VirtualGL, come da un server remoto. Detto questo, saranno necessari una serie di passi per impostare il driver del kernel, il server X ed un demone.

Attenzione: Bumblebee è un attualmente ancora in fase di sviluppo. Ogni aiuto per il suo sviluppo è il benvenuto.

Installazione

Prima di procedere all'installazione di Bunblebee controllare il vostro BIOS e attivare l'opzione Optimus (shareable graphics), se disponibile (non tutti i BIOS forniscono questa possibilità), e assicurarsi di installare il driver Intel per la scheda video secondaria.

Note: Se si desidera eseguire applicazioni a 32 bit su un sistema a 64 bit è necessario il pacchetto lib32-virtualglAUR insieme a qualsiasi altra libreria specifica per l'applicazione a 32-bit.

Installare Bumblebee con Intel/NVidia

Installare bumblebeeAUR da AUR e successivamente installare il pacchetto speciale nvidia-utils-bumblebeeAUR per bumblebee.

Attenzione: Non installare il pacchetto originale nvidia-utils per utilizzare Bunblebee - potrebbe causare un blocco del sistema!

Ora si può procedere con l'installazione del driver nvidia:

# pacman -S nvidia
Nota: Potete installare dkms-nvidiaAUR da AUR in alternativa al pacchetto nvidia se lo desiderate.
Nota: Se si desidera che bumblebee spenga automaticamente la scheda NvVidia dopo il suo utilizzo, installare il pacchetto bbswitchAUR da AUR. Si veda il paragrafo relativo.

Installare Bumblebee con Intel/Nouveau

Installare i driver nouveau e i pacchetti richiesti:

# pacman -S xf86-video-nouveau nouveau-dri mesa

Successivamente installare bumblebeeAUR da AUR:

Nota: Se si desidera che bumblebee spenga automaticamente la scheda NvVidia dopo il suo utilizzo, installare il pacchetto bbswitchAUR da AUR. Si veda il paragrafo relativo.

Avviare Bumblebee

Per poter utilizzare Bumblebee è necessario innanzitutto aggiungere il proprio utente (anche altri eventuali utenti) al gruppo Bumblebee:

# usermod -a -G bumblebee $USER

dove $USER è il nome di login dell'utente da aggiungere. Rieffettuare il login per rendere effettive le modifiche.

Successivamente per avviare automaticamente Bumbleebee all'avvio, aggiungerlo alla propria lista di DAEMONS nel file /etc/rc.conf

DAEMONS=(... @bumblebeed)

Ora riavviare il sistema e utilizzare il programma optirun da un terminale per usufruire della tecnologia Optimus Nvidia per il rendering.

Utilizzo

La riga di comando programma optirun fornito con bumblebee è il vostro migliore amico per l'esecuzione di applicazioni sulla scheda Nvidia Optimus.

È possibile testare Bumblebee con questo comando:

$ optirun glxgears

Se il programma viene eseguito con successo e il terminale fornisce informazioni sulla scheda Nvidia, allora significa che Optimus con Bumblebee è funzionante.

Per avviare un'applicazione utilizzando la scheda grafica dedicata:

$ optirun [options] <application> [application-parameters]

Alcuni esempi:

Avviare Firefox con l'accelerazione fornita da Optimus:

$ optirun firefox

Avviare applicazioni Windows con Optiumus

$ optirun wine <windows application>.exe

Utilizzare BìNvidia Settings con Optimus

$ optirun nvidia-settings -c :8 

Per un elenco di opzioni per optirun:

$ optirun --help

Configurazione

È possibile configurare alcune variabili nel file /etc/bumblebee/bumblebee.conf.

Ottimizzare la velocità

Bumblebee gestisce il rendering dei fotogrammi per la scheda NVIDIA Optimus in un server X invisibile con VirtualGL e li trasporta di nuovo al vostro Server X visibile.

I Frames saranno compressi prima di essere trasportati - ciò consente di risparmiare larghezza di banda e può essere utilizzato per l'ottimizzazione della velocità di Bumblebee.

Per usare un metodo di compressione per una singola applicazione:

$ optirun -c <metodo-di-comppressione> applicazione

I metodi di compressione influiscono sulle prestazioni di utilizzo della CPU/GPU. I metodi compressi (come jpeg) caricheranno al massimo la CPU e al minimo possibile la GPU; i metodi non compressi caricheranno più la GPU mentre la CPU avrà il minor carico possibile.

Metodi compressi sono: jpeg, rgb, yuv

Metodi non compressi sono: proxy, xv

Per impostare un metodo di compressione per tutte le applicazioni impostare il valore VGLTransport con il <metodo-di-compressione> preferito in /etc/bumblebee/bumblebee.conf

/etc/bumblebee/bumblebee.conf
...
[optirun]
VGLTransport=proxy
...
Note: CPU frequency scaling influisce direttamente sulle prestazioni rendering

Gestione energetica

L'obiettivo di gestione dell'alimentazione è quello di spegnere la scheda dedicata quando non viene utilizzata da nessuna applicazione, e riaccenderla quando è necessario.

Per attivarla , assicurarsi di avere installato bbswitchAUR.

Warning: Assicurarsi che il server Xorg secondario venga fermato quando non in uso.

Impostare l'opzione PMMethod su bbswitch nella sezione del driver in bumblebee.conf.

/etc/bumblebee/bumblebee.conf
[bumblebeed]
KeepUnusedXServer=false
...
[driver-nvidia]
PMMethod=bbswitch
...
[driver-nouveau]
PMMethod=bbswitch
...

Impostare le opzioni dei moduli load_state e unload_state in base alle vostre esigenze (si veda la documentazione di bbswitch).

/etc/modprobe.d/bbswitch.conf
options bbswitch load_state=0 unload_state=0

Riavviare il demone bumblebeed per attivare il risparmio energetico:

# rc.d restart bumblebeed

Monitor multipli

È possibile impostare più monitor con xorg.conf. Si possono impostarli per utilizzare la scheda Intel, ma con Bumblebee è ancora possibile utilizzare la scheda NVIDIA. Un esempio di configurazione, qui di seguito, mostra l'uso di due schermi identici con risoluzione 1080p e con connessione HDMI.

/etc/X11/xorg.conf
Section "Screen"
    Identifier     "Screen0"
    Device         "intelgpu0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "TwinView" "0"
    SubSection "Display"
        Depth          24
        Modes          "1980x1080_60.00"
    EndSubSection
EndSection

Section "Screen"
    Identifier     "Screen1"
    Device         "intelgpu1"
    Monitor        "Monitor1"
    DefaultDepth   24
    Option         "TwinView" "0"
    SubSection "Display"
        Depth          24
        Modes          "1980x1080_60.00"
    EndSubSection
EndSection

Section "Monitor"
    Identifier     "Monitor0"
    Option         "Enable" "true"
EndSection

Section "Monitor"
    Identifier     "Monitor1"
    Option         "Enable" "true"
EndSection

Section "Device"
    Identifier     "intelgpu0"
    Driver         "intel"
    Option         "XvMC" "true"
    Option         "UseEvents" "true"
    Option         "AccelMethod" "UXA"
    BusID          "PCI:0:2:0"
EndSection

Section "Device"
    Identifier     "intelgpu1"
    Driver         "intel"
    Option         "XvMC" "true"
    Option         "UseEvents" "true"
    Option         "AccelMethod" "UXA"
    BusID          "PCI:0:2:0"
EndSection

Probabilmente sarà necessario cambiare il BusID in base alle vostre esigenze:

$ lspci | grep VGA
00:02.0 VGA compatible controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09)

In questo esempio il BusID è 0:2:0

Risoluzione dei problemi

Note: Si prega di riportare i bugs al Bumblebee-Project il GitHub tracker come descritto nel Wiki.

[VGL] ERROR: Could not open display :8

Esiste un problema noto con alcune applicazioni che vengono lanciate con wine che si biforcano e uccidono il processo padre senza tenere traccia del problema (per esempio la sessione libera di gioco on-line di "Runes of Magic").

Una soluzione a questo problema è quanto segue:

$ optirun bash
$ optirun wine <windows program>.exe

[ERROR]Cannot access secondary GPU

In alcuni casi, l'esecuzione di optirun ritorna il seguente errore:

[ERROR]Cannot access secondary GPU - error: [XORG] (EE) No devices detected.

[ERROR]Aborting because fallback start is disabled.

In questo caso sarà necessario spostare il file /etc/X11/xorg.conf.d/20-intel.conf da qualche altra parte, o rimuoverlo se non utilizzato. Riavviare il demone bumblebeed e l'errore non dovrebbe più ripresentarsi.

Potrebbe anche essere necessario modificare una parte del file /etc/X11/xorg.conf.d/10-monitor.conf commentando la linea riguardante il driver intel.

Video tearing

Problemi di tearing video sono piuttosto comuni utilizzando Bumblebee. Per risolvere il problema, è necessario attivare vsync. Dovrebbe essere abilitato per impostazione predefinita sulla scheda Intel, ma verificarlo dai log di Xorg. Per verificare se sia o non sia abilitato per nvidia, eseguire:

optirun nvidia-settings -c :8 

Le voci X Server XVideo Setings -> Sync to VBlank e OpenGL Settings -> Sync to VBlank dovrebbero essere entrambi attivati. La scheda Intel ha in generale meno problemi di tearing, in questo modo potrebbe essere utilizzata per la riproduzione video. In particolare utilizzando VA-API per la decodifica video (ad esempio mplayer-vaapi e con il parametro -vsync). Fare riferimento all'articolo Intel su come risolvere i problemi di tearing sulla scheda Intel. Se non è ancora risolto, provate a disabilitare il compositing dal proprio ambiente desktop. Una ulteriore soluzione , potrebbe essere quella di disabilitare il triple buffering.

Ulteriori risorse

Potete unirvi al canale #bumblebee su freenode.net