Дискретная видеокарта курит в сторонке. Как её припахать на всю систему? [Решено]

Изображение пользователя NetDeviator.

Обзавёлся техникой Acer Aspire V3-571G.

Core i3-3120m (2.5 GHz, 3 MB L3 cache).
nVidia GeForce GT730M with 2 GB Dedicated VRAM.
4 GB DDR3 Memory (добавил ещё 8, теперь 12, могу даже 16).

Радует 15.6" IPS Full HD экран. Кубунта смотрится гладенько, и нет чувства что "экран маловат".

Драйверы на видеокарту поставил:
sudo apt-get install nvidia-current

Эффекты отвалились...

Ещё поставил, сам туго понимаю что:
sudo add-apt-repository ppa:ubuntu-x-swat/x-updates
sudo add-apt-repository ppa:bumblebee/stable
sudo apt-get update
sudo apt-get install bumblebee bumblebee-nvidia primus

Эффекты заработали...

Драйвера:
2 открытых
1 проприетарный

Процессор пашет, видеокарта - курит. Как заставить её работать?

У винды есть nVidia Optimus, и видяха заводится, когда я запускаю всякие GTA4.

Есть команда, чтобы запускать видеокарту для отдельной программы, типа "нВидиаОптимус рукопашно" :))
optirun wine '/игра/игра.exe'

Хочу заставить карточку трудиться над всей системой
2 GB быстрой видеопамяти должны работать.

По старенькому нэтпуку знаю, что там видяха сопит на 133 MHz, но руками выжимается до 400 (если забить на температуру).
У больших ноутов интегрированные видеокарточки не ушли далеко от нетпучных.

- -

Думал, гуглил, предпринял:
sudo killall kwin //убил kwin
sudo optirun kwin //запустил kwin на дискретной

Получил провал на старте компиза...
Выхлоп:
QDBusConnection: session D-Bus connection created before QCoreApplication. Application may misbehave.
X Error: BadWindow (invalid Window parameter) 3
  Major opcode: 20 (X_GetProperty)
  Resource id:  0x180001d
Error: "/var/tmp/kdecache-netdeviator" is owned by uid 1000 instead of uid 0.
Error: "/tmp/kde-netdeviator" is owned by uid 1000 instead of uid 0.
Error: "/tmp/ksocket-netdeviator" is owned by uid 1000 instead of uid 0.
Error: "/tmp/kde-netdeviator" is owned by uid 1000 instead of uid 0.
kdeinit4: Shutting down running client.
Connecting to deprecated signal QDBusConnectionInterface::serviceOwnerChanged(QString,QString,QString)
Error: "/tmp/ksocket-netdeviator" is owned by uid 1000 instead of uid 0.
Error: "/tmp/kde-netdeviator" is owned by uid 1000 instead of uid 0.
QDBusConnection: session D-Bus connection created before QCoreApplication. Application may misbehave.
QDBusConnection: session D-Bus connection created before QCoreApplication. Application may misbehave.
X Error: BadWindow (invalid Window parameter) 3
  Major opcode: 20 (X_GetProperty)
  Resource id:  0x180001d
Error: "/var/tmp/kdecache-netdeviator" is owned by uid 1000 instead of uid 0.
kbuildsycoca4 running...
Error: "/var/tmp/kdecache-netdeviator" is owned by uid 1000 instead of uid 0.
Error: "/var/tmp/kdecache-netdeviator" is owned by uid 1000 instead of uid 0.
QDBusConnection: session D-Bus connection created before QCoreApplication. Application may misbehave.
QDBusConnection: session D-Bus connection created before QCoreApplication. Application may misbehave.
X Error: BadWindow (invalid Window parameter) 3
  Major opcode: 20 (X_GetProperty)
  Resource id:  0x180001d
Error: "/var/tmp/kdecache-netdeviator" is owned by uid 1000 instead of uid 0.
QDBusConnection: session D-Bus connection created before QCoreApplication. Application may misbehave.
QDBusConnection: session D-Bus connection created before QCoreApplication. Application may misbehave.
X Error: BadWindow (invalid Window parameter) 3
  Major opcode: 20 (X_GetProperty)
  Resource id:  0x180001d
Error: "/var/tmp/kdecache-netdeviator" is owned by uid 1000 instead of uid 0.
QObject::connect: Cannot connect (null)::resourceScoreUpdated(QString, QString, QString, double) to NepomukPlugin::resourceScoreUpdated(QString, QString, QString, double)
QObject::connect: Cannot connect (null)::recentStatsDeleted(QString, int, QString) to NepomukPlugin::deleteRecentStats(QString, int, QString)
QObject::connect: Cannot connect (null)::earlierStatsDeleted(QString, int) to NepomukPlugin::deleteEarlierStats(QString, int)       
kactivitymanagerd(3815)/nepomuk (library) Nepomuk2::ResourceData::store: "The name org.kde.NepomukStorage was not provided by any .service files"                                                                                                                        
kactivitymanagerd(3815)/nepomuk (library) Nepomuk2::ResourceData::store: "The name org.kde.NepomukStorage was not provided by any .service files"                                                                                                                        
kactivitymanagerd(3815)/nepomuk (library) Nepomuk2::ResourceData::store: "The name org.kde.NepomukStorage was not provided by any .service files"                                                                                                                        
kactivitymanagerd(3815)/nepomuk (library) Nepomuk2::ResourceData::store: "The name org.kde.NepomukStorage was not provided by any .service files"                                                                                                                        
QDBusConnection: name 'org.kde.kglobalaccel' had owner '' but we thought it was ':1.7'                                              
kwin(3777): Could not find a framebuffer configuration for depth 32.                                                                
kwin(3777) KWin::OpenGLBackend::setFailed: Creating the OpenGL rendering failed:  "Could not initialize the drawable configs"       
QObject::connect: Cannot connect (null)::resetCompositing() to KWin::Compositor::restart()                                          
kwin(3777): Failed to initialize compositing, compositing disabled

0
Гость - 20 Декабрь, 2013 - 07:58

optirun имя программы

0
NetDeviator - 20 Декабрь, 2013 - 08:27
Изображение пользователя NetDeviator.

optirun всю_систему_хочу

killall kwin
optirun kwin и кабздец, компизы не стартуют :(

0
leisampei - 20 Декабрь, 2013 - 08:38
Изображение пользователя leisampei.

всю_систему_хочу
установить nvidia-prime

0
MacLeod - 20 Декабрь, 2013 - 10:00
Изображение пользователя MacLeod.

ИМХО, в том и кайф, что вашей Intel HD3000 хватает для десктопа и всех эффектов - она раза в 4-5 медленнее батарейку ест.
Если так уж хочется - как выше советовали, используйте nvidia-prime без bumblebee, но батареи хватит максимум на час + постоянный нагрев.

0
Гость - 20 Декабрь, 2013 - 12:20

Прочитал шапку:
http://forum.ubuntu.ru/index.php?topic=190100.0
Понял, что дискретная нужна именно играм и прочему ресурсо-прожорливому.

Запись с экрана в 1920х1080 это ресурсоёмко.

скринкастил так:
optirun ffmpeg -f alsa -ac 2 -ab 192k -i pulse -f x11grab -s 1920x1080 -r 30 -i :0.0 -acodec libmp3lame -vcodec libx264 -vpre lossless_ultrafast -threads 0 file.avi

потом так:
ffmpeg -f alsa -ac 2 -ab 192k -i pulse -f x11grab -s 1920x1080 -r 30 -i :0.0 -acodec libmp3lame -vcodec libx264 -vpre lossless_ultrafast -threads 0 file.avi

Нагрузка на CPU от ffmpeg в районе 27-35%.
Нагрев примерно равный в обоих случаях.

Получается, дискретная карточка только на современные йоба-игры годится???
Огорчаюсь и разочаровываюсь...
А как на счет скринкастов и эффективного переваривания видео в редакторе?

0
NetDeviator - 20 Декабрь, 2013 - 18:23
Изображение пользователя NetDeviator.

Получается, дискретная карточка только на современные йоба-игры годится???

Типа того.

Видео можно рендерить средствами GPU, но там иные принцыпы работы.
Погугли «GPU CPU рендеринг».

Есть видеокарточки nVidia семейства Tesla, заточенные под рендеринг графики, но они доволно дорогие. Это скорее для студий, а не для домашнего пиления видеоконтента.
В природе существуют драва для GPU-рендеринга, но это не для всех видюшек.

0
DarkneSS - 20 Декабрь, 2013 - 19:03
Изображение пользователя DarkneSS.

Таки да, конвертеры пока что не особо аппаратно декодируют. Дело не в ресурсоёмкости, а в том, позаботились ли авторы программы об поддержки видеокарт в расчётах.

0
Гость - 20 Декабрь, 2013 - 20:43

Значит дело не только в эпичном f*ck you nVidia. Ава ТС намекает :)

Читал только что о попытках GPU-рендеринга в Adobe Premiere Pro.
Если поставить "особые драва", редактор научится рендерить некоторые эффекты DirectX быстрее (как пишут "почти не подвисая"). К скорости сборки и выхлопа результата это никак не относится. Это значит, что прога не будет подвисать на превьюшках при наложении эффектов (некоторых эффектов).

Короче, получаем GPU как гармонь для работника религиозных услуг...
Нафига попу гормонь?

Можно покупть видеокарту семейства Tesla и пилить на ней какое-то кинцо по типу "Тэрмынатыр-тры"

В общем, дискретные видяхи годятся только для "гэ-тэ-а".
Или что-то ещё полезное на них сделать можно?

0
DarkneSS - 20 Декабрь, 2013 - 21:44
Изображение пользователя DarkneSS.

HD смотреть без нагрузки на процессор.

0
MacLeod - 29 Декабрь, 2013 - 03:31
Изображение пользователя MacLeod.

Зато с нагрузкой на батарейку =) Если CPU умеет воспроизводить видео, к примеру, с использованием одного ядра на частоте 1.8ГГц, показывая нагрузку в ~25%, то vdpau врубит GPU на максимальную частоту и "съест" аккумулятор ноута за час. ИМХО, это применимо только если CPU вообще не тянет распаковку потока.

0
DarkneSS - 29 Декабрь, 2013 - 13:10
Изображение пользователя DarkneSS.

GPU тоже умеет разные частоты.

0
MacLeod - 29 Декабрь, 2013 - 13:43
Изображение пользователя MacLeod.

Умеет, но почти всегда не хочет.
Nvidia драйвер ставит максимальный perfomance level даже при быстром перетаскивании окна туда-сюда в течение 3 секунд, на vdpau-кодеки реагирует сразу тем же. Про нуво говорить не стоит... Про AMD не знаю, как сейчас, но когда был HD5xxx - загибал на максимум при малейшей нагрузке.
Я говорил именно про то, что на данный момент на CPU этот процесс куда корректнее работает.

0
leisampei - 21 Декабрь, 2013 - 10:24
Изображение пользователя leisampei.

Можно рендерить в Блендере.

0
MacLeod - 29 Декабрь, 2013 - 03:16
Изображение пользователя MacLeod.

Это некорректное сравнение. В данном случае, optirun говорит, то все порождаемые окна программы будут в отдельном X сеансе с рендерингом на другом устройстве (дискретной карте). ffmpeg никаких окон не открывает, следовательно разницы между этими двумя командами - никакой.
Сам ffmpeg написан под работу на CPU и даже не догадывается о встроенных в проц или дискретных видюхах.
Как-то изменить ситуацию могут кодеки. В данном случае использован libx264, который так же реализован под CPU. Для использования кодеков с аппаратным ускорением можно попробовать заюзать какой-нибудь из набора vdpau*, который уже будет использовать данный API и железо видекарты.
В случае Optimus, скорее всего, работать не будет, поскольку vdpau пока не умеет включать/выключать дополнительную дискретную карту, а рассчитана на то, что работа уже ведется на таковой (как было до появления Optimus). Скорее всего, допишут со временем.

+1
MacLeod - 29 Декабрь, 2013 - 03:41
Изображение пользователя MacLeod.

Тут смотря что понимать под рендерингом. Рендерингом можно считать и веб-странички =) Сраницу можно рендерить на сервере: скрипт делает запросы к БД, memcache'у, проводит вычисления и формирует HTML, который потом выплевывает в ответ на запрос браузеру; а можно рендерить на клиенте: например, nginx раздает статику (HTML и JavaScript), браузер пользователя получает его, JS из браузера делает запрос к уже серверному скрипту, который отдает только уникальные для страниц данные, например в JSON, после чего JS в браузере уже формирует страницу для отображения, строит таблицы, диаграммы и т.д. - весь итоговый HTML для отображения страницы, что сильно снижает нагрузку на сервер (кстати, такой подход используется в большинстве высоконагруженных проектов).
Изначально, дискретные видеокарты появились именно для реалтайм рендеринга, т.е. быстрой отрисовки изображений в реальном времени, что требуется именно в играх. Соответственно железу, в качестве софтверной составляющей, всегда поставлялись графические API для общения с драйверами и самим железом (Direct3D и OpenGL).
Со временем, развитие мощности дискретных видюх произошло настолько, что они по вычислительной мощности намного обошли CPU, тогда некоторые призадумались об их полезном использовании в других задачах, нестандартных по отношению к реалтайм рендеренгу. Появились либы для использования мощностей видюх от самих производителей (Nvidia CUDA, AMD FireStream) и открытых (OpenCL).
Сжатие видео - ресурсоемкий процесс и действительно, было бы здорово крутить вычисления в GPU<->Видеопамять, для ускорения процесса, но пока что, многообразие железа и неустоявшиеся стандарты по софту тормозят появление повсеместной поддержки аппаратного ускорения.
Например, Sony Vegas (софт для монтажа видео, наложения эффектов, фейдеров и прочего) умеет ускорять выполнение операций по обработке/сжатию видео используя либу CUDA на свежих картах Nvidia, действительно процесс на GPU проходит в разы быстрее. Но это коммерческий софт...
Предполагаю, что Google уже давно допилила набор open source софта для работы с CUDA в рамках Ютуба, насколько я знаю, у них вообще огромные количества серверов с nvidia картами и многие их сервисы, включая распознавание голоса, работают с GPU ускорением, но врядли они поделятся с сообществом.
Что касается Tesla, это исключительно коммерческий ход и на лицо договоренность с производителями мощного софта. Аля мы делаем карты и хитрые драйверы, а вы - хитрые плагины, которые в разы ускоряют работу вашего софта. Но вся хитрость в том, что действительная скорость, а то и вообще работоспособность будет только с Tesla, которые, в принципе, на порядок дохлее некоторых игровых карт, но за отсутствием альтернатив их можно положить в отдельный ценовой сегмент и накрутить цены в разы.
Реальные преимущества дискретных карт сейчас только в играх (или приложениях), где требования к версии графического API выше чем у Intel.
Взять такую программку на с++:
#include <GL/freeglut.h>

int main(int argc, char** argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
    glutInitWindowSize(500, 500);
    glutInitContextVersion(3, 1);
    glutCreateWindow("Kubuntu.ru Test");

    glutMainLoop();
}

В данном виде ошибок не вызовет ни на Intel HD3000, ни на дискретной карте. Однако попытка инициализации контекста версии 3.2
glutInitContextVersion(3, 2);
в момент выполнения вызовет кучу ошибок (при использовании optirun все будет ок). Конечно, в реальных приложениях все исключения будут отловлены и, например, в DOTA2, запущенной на Intel HD3000 без optirun, некоторые поверхности и объекты отрисованы не будут, т.к. требуют поддержки более поздних версий OpenGL и языка шейдеров.
На Intel HD4000 уже вроде как поддержка до OpenGL 4.0, но результирующая мощность все равно будет проигрывать дискретным картам. Тем не менее, встроенные карты - лучшее решение для работы окружения и экономии батареи.

З.Ы. Что-то я увлекся... :D

Отправить комментарий

CAPTCHA на основе изображений
Введите цифры