Bumblebee (Italiano)

From ArchWiki
Revision as of 18:09, 31 January 2012 by Veleno77 (Talk | contribs) (Installazione: aggiornata sezione)

Jump to: navigation, search

This template has only maintenance purposes. For linking to local translations please use interlanguage links, see Help:i18n#Interlanguage links.


Local languages: Català – Dansk – English – Español – Esperanto – Hrvatski – Indonesia – Italiano – Lietuviškai – Magyar – Nederlands – Norsk Bokmål – Polski – Português – Slovenský – Česky – Ελληνικά – Български – Русский – Српски – Українська – עברית – العربية – ไทย – 日本語 – 正體中文 – 简体中文 – 한국어


External languages (all articles in these languages should be moved to the external wiki): Deutsch – Français – Română – Suomi – Svenska – Tiếng Việt – Türkçe – فارسی

Tango-document-new.pngThis article is a stub.Tango-document-new.png

Notes: please use the first argument of the template to provide more detailed indications. (Discuss in Talk:Bumblebee (Italiano)#)
Warning: Bumblebee è un attualmente ancora in fase di sviluppo e potrebbe non funzionare correttamente sulla vostra macchina
Note: Si prega di riportare i bugs al Bumblebee-Project il GitHub tracker come descritto nel Wiki.

Bumblebee è una soluzione per la tecnologia grafica ibrida di Nvidia Optimus, che permette di utilizzare la scheda grafica dedicata per il rendering. È un progetto avviato da Martin Juhl.

A proposito di Bumblebee

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.

Come funziona

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.

Installazione

Installare il pacchetto bumblebeeAUR disponibile su AUR. Se si desidera utilizzare l'ultima versione disponibile, nella versione in sviluppo, potete installare (bumblebee-gitAUR). Entrambi pacchetti possono essere utilizzati sia con i driver Nvidia che con i Nouveau. Per l'esecuzione di applicazioni a 32 bit su un sistema a 64 bit è necessario il pacchetto lib32-virtualglAUR insieme a qualsiasi altra libreria specifica per applicazioni a 32-bit.

Per aggiungere la funzionalità di risparmio energetico , è necessario installare il pacchetto bbswitch-gitAUR.

Utilizzo dei driver Nouveau

Per utilizzare i driver Nouveau è necessario installare questi pacchetti aggiuntivi:

Installarli con

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

Utilizzo del driver Nvidia

Attenzione: Non installare il pacchetto nvidia-utils da [extra] o lib32-nvidia-utils da [multilib], entrambi causeranno un conflitto con libgl

Per utilizzare i driver Nvidia, è necessario installare nvidia-utils-bumblebeeAUR da AUR, ed il modulo del kernel che si desidera, sia dkms-nvidiaAUR che nvidia vanno bene. In alternativa esiste il pacchetto nvidia-bumblebeeAUR su AUR che, per praticità, ha tra le sue dipendenze nvidia-utils-bumblebeeAUR.

Quindi assicuratevi di caricare il modulo del kernel corretto all'avvio. Se avete problemi consultare il wiki ufficiale di Bumblebee su GitHub.

Configurazione

Al fine di rendere funzionale Bumblebee è necessario configurare un secondo server X, caricare il modulo del kernel desiderato ed eseguire il demone bumblebee. La maggior parte di questi passaggi sono svolti in automatico al momento dell'installazione.

Caricamento del modulo del kernel

Utilizzo di Nvidia

Per eseguire Bumblebee utilizzando il modulo del kernel per i driver proprietari Nvidia, è necessario prima fermare il caricamento del modulo Nouveau nel kernel. Per farlo, eseguire in un terminale:

# rmmod nouveau

Aggiungere la seguente riga a /etc/modprobe.d/modprobe.conf per disabilitare il modulo Nouveau al boot:

/etc/modprobe.d/modprobe.conf
blacklist nouveau

Caricare quindi il modulo Nvidia con:

# modprobe nvidia

Per caricare il modulo nvidia all'avvio, aggiungerlo nella stringa MODULES in /etc/rc.conf:

MODULES=(... nvidia ...)

Nouveau

Assicurarsi di non avere i driver Nouveau in blacklist in nessuno dei file contenuti in /etc/modprobe.d/. Il modulo del kernel Nouveau viene caricato di default.

Configurazione del server X

L'installazione dovrebbe riconoscere automaticamente la scheda grafica e la propria PCI BusID. Se si nota un qualche avvertimento a questo riguardo seguire i seguenti passi supplementari.

Dopo l'installazione viene creato un file /etc/bumblebee/xorg.conf.DRIVER con una configurazione minimale del dispositivo (dove DRIVER può essere nouveau o nvidia). In questo file è necessario specificare l'indirizzo bus PCI della scheda Nvidia. Per farlo eseguire in un terminale:

$ lspci -d10de: -nn | grep '030[02]'
01:00.0 VGA compatible controller [0300]: nVidia Corporation GT218 [GeForce 310M] [10de:0a75] (rev a2)

Prendere nota dell'indirizzo PCI della scheda nVidia (01:00.0 in questo caso) e modificare la riga in /etc/bumblebee/xorg.conf.DRIVER con l'opzione BusID della sezione Device:

/etc/bumblebee/xorg.conf.DRIVER
...
Section "Device"
...
    BusID          "PCI:01:00:0"
...
EndSection
...
Note: È necessario sostituire qualsiasi punto (.) con i due punti (:) per fare in modo che il server X non fraintenda il BusID

Se si utilizzano i driver Nvidia cercare la sezione "Files" e controllare che il percorso del modulo xorg di nvidia sia corretto:

/etc/bumblebee/xorg.conf.nvidia
...
Section "Files"
    ModulePath "/usr/lib/nvidia-bumblebee,/usr/lib/xorg/modules"
EndSection
...

Impostare i permessi per usare Bumblebee

I permessi per usare optirun vengono concessi a tutti i membri del gruppo "bumblebee", quindi è necessario aggiungersi (anche altri eventuali utenti) a quel gruppo:

# usermod -a -G bumblebee <user>

dove <user> è il nome di login dell'utente da aggiungere. Rieffettuare il login per rendere effettive le modifiche.

Avvio del demone Bumblebee

Bumblebee fornisce un demone per avviare il secondo server X e gestire alcune ulteriori funzioni; per avviarlo basta eseguire:

# rc.d start bumblebee

Aggiungerlo alla stringa DAEMONS in /etc/rc.conf per l'avvio al boot

DAEMONS=(... @bumblebee)
Note: Il gestore attuale non è legato a fattori come tipo di distribuzione, il che significa che non ci sarà output in stile ArchLinux e non ci saranno registrazioni in rc.d list. Questo è un problema noto che deve essere risolto (GH-17). Per vedere lo stato del demone eseguire
$ bumbelee --status

Test di Bumblebee

È possibile testare Bumblebee con questo comando:

$ optirun glxgears

Se funziona significa che si è in grado di non caricare il rendering della scheda Nvidia.

Note: È necessario il pacchetto mesa-demos per eseguire glxgears. Questo non è un test di benchmark, indica solo che la GPU dedicata funziona in rendering.

Configurazione

È possibile configurare alcune variabili nel file /etc/bumblebee/bumblebee.conf. Quelle di default sono:

/etc/bumblebee/bumblebee.conf
STOP_SERVICE_ON_EXIT=N
X_SERVER_TIMEOUT=10
VGL_DISPLAY=:8
DRIVER=nvidia
X_CONFFILE=
BUMBLEBEE_GROUP=bumblebee
ENABLE_POWER_MANAGEMENT=N
VGL_COMPRESS=proxy
ECO_MODE=N
FALLBACK_START=N

Compressione e trasporto VGL

La compressione e il trasporto riguardano come i frame sono compressi dal lato server (l'X server di bumblebee), e trasportati poi al lato client (X server principale) e non compressi per essere visualizzati nella finestra dell'applicazione. E per lo più influisce sulle prestazioni di utilizzo della CPU/GPU, dato che il trasporto è illimitato in banda. 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.

Note: CPU frequency scaling influisce direttamente sulle prestazioni rendering

È possibile provare diversi metodi di compressione aggiungendo l'argomento -c al comando optirun per capire qual'è il più adatto:

$ optirun -c <compress-method> /opt/VirtualGL/bin/glxspheres
Bumblebee trasferirà i frame utilizzando: <compress-method>

Dove <compress-method> può essere jpeg, xv, proxy, rgb o yuv. Si può quindi sostituire quello che si preferisce nella variabile VGL_COMPRESS in /etc/bumblebee/bumblebee.conf per usarlo come default.

Note: I metodi non compressi proxy e xv mostrano framerate inferiori ma sono più performanti in alcune applicazioni

Configurare il comportamento del Server

Ci sono tre variabili per controllare come deve comportarsi il server quando viene richiamato optirun:

STOP_SERVICE_ON_EXIT
X_SERVER_TIMEOUT
FALLBACK_START

Il server X sarà sempre un pò in ritardo al momento della prima chiamata. Dovrebbe avviarsi in un secondo o giù di lì, ma se il tempo degli avvii successivi è troppo, è possibile impostare STOP_SERVICE_ON_EXIT a N e il server X Bumblebee non sarà bloccato quando l'ultimo optirun viene disconnesso.

X_SERVER_TIMEOUT controlla quanto tempo il demone attenderà il server X. Se il server X tarda troppo si consiglia di aumentare il valore di questa impostazione, altrimenti l'avvio del server potrebbe non riuscire.

Se si desidera che l'applicazione si avvii nella GPU integrata anche se il server X non è disponibile, impostare FALLBACK_START a Y. Questo stamperà lo stesso messaggio quando il server non è disponibile, ma non fallirà a lanciare il programma.

Utilizzo

Per avviare un'applicazione utilizzando la scheda grafica dedicata:

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

Per un elenco di opzioni per optirun:

$ optirun --help

Se si desidera eseguire un applicazione a 32 bit su un sistema a 64 bit potrebbe essere necessario installare i pacchetti "lib32" adeguati.

Gestione energetica

Warning: Questa funzione è in attesa fino a quando non sarà trovata una soluzione sicura e affidabile. Tuttavia, una soluzione provvisoria per attivare la modalità ACPI precedente è inclusa in bumblebee>=2.4.0. Per ulteriori informazioni, vedere qui

L'obiettivo di gestione dell'alimentazione è quello di apegnere la scheda dedicata quando non viene utilizzata da nessuna applicazione, e riaccenderla quando è necessario. Attualmente la scheda può essere utilizzata solo "su richiesta" e nessuno "switch automatico" è supportato di default.

Una breve nota sul perché è stato rimosso

La gestione dell'alimentazione è stata temporaneamente rimossa perché le azioni ACPI di Bumblebee, durante le chiamate all'accensione e spegnimento, si risolvono con degli errori. Ciò ha avuto alcuni effetti collaterali:

  • Errori "FATAL: Error inserting nvidia (.../nvidia.ko): No such device" al caricamento del modulo nvidia
  • Blocco o freeze durante avvio, arresto o sospensione
  • Impostazioni del BIOS che sembrano essere state modificate
  • Altri sistemi operativi non riconoscono più la scheda grafica

In una versione futura, la gestione del risparmio energetico potrebbe essere implementata di nuovo, dopo un periodo di ricerca e sviluppo.

Come uno degli sviluppatori ha affermato, circa lo stato attuale della gestione alimentazione di bumblebee:

"Lekensteyn"

Bene, proviamo ad immaginare un edificio con le finestre sporche. Ci piacerebbe vedere più sole e chiediamo pertanto ad un serramentista di assumere qualcuno per svolgere quel lavoro. Il serramentista non ha mai imparato a pulire bene una finestra sporca, ma immagina che una pietra potrebbe essere il modo giusto per farlo. Chiede quindi ad un ragazzo di provare a pulire la finestra con una pietra: possono accadere due cose:

  1. la finestra si graffia e diventa ancora meno trasparente
  2. la finestra si rompe e il sole risplende

Nel primo caso, la situazione è peggiorata. Quell'orrore di "Module not found" ed errori "suspend/lock-up". Nel secondo caso, non si dovrà indovinare che cosa sia andato male perché l'obiettivo è stato raggiunto: il sole è più brillante. La soluzione giusta è ovviamente la pulizia del vetro con un panno, ma non prima che la finestra sia riparata, che è il nostro compito attuale.

I metodi di chiamata ACPI sono le pietre e "voi" ...siete voi. Il ragazzo è solo un messaggero, cioè il modulo acpi_call. Il serramentista è il team di sviluppo Bumblebee.

Attivazione della gestione energetica

Dalla versione 2.4.0 il framework ACPI fornito da Bumblebee consente di inviare differenti metodi di chiamata attraverso il modulo del kernel acpi_call. Sarà necessario il pacchetto acpi_call-gitAUR per essere in grado di usarlo.

Warning: I problemi di cui sopra possono ancora verificarsi, anche se le cose sono state rese più sicure, e a meno che non si stano utilizzando chiamate molto aggressive, non dovrebbero essere effetti collaterali importanti. Se si ha capito quanto sopra, ma si desidera attivare comunque il Power Management, ecco una guida per farlo.

Per prima cosa editare /etc/bumblebee/bumblebee.conf e impostare STOP_SERVICE_ON_EXIT a Y in modo che il server X venga fermato quando non ci sono istanze optirun in esecuzione.

/etc/bumblebee/bumblebee.conf
...
STOP_SERVICE_ON_EXIT=Y
...

Poi è necessario creare due file (/etc/bumblebee/cardon e /etc/bumblebee/cardoff) contenenti le chiamate necessarie per attivare e disattivare la scheda. Ogni riga deve contenere una chiamata, i commenti non sono ammessi. Scrivere una chiamata per riga e nient'altro o si riscontreranno errori:

/etc/bumblebee/cardon
_SB.PCI0.RP00.VGA._DSM {0x01,0x02} 0x03 0x04 {0x1,0x0,0x0,0x3}
_SB.PCI0.RP00.VGA._PS0
Warning: Queste chiamate sono solo degli esempi e non devono essere utilizzati in nessun caso. Non ci si aspetta che funzionino su ogni tipo di dispositivo. Si possono trovare alcune chiamate [qui] (non collaudate e non garantite).

Abilitare infine la gestione energetica editando il file di configurazione /etc/bumblebee/bumblebee.conf:

/etc/bumblebee/bumblebee.conf
...
ENABLE_POWER_MANAGEMENT=Y
...

Bisognerà anche riavviare il demone o direttamente il sistema per rendere effettive le modifiche.

Risoluzione dei problemi

Tango-view-refresh-red.pngThis article or section is out of date.Tango-view-refresh-red.png

Reason: please use the first argument of the template to provide a brief explanation. (Discuss in Talk:Bumblebee (Italiano)#)

Prova innanzi tutto questa guida alla risoluzione dei problemi, e se il problema persiste, si prega di segnalare i bug qui.

VirtualGL non può aprire il display

Se si riceve un messaggio come questo

[VGL] ERROR: Could not open display :XX

Significa che il secondo server X non è in esecuzione o non è stato avviato. Per risolvere questo si può spulciare il file /var/log/Xorg.XX.log, dove "XX" è il numero del display usato da bumblebee; dare anche un'occhiata ai messaggi in /var/log/bumblebee.log.

Qui ci sono alcune altre cose che si possono controllare:

  • Controllare il modulo del kernel caricato per la scheda nvidia con "lspci -k"
  • Controllare il file /etc/bumblebee/xorg.conf.nvidia e assicurarsi che l'opzione "BusID" punti alla porta PCI corretta.
  • Modificare l'opzione "ConnectedMonitor" a "DFP-0" o "CRT-0" (o "DFP,CRT"). Questa deve essere uno schermo valido del computer diverso da "LVDS"
  • Provare a impostare l'opzione X_SERVER_TIMEOUT ad un valore maggiore se il server X si avvia ma impiega troppo tempo.

Ulteriori risorse