Difference between revisions of "Bumblebee (Español)"
(→Optimizar la velocidad cuando se utiliza VirtualGL como puente) |
(→Bumblebee se queja de que no pertenece al grupo, aunque sí lo está) |
||
(3 intermediate revisions by the same user not shown) | |||
Line 256: | Line 256: | ||
Hay un problema conocido con algunas aplicaciones que vienen lanzadas con wine que se bifurcan y matan el proceso padre sin hacer el seguimiento del problema (por ejemplo, la sesión libre del juego en línea "Runes of Magic") | Hay un problema conocido con algunas aplicaciones que vienen lanzadas con wine que se bifurcan y matan el proceso padre sin hacer el seguimiento del problema (por ejemplo, la sesión libre del juego en línea "Runes of Magic") | ||
− | + | Este es un problema conocido con VirtualGL. A partir de bumblebee 3.1, siempre y cuando lo tenga instalado, puede utilizar Primus como su render bridge: | |
+ | |||
+ | {{bc| | ||
+ | $optirun -b primus wine <programa de windows>.exe | ||
+ | }} | ||
+ | |||
+ | Si esto no funciona, una solución para este problema puede ser: | ||
{{bc| | {{bc| | ||
$ optirun bash | $ optirun bash | ||
− | $ optirun wine <windows | + | $ optirun wine <programa de windows>.exe |
}} | }} | ||
Line 327: | Line 333: | ||
Si todavía no está resuelto, trate de desactivar la compositing de su entorno de escritorio. Como última solución, pruebe también deshabilitar el triple buffering. | Si todavía no está resuelto, trate de desactivar la compositing de su entorno de escritorio. Como última solución, pruebe también deshabilitar el triple buffering. | ||
− | === | + | === Bumblebee no puede conectarse al socket === |
− | + | Podemos obtener algo como esto: | |
+ | |||
+ | {{hc|$ optirun glxspheres| | ||
+ | [ 1648.179533] [ERROR]You've no permission to communicate with the Bumblebee daemon. Try adding yourself to the 'bumblebee' group | ||
+ | [ 1648.179628] [ERROR]Could not connect to bumblebee daemon - is it running? | ||
+ | }} | ||
− | + | Si ya estamos en el grupo {{ic|bumblebee}} ({{ic|<nowiki>$ groups | grep bumblebee</nowiki>}}), puede intentar [https://bbs.archlinux.org/viewtopic.php?pid=1178729#p1178729 eliminar el socket] {{ic|/var/run/bumblebeed.socket}}. | |
==Enlaces importantes== | ==Enlaces importantes== |
Revision as of 14:55, 17 April 2013
zh-CN:Bumblebee Del FAQ de Bumblebee:
Bumblebee es una solución para aprovechar la tecnología Nvidia Optimus, presente en los ordenadores portátiles habilitados, disponible para los sistemas GNU/Linux. Esta tecnología combina el uso de dos tarjetas gráficas con dos perfiles diferentes de consumo de energía, que están conectadas de una manera estratificada compartiendo un solo framebuffer.
Contents
- 1 Bumblebee: Tecnología Optimus para Linux
- 2 Instalación
- 3 Iniciar Bumblebee
- 4 Uso
- 5 Configuración
- 6 CUDA sin Bumblebee
- 7 Solución de problemas
- 7.1 [VGL] ERROR: Could not open display :8
- 7.2 [ERROR]Cannot access secondary GPU
- 7.3 ERROR: ld.so: object 'libdlfaker.so' from LD_PRELOAD cannot be preloaded: ignored.
- 7.4 Fatal IO error 11 (Recurso temporalmente no disponible) en el servidor X
- 7.5 Vídeo rasgado
- 7.6 Bumblebee no puede conectarse al socket
- 8 Enlaces importantes
Bumblebee: Tecnología Optimus para Linux
La Tecnología Optimus es una implementación gráfica híbrida sin un hardware multiplexor. La GPU integrada controla la pantalla, mientras que la GPU dedicada gestiona las prestaciones más exigente y envía el resultado a la GPU integrada para la visualización. Cuando el ordenador está funcionando con alimentación de la batería, la GPU dedicada se apaga para ahorrar energía y prolongar la autonomía de la batería.
Bumblebee es una implementación de software que se comprende de dos partes:
- Procesa programas fuera de pantalla utilizando la tarjeta de vídeo dedicada y los visualiza en la pantalla con la tarjeta de vídeo integrada. Este puente es proporcionado por VirtualGL o primus (leer más adelante) y se conecta a un servidor X iniciado por la tarjeta de video dedicada.
- Deshabilita la tarjeta de vídeo dedicada cuando no está en uso (véase el apartado #Administración de energía)
Se trata de imitar el comportamiento de la tecnología Optimus, utilizando la GPU dedicada para aprovechar sus prestaciones cuando sea necesario y apagarla cuando no esté en uso. Las versiones actuales solo soportan las prestaciones a petición, mientras que no está implementado aún el que un programa se inicie automáticamente con la tarjeta de video dedicada en función de la carga de trabajo.
Instalación
Antes de proceder a la instalación de Bunblebee compruebe su BIOS y active la opción Optimus (los ordenadores portátiles más antiguos la llaman «shareable graphics»), si es posible (no todas las BIOS proporcionan esta opción), e instale el controlador intel para la tarjeta gráfica secundaria.
Varios paquetes están disponibles para una configuración completa:
- bumblebeeAUR (o bumblebee-gitAUR) - el paquete principal que proporciona el demonio y programas clientes.
- (opcional) bbswitchAUR (o dkms-bbswitchAUR) - recomendado para ahorrar energía desactivando la tarjeta Nvidia.
- (opcional) Si quiere algo más que un simple ahorro de energía, es decir procesar programas con la tarjeta Nvidia dedicada, también es necesario:
- Un controlador para la tarjeta de Nvidia. El controlador de código abierto
nouveau
o el controlador propietarionvidia
. Véase la subsección correspondiente. - Un puente para los procesos/pantalla. Dos paquetes están disponibles en la actualidad para ello, primus (o primus-gitAUR) y virtualglAUR. Solo uno de ellos es necesario, pero la instalación de ambos no hace daño.
- Un controlador para la tarjeta de Nvidia. El controlador de código abierto
primusrun
en lugar de optirun
si decide utilizar Primus render bridge.Instalar Bumblebee con Intel / Nvidia
- Instale intel-dri, xf86-video-intel, bumblebee y nvidia.
# pacman -S intel-dri xf86-video-intel bumblebee nvidia
Si desea ejecutar las aplicaciones de 32 bits (como los juegos con wine) en un sistema de 64 bits necesita también el paquete lib32-nvidia-utils.
# pacman -S lib32-nvidia-utils
Instalar Bumblebee con Intel / Nouveau
Instale el controlador nouveau y los paquetes necesarios, en primer lugar:
# pacman -S xf86-video-nouveau nouveau-dri mesa
- xf86-video-nouveau controlador experimental con aceleración 3D.
- nouveau-dri controladores Mesa classic DRI + Gallium3D.
- mesa bibliotecas gráficas Mesa 3-D.
Iniciar Bumblebee
Para poder utilizar Bumblebee es necesario añadir el propio usuario (y otros eventuales usuarios) al grupo bumblebee:
# gpasswd -a $USER bumblebee
donde $USER
es el nombre de inicio de sesión del usuario. A continuación, cierre la sesión para que surtan efectos los cambios de grupo.
Para iniciar bumblebee automáticamente al arranque, habilite el servicio bumblebeed
:
# systemctl enable bumblebeed.service
Terminado, reinicie el sistema y utilice el programa optirun
para disfrutar de la tecnología NVIDIA Optimus para el rendering.
Si simplemente desea desactivar su tarjeta nvidia, esto debería ser todo lo que se necesita, además de tener instalado bbswitch
. El demonio bumblebeed, de forma predeterminada, instruye a bbswitch para desactivar la tarjeta cuando se inicia. Consulte también la sección administración de energía más abajo.
Uso
El programa de línea de comandos optirun
equipado con Bumblebee, es su mejor aliado para ejecutar aplicaciones corriendo en su tarjeta NVIDIA Optimus.
Compruebe si Bumblebee funciona con el sistema Optimus mediante la siquiente orden:
$ optirun glxgears -info
Si tiene éxito y el terminal donde se está ejecutando muestra algo acerca de su tarjeta NVIDIA significa que ¡Optimus está funcionando con Bumblebee!
Utilización general:
$ optirun [opciones] <aplicación> [parámetros-de-la-aplicación]
Algunos ejemplos:
Iniciar aplicaciones de Windows con Optimus:
$ optirun wine <aplicación de windows>.exe
Utilizar NVIDIA Settings con Optimus:
$ optirun nvidia-settings -c :8
Para obtener una lista de opciones para optirun
, ejecute:
$ man optirun
Existe un programa nuevo llamado a convertirse en la opción predefinida debido a que aporta un mejor desempeño, llamado primus. En la actualidad es necesario ejecutar este programa por separado (no admite opciones a diferencia de optirun
), pero en el futuro va a poder ser iniciado por optirun. Utilización:
$ primusrun glxgears
Configuración
Puede configurar el comportamiento de Bumblebee para satisfacer sus necesidades. Afinar ajustes como la optimización de la velocidad, administración de energía y otros recursos se pueden configurar en /etc/bumblebee/bumblebee.conf
Optimizar la velocidad cuando se utiliza VirtualGL como puente
Bumblebee gestiona la presentación de los fotogramas para la tarjeta NVIDIA Optimus en un servidor X con VirtualGL invisible y lo transporta de vuelta al servidor X visible.
Los Frames se comprimen antes de ser transportados - esto ahorra ancho de banda y se puede utilizar para la optimización de la velocidad de Bumblebee:
Para utilizar un método de compresión para una sola aplicación, la sintaxis del comando es:
$ optirun -c <método-de-comprensión> aplicación
El método de compresión afectará al rendimiento del uso de la CPU/GPU. Los métodos que comprimen (como jpeg
) cargan la máximo la CPU y al mínimo posible la GPU; los métodos que no comprimen cargan más la GPU mientras la CPU tendrá la carga mínima posible.
Métodos comprimidos son: jpeg
, rgb
, yuv
Métodos sin comprimir son: proxy
, xv
Para utilizar un estándar de compresión para todas las aplicaciones habrá que establecer el valor VGLTransport
con el <método-de-compresión>
preferido en /etc/bumblebee/bumblebee.conf
/etc/bumblebee/bumblebee.conf
[...] [optirun] VGLTransport=proxy [...]
También se puede reproducir con el método VirtualGL que vuelve a leer los píxeles de la tarjeta gráfica. Ajustando la variable de entorno VGL_READBACK
a pbo
debe aumentar el rendimiento. Comparar estas dos:
# PBO debería ser más rápido. VGL_READBACK=pbo optirun glxspheres # El valor por defecto es sync. VGL_READBACK=sync optirun glxspheres
Administración de energía
El objetivo de gestionar la energía consiste en apagar la tarjeta NVIDIA cuando no se utiliza más por bumblebee. Si bbswitch está instalado, detectará automáticamente cuándo se inicia el demonio Bumblebee. No es necesario ninguna configuración adicional.
Estado de energía predeterminado de la tarjeta NVIDIA
El comportamiento predeterminado de bbswitch es dejar el estado de energía de la tarjeta sin cambios. bumblebeed
deshabilita la tarjeta cuando se inicia, así que lo siguiente solo es necesario si se utiliza bbswitch sin bumblebeed.
Configure la opción de los módulos load_state
y unload_state
de acuerdo a sus necesidades (véase la documentación de bbswitch).
/etc/modprobe.d/bbswitch.conf
options bbswitch load_state=0 unload_state=1
Activar la tarjeta NVIDIA durante el apagado
La tarjeta NVIDIA no puede inicializarse correctamente durante la fase de arranque si la tarjeta se apaga cuando el sistema se cerró por última vez. Una solución es configurar la opción TurnCardOffAtExit=false
en /etc/bumblebee/bumblebee.conf
, sin embargo, ésto todavía permitirá a la tarjeta detenerse cada vez que lo haga el daemon de Bumblebee, aunque se haga manualmente. Para asegurarse de que la tarjeta NVIDIA esté siempre accecible, es decir, activa, durante el apagado, añada el siguiente hook personalizado (si está utilizando bbswitchAUR):
/etc/rc.d/functions.d/nvidia-card-enable
nvidia_card_enable() { BBSWITCH=/proc/acpi/bbswitch stat_busy "Enabling NVIDIA GPU" if [ -w ${BBSWITCH} ]; then echo ON > ${BBSWITCH} stat_done else stat_fail fi } add_hook shutdown_poweroff nvidia_card_enable
Varios monitores
Es posible configurar varios monitores con xorg.conf. Se puede ajustar para utilizar la tarjeta Intel, pero con Bumblebee todavía es posible usar la tarjeta NVIDIA. Un ejemplo de configuración, que sigue abajo, muestra el uso de dos tarjetas idénticas con una resolución de 1080p y con conexión 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
Probablemente será necesario cambiar el BusID en base a sus necesidades:
$ lspci | grep VGA
00:02.0 VGA compatible controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09)
En este ejemplo el BusID es 0:2:0
CUDA sin Bumblebee
Esto no está bien documentado, pero no es necesario que Bumblebee utilice CUDA y pueda funcionar incluso en máquinas donde optirun falla. Para una guía sobre cómo conseguir que funcione con el Lenovo IdeaPad Y580 (que utiliza la GeForce 660m), consulte: https://wiki.archlinux.org/index.php/Lenovo_IdeaPad_Y580#NVIDIA_Card. Estas instrucciones son muy probable que se adapten a otras máquinas (excepto para la parte acpi-handle-hack, que puede no ser necesario).
Solución de problemas
[VGL] ERROR: Could not open display :8
Hay un problema conocido con algunas aplicaciones que vienen lanzadas con wine que se bifurcan y matan el proceso padre sin hacer el seguimiento del problema (por ejemplo, la sesión libre del juego en línea "Runes of Magic")
Este es un problema conocido con VirtualGL. A partir de bumblebee 3.1, siempre y cuando lo tenga instalado, puede utilizar Primus como su render bridge:
$optirun -b primus wine <programa de windows>.exe
Si esto no funciona, una solución para este problema puede ser:
$ optirun bash $ optirun wine <programa de windows>.exe
Si está utilizando el controlador de NVIDIA, una solución para este problema es editar /etc/bumblebee/xorg.conf.nvidia
y cambiar la opción ConnectedMonitor
en CRT-0
.
[ERROR]Cannot access secondary GPU
Ningún dispositivo detectado
En algunos casos, la ejecución de optirun devuelve el siguiente error:
[ERROR]Cannot access secondary GPU - error: [XORG] (EE) No devices detected. [ERROR]Aborting because fallback start is disabled.
En este caso, será necesario mover el archivo /etc/X11/xorg.conf.d/20-intel.conf
a otro lugar. Reinicie el demonio bumblebeed y el error no debería presentarse más.
Podría ser también necesario comentar la línea referente al driver en el archivo /etc/X11/xorg.conf.d/10-monitor.conf
.
Si está utilizando el controlador nouveau, podría intentar cambiar al controlador de nVidia.
Puede que tenga que definir la tarjeta nvidia en algún lugar (por ejemplo, en el archivo /etc/X11/xorg.conf.d
), y recuerde cambiar el BusID utilizando lspci.
Section "Device" Identifier "nvidiagpu1" Driver "nvidia" BusID "PCI:0:1:0" EndSection
NVIDIA(0): Failed to assign any connected display devices to X screen 0
Si la salida de la consola es:
[ERROR]Cannot access secondary GPU - error: [XORG] (EE) NVIDIA(0): Failed to assign any connected display devices to X screen 0 [ERROR]Aborting because fallback start is disabled.
Puede cambiar esta línea en /etc/bumblebee/xorg.conf.nvidia
:
Option "ConnectedMonitor" "DFP"
a
Option "ConnectedMonitor" "CRT"
ERROR: ld.so: object 'libdlfaker.so' from LD_PRELOAD cannot be preloaded: ignored.
Probablemente quiera comenzar una aplicación de 32-bits con bumblebee en un sistema x64. Instale lib32-virtualgl o el más rápido en rendimiento de Primus, primus-git, de AUR. Recuerde usar primusrun
con Primus.
Fatal IO error 11 (Recurso temporalmente no disponible) en el servidor X
Cambie KeepUnusedXServer
en /etc/bumblebee/bumblebee.conf
de false
a true
. Bumblebee no será capaz de reconocer los programas ejecutados en segundo plano.
Vídeo rasgado
El problema del lagrimeo en el vídeo es poco común utilizando Bumblebee. Para solucionarlo, necesita habilitar vsync. Debe venir activado por defecto en la tarjeta Intel, pero verifíquelo a partir de los registros de Xorg. Para comprobar si está o no habilitado para nvidia, ejecute:
$ optirun nvidia-settings -c :8
Las entradas X Server XVideo Settings -> Sync to VBlank
y OpenGL Settings -> Sync to VBlank
deben estar también habilitadas. La tarjeta Intel tiene, en general, menos problemas de tearing, de modo que puede ser buena idea utilizarla para la reproducción de vídeo. En particular utilizando VA-API para la decodificación de vídeo (por ejemplo, mplayer-vaapi
y con el parámetro -vsync
).
Consulte el artículo Intel sobre cómo resolver el problema de tearing en la tarjeta Intel.
Si todavía no está resuelto, trate de desactivar la compositing de su entorno de escritorio. Como última solución, pruebe también deshabilitar el triple buffering.
Bumblebee no puede conectarse al socket
Podemos obtener algo como esto:
$ optirun glxspheres
[ 1648.179533] [ERROR]You've no permission to communicate with the Bumblebee daemon. Try adding yourself to the 'bumblebee' group [ 1648.179628] [ERROR]Could not connect to bumblebee daemon - is it running?
Si ya estamos en el grupo bumblebee
($ groups | grep bumblebee
), puede intentar eliminar el socket /var/run/bumblebeed.socket
.
Enlaces importantes
Puede unirse al canal #bumblebee en freenode.net