понедельник, 19 августа 2013 г.

Запуск приложений через optirun в Ubuntu Linux

У меня есть ноутбук MSI GE60 0NC, у которого имеется на борту две видеокарты, интегрированная от Intel и дискретная NVIDIA GT650M с двумя гигабайтами памяти. После установки Ubuntu 13.04 вся графика по умолчанию обрабатывалась интергрированной видеокартой, при этом явной возможности вывести какое-либо приложение через видеокарту NVIDIA нет. Установить проприетарный драйвер для NVIDIA операционная система не предложила. Немного погуглив, я нашел интересный проект Bumblebee. Bumblebee обеспечивает поддержку технологии NVIDIA Optimus для операционных систем GNU/Linux. Используя Bumblebee, вы можете переключать видеокарту NVIDIA на обработку графики, которая по умолчанию обрабатывается видеокартой Intel. Сама технология NVIDIA Optimus разработана для экономии заряда батарейки в ноутбуках с гибридной графикой - приложения, не требовательные к ресурсам рисуются встроенной графикой, а игры - дискретной.





Nvidia Optimus в картинках
Для установки Bumblebee вам потребуется добавить дополнительный репозиторий
sudo add-apt-repository ppa:bumblebee/stable
Обновить информацию о пакетах
sudo apt-get update
Установить Bumblebee используя дефолтный проприетарный драйвер NVIDIA:
sudo apt-get install bumblebee virtualgl linux-headers-generic
Перезагрузите систему

Теперь чтобы запустить приложение с дискретной картой NVIDIA выполните команду в терминале:
optirun [options] [application-parameters]
Например:
optirun firefox
Для получения полного списка параметров optirun выполните команду:
optirun --help

Разницу в производительности можно увидеть, выполнив в терминале команду
glxspheres
приложение покажет производительность видеокарты, FPS, если запустить то же приложение через optirun, командой 
optirun glxspheres
Вы заметите существенное изменеие показателя FPS, у меня при стандартном запуске значение FPS в glxspheres 59, а при запуске через optirun увеличивается до 116


andrey@notebook:~$ glxspheres
Polygons in scene: 62464
Visual ID of window: 0x20
Context is Direct
OpenGL Renderer: Mesa DRI Intel(R) Ivybridge Mobile
60.345945 frames/sec - 67.346074 Mpixels/sec
60.326972 frames/sec - 67.324900 Mpixels/sec
59.828224 frames/sec - 66.768298 Mpixels/sec
59.858115 frames/sec - 66.801656 Mpixels/sec
59.862564 frames/sec - 66.806622 Mpixels/sec
 
andrey@notebook:~$ optirun glxspheres
Polygons in scene: 62464
Visual ID of window: 0x20
Context is Direct
OpenGL Renderer: GeForce GT 650M/PCIe/SSE2
107.714055 frames/sec - 120.208885 Mpixels/sec
110.684069 frames/sec - 123.523421 Mpixels/sec
109.534382 frames/sec - 122.240370 Mpixels/sec
116.702935 frames/sec - 130.240476 Mpixels/sec
116.263720 frames/sec - 129.750311 Mpixels/sec
 


Плюсы такого использования заключаются в том, что вы самостоятельно можете выбрать какое приложение рисовать интегрированной, а какое дискретной видеокартой, но возникают некоторые неудобства в использовании: приложения приходится запускать из терминала, и если вы зыкрываете окно терминала, то приложение останавливается. Я нашел для себя довольно простой выход: в Ubuntu 13.04 все ярлыки для запускаемых приложений располагаются в каталоге /usr/share/applications вы можете их скопировать куда-нибудь, например на рабочий стол и отредактировать команду запуска приложения. 
Кликабельно, нажмите чтобы увеличить

Есть одна особеность: - после редактирования команды запуска система будет ругаться, что этот ярлык получен из ненадежного источника и вместо запуска программы будет выдаваться сообщение об ошибке. Чтобы это починить, нужно в параметрах ярлыка сделать его исполняемым.
Кликабельно, нажмите чтобы увеличить
 После того, как вы измените ярлык для запуска приложения, можете вернуть его назад в папку /usr/share/applications, но учтите, что для этого понадобятся права суперпользователя. Теперь если вы в строке поиска будете искать ваше приложение, то обнаружите два ярлыка, один запускает приложение на интегрированной видеокарте, второй - на дискретной
Ярлыки для приложений
В общем-то все, надеюсь, что эта статья принесет вам пользу.