domenica 13 ottobre 2013

Schede grafiche NVIDIA Optimus su Ubuntu grazie a Bumblebee

La NVIDIA Optimus è una tecnologia sviluppata con lo scopo di ridurre le risorse utilizzate dai Laptop durante il loro funzionamento, tramite l'utilizzo di due schede grafiche.
Il concetto di base è quello di avere una scheda grafica Intel dal basso consumo energetico e dalle prestazioni ridotte, che lavorerà se non sono necessarie grosse risorse di calcolo, ed una scheda NVIDIA dalle prestazioni molto più elevate (e quindi anche dal consumo più elevato), che lavori solo in caso di necessità (apertura di giochi, applicazioni di rendering grafico, ...).
Il risultato è che durante il funzionamento normale (utilizzando i software classici _ browser web, esplorazione file, software email, ...) la batteria ha una durata decisamente più elevata e, solo se necessario, interverrà la scheda grafica più prestante per offrire maggiori prestazioni.
Purtroppo Ubuntu non riconosce automaticamente la presenza di questo tipo di tecnologia, pertanto bisognerà operare manualmente.

1. Installazione dei driver grafici NVIDIA Optimus (Bumblebee)

Per prima cosa è necessario scaricare i driver grafici NVIDIA Optimus; i driver in realtà sono i classici driver NVIDIA, ma è necessario installare un software, chiamato Bumblebee, che si occupi della gestione delle due schede grafiche, decidendo quale delle due deve lavorare, in base alle risorse richieste dall'applicazione lanciata.
Possiamo installare l'applicazione aprendo il terminale (Ctrl+Alt+T) e seguendo la seguente procedura:

  1. Se stiamo utilzzando Ubuntu 13.04 o precedenti diamo il comando
    $
    sudo add-apt-repository ppa:bumblebee/stable
  2. Abilitiamo, se non lo sono, i repository universe e multiverse digitando
    $
    software-properties-gtk
    ed attivando le rispettive voci;
  3. Installiamo il software dando
    $
    sudo apt-get update
    $
    sudo apt-get install bumblebee virtualgl linux-headers-generic nvidia-current
  4. Riavviamo il sistema

2. Configurazione di bumblebee

Una volta riavviato il sistema bumblebee verrà eseguito e sarà funzionante senza ulteriori operazioni. Per chi volesse è però possibile operare dei piccoli accorgimenti volti a migliorarne l'efficenza. In particolare vanno eseguite delle operazioni molto semplici, sempre aprendo un terminale:

  1. Apriamo il file posto in bumblebee.conf dando il comando:
    $
    sudo gedit /etc/bumblebee/bumblebee.conf
  2. Individuaiamo la riga contenente Driver= e scriviamo subito dopo l'uguale, se non è già presente, la dicitura nvidia, senza andare a capo e senza lasciare spazi; il risultato deve essere Driver=nvidia. Salviamo e chiudiamo il file.
  3. Diamo ora il comando:
    $
    optirun -c proxy glxspheres
    si aprirà una finestra con delle sfere che si muovo, dopo qualche secondo chiudiamola; nel terminale dovrebbero essere comparsi dei numeri con un formato simile a quello che segue:
    61.017236 frames/sec - 68.095236 Mpixels/sec
    60.436607 frames/sec - 67.447253 Mpixels/sec
    Annotiamoci il valore più alto raggiunto di frames/sec (nell'esempio 61).
  4. Eseguiamo nuovamente le operazioni del punto precedente, ma sostituendo all'interno del comando optirun -c proxy glxspheres il testo in grassetto prima con jpeg, poi con rgb, poi con xv ed infine con yuv. Dopo aver dato il comando e prima di chiudere la finestra che appare ricordiamoci di lasciar GIRARE LE PALLE (:P) per qualche secondo e di annotarci il massimo dei valori ottenuti nella colonna di sinistra.
  5. Prendiamo ora il più alto valore di tutte le esecuzioni eseguite (5 in totale) e controlliamo con quale -c [valore] è stata ottenuta (ovvero proxy, jpeg, rgb, xv o yuv).
  6. Riapriamo il file bumblebee.conf dando il comando specificato al punto 1 e cerchiamo la linea contenente VGLTransport=, cancelliamo tutto quello riportato alla destra dell'uguale (se presente) ed inseriamo la combinazione di caratteri per cui abbiamo ottenuto i frames/sec più alti (nel mio caso risulta VGLTransport=jpeg). Salviamo il file.
  7. Infine riavviamo il sistema.

Per quanto riguarda l'installazione è stata seguita la wiki ufficiale di Ubuntu Bumblebee