Russian Qt Forum

Qt => Qt Quick => Тема начата: joker от Май 04, 2013, 18:42



Название: От чего зависит производительность qml
Отправлено: joker от Май 04, 2013, 18:42
Нужно было нарисовать приложеньку для POS. Решил сделать на QML. И, когда сделал часть на своем ноутбуке, начал тестировать.
При этом оказалось что все QML-ное тормозит просто жутко.  (Для пробы собрал пример interaction то же ощутимо лагает.)

Теперь немного технической информации:
Он (POS) собран на Intel Atom 525 (2 ядра, 1,8Ghz на ядро)
Как операционку поставил calculate linux (kde 4, x86_64). Работает вполне себе комфортно.
Поставил Qt5.0.2 x86_64 заранее собранный. Сам QtCreator тоже работает нормально

Вобщем есть ли идеи - то ли проблемы с тем, что 2 версии Qt (kde таки его пользует), то ли что нибудь с x86_64... То ли действительно никаких вариантов и надо переписывать на чем нибудь другом?
то ли еще есть какие проблемы.
 


Название: Re: От чего зависит производительность qml
Отправлено: alex312 от Май 04, 2013, 20:35
производительность QML зависит от производительности OpenGL.


Название: Re: От чего зависит производительность qml
Отправлено: joker от Май 04, 2013, 21:51
в glxgears пишет:
Код:
direct rendering: Yes

Конечно работает то на набортном видео (Atom Processor D4xx/D5xx/N4xx/N5xx Integrated Graphics Controller), но KDE4 же крутится нормально.
Уже попробовал на чистой системе (тот же calculate но без DE) - результат тот же

А вот при запуске qml-ного приложения тормозит... и загрузка камня под 80% улетает (процентов под 40 на ядро) - то есть какой то софтварный рендер, что ли.

Сейчас попробую поставить винду или другую никсу - посмотрим - не тянет ли конфигурация или беда с конкретным дистрибутивом


Название: Re: От чего зависит производительность qml
Отправлено: alex312 от Май 04, 2013, 22:30
У меня Uuntu 13.04, старенький ноут с целероном( M540) и встроенной графикой. QML-ные примеры не тормозят (максимум 15% проца)
В приложении мой вывод glxinfo .


Название: Re: От чего зависит производительность qml
Отправлено: joker от Май 05, 2013, 20:39
Ерунда какая то.
Поставил 7ку... нормально работает.
Поставил Ubuntu - опять загрузка 80%

Получается что то не то с видеодрайвером? Точнее с его поддержкой opengl?
Но судя по glxinfo и glxgears всё вполне себе в порядке.

Вобщем буду искать вроде пара идеек нарылась - что нибудь наклюнется  - отпишусь


Название: Re: От чего зависит производительность qml
Отправлено: BuRn от Май 05, 2013, 20:43
Ерунда какая то.
Поставил 7ку... нормально работает.
Поставил Ubuntu - опять загрузка 80%

Получается что то не то с видеодрайвером? Точнее с его поддержкой opengl?
Но судя по glxinfo и glxgears всё вполне себе в порядке.

Вобщем буду искать вроде пара идеек нарылась - что нибудь наклюнется  - отпишусь
проблема определенно в драйвере, а не пробовал поэкспериментировать с Xorg и собственно самими драйверами ?


Название: Re: От чего зависит производительность qml
Отправлено: joker от Май 09, 2013, 18:47
Попробовал на чистой gentoo, оттюненой по максимуму (gentoo мне ближе) - производительность анимации сравнялась с windows 7  (точнее визуально более гладко, однако при проигрывании анимации - загрузка по каждому процессору растет до 20-30%, а как она растет при windows я не помню :( но явно двигается менее гладко)
Если я правильно понимаю - таки частично рендерится через cpu, просто при тюнинге отрабатывает меньше всякой промежуточной ерунды.
Соответственно вопрос - а можно как то собрать qt с более ранней (простой) версией opengl (где то видел что в qt5 используется opengl2, может имеет смысл собрать все с opengl1)?
И где можно посмотреть какую нибудь информацию по opengl и всяким связкам - пока натыкаюсь только на разрозненные кусочки


Название: Re: От чего зависит производительность qml
Отправлено: Отражение луны от Май 17, 2013, 10:49
У меня абсолютно та же проблема с производительностью на том же pos терминале с тем же убогим железом (на другом pos терминалы не делают), только в качестве оболочки gnome-shell, что по сути не имеет значения.
Насколько я понимаю, qt5 работает только с opengl 2.0, и не ниже. Официально intel gma 3150 поддерживает opengl 2.0 на линуксах. Но на ubuntu почему-то мне его так завести не удалось.
glxinfo | grep OpenGL пишет весию 1.4 не смотря на все манипуляции с driconf.

Автор, будьте добры, отпишитесь, на генте и убунте у вас какие версии opengl заработали?
Существуют официальные баг репорты на тему:
https://bugs.launchpad.net/ubuntu/+source/mesa/+bug/937734
https://bugs.launchpad.net/ubuntu/+source/xserver-xorg-video-intel/+bug/880034


Название: Re: От чего зависит производительность qml
Отправлено: Отражение луны от Май 17, 2013, 11:17
upd: все же удалось запустить opengl 2.0 через driconf, до этого не получалось из-за ошибки прав доступа.
Стало чуть-чуть быстрее, но не намного. Подозрительно, что обычный gridview так сильно тормозит, даже на таком слабом железе. По всей видимости, действительно, дело в драйвере. Хотя справедливости ради стоит отметить, что gnome shell на нем работает вполне сносно.
Мб кто подскажет варианты решения? Не хотелось бы, конечно, использовать венду.


Название: Re: От чего зависит производительность qml
Отправлено: alex312 от Май 17, 2013, 12:03
это конечно "пальцем в небо" но попробуйте  - https://01.org/linuxgraphics/downloads , если у вас Убунта 12,04 или 12,10.
как вариант обновится до 13.04 - там все самое свежее.


Название: Re: От чего зависит производительность qml
Отправлено: Отражение луны от Май 17, 2013, 12:06
Ubuntu 13.04, взята из тех соображений, что либы qt5 уже есть в стандартных репозиториях. Да и она вполне стабильна.
Полагаю, судя по вашему glxinfo qtquick 2 все же требует opengl 2.1
Ну а вообще было бы здорово почитать "системные требования" qtquick 2.0, но я их, увы, не нашел.


Название: Re: От чего зависит производительность qml
Отправлено: alex312 от Май 17, 2013, 12:21
Полагаю, судя по вашему glxinfo qtquick 2 все же требует opengl 2.1
Насколько я понял то qtquick 2 ориентирован на OpenGL ES 2.0.
И как я писал выше, у меня сейчас убунта 13.04, все компоненты стандартные.

ЗЫ Можете выложить скрин окна "про систему" ?


Название: Re: От чего зависит производительность qml
Отправлено: Отражение луны от Май 17, 2013, 12:48
К слову, на моём нетбуке с radeon 4225 на свободных драйверах все работает крайне шустро, ubuntu 13.04, Opengl 3.0.


Название: Re: От чего зависит производительность qml
Отправлено: alex312 от Май 17, 2013, 13:18
А  нельзя воткнуть в терминал самую простую и дешевую внешнюю видяху?


Название: Re: От чего зависит производительность qml
Отправлено: Отражение луны от Май 17, 2013, 15:18
Увы, нет. Это по сути сенсорный моноблок. Да и лишнее это, проще пользовать тогда 1.1 и дай бог через год-два перейдем на arm или же ситуация с драйверами улучшится


Название: Re: От чего зависит производительность qml
Отправлено: alex312 от Май 17, 2013, 15:50
Увы, нет. Это по сути сенсорный моноблок. Да и лишнее это, проще пользовать тогда 1.1 и дай бог через год-два перейдем на arm или же ситуация с драйверами улучшится
У меня на машине qml 2.0 намного шустрее бегает. А по поводу армов - это тоже не подарок. Если это не мегапопулярная плата (типа Rpi) то тоже куча нюансов, особенно с opengl .


Название: Re: От чего зависит производительность qml
Отправлено: Отражение луны от Май 17, 2013, 16:45
Еще какая-то проблема с qtquick 1.1. Поскольку скорее всего она ерундовая, отдельную тему создавать не хочется. Что-то у меня под windows helloworld работает, а под ubuntu выдает
:-1: error: Unknown module(s) in QT: script
Либы все установлены.

У меня на буке 2.0 почти не грузит проц, но деваться некуда, кривые драйвера все портят. Можно, разве что, попробовать вовсе ускорение отключить, или же запустить через Llvmpipe, а то есть предположение, что именно кривой драйвер перегружает проц.


Название: Re: От чего зависит производительность qml
Отправлено: joker от Май 22, 2013, 12:03
Извиняюсь... уходил с головой во внедрение - сюда не возвращался... так что ответить не мог.

Насчет script - может возьмешь сборку самой digia с их сайта (ставится в /opt) - там точно фулл комплект. Ибо как собраны либы в бубунте - знают только в каноникале :)
Кстати, замечал у себя - если на компе есть собственные либы qt и отдельно установленные, то для сборки из командной строки надо делать что то вроде
Цитировать
export PATH=/opt/Qt5.1.0/5.1.0-beta1/gcc/bin/:$PATH
Т.к. иначе make пытается подхватить изначальные либы, которые не той версии (и, соотвественно, с дургими плагинами)

Насчет конфига - еще раз повторюсь - на бубунте ничего нормально так и не завелось.
На gentoo вроде glxinfo показывал то же самое... но сейчас проверить не могу - доступа к девайсу пока нет, через недельку (а может и позже) - пишите что нужно - выложу.
Но явно могу сказать.
1. Интеловские GMA явно для OpenGL 2.0 используют камень (это логично) и особо производительностью не блещут.
2. Кстати, в обычных никсах используется OpenGL, а OpenGL ES - это для встраиваемых систем (типа смартфонов и тп. ES = Embedded system)

Ну и в 5.1.0 что то исправлялось с openGL, вот только железки пока нет чтобы проверить - будет что интересное - отпишусь



Название: Re: От чего зависит производительность qml
Отправлено: ctin от Август 25, 2013, 12:16
В ряде статей есть рекомендация использовать WA_OpaquePaintEvent для QDeclarativeView (пруф http://qt-project.org/doc/qt-4.8/qdeclarativeperformance.html (http://qt-project.org/doc/qt-4.8/qdeclarativeperformance.html))
Я провел простой эксперимент: одно и то же приложение с прогрессбаром размером 800х600 занимает 60% процессора с этим флагом (WA_OpaquePaintEvent), и 0% без него.


Название: Re: От чего зависит производительность qml
Отправлено: Отражение луны от Декабрь 12, 2013, 16:33
Апну темку, т.к. проблема по-прежнему актуальна и решить штатынми средствами не удалось.
nomodeset дал небольшой прирост производительности, но скорость рендеринга все равно убогая.


Название: Re: От чего зависит производительность qml
Отправлено: navrocky от Январь 11, 2014, 19:35
Отключи композитинг, попробуй запустить на голом X-сервере без ДЕ. Обычно слабые видяхи плохо тянут opengl приложения при включенном композитинге. Для терминала лучше вообще все ДЕ поотключать.

Наша компания тоже терминал делает, мы себе сделали usb live-дистрибутив с необходимым минимальным набором софта, в котором стартуют голые иксы и полноэкранное приложение на QML.


Название: Re: От чего зависит производительность qml
Отправлено: Отражение луны от Февраль 25, 2014, 12:32
Пробовал на windows, драйвера gma не поддерживают opengl 2.0, следовательно ни один из примеров даже и не запустить вовсе.
На линуксе на голых иксах получилось добиться небольшого прироста производительности, но не уверен, что этого достаточно. Вообщем, пора начать выкидывать мусор на основе intel gma, и покупать что-то с более-менее нормальным железом.


Название: Re: От чего зависит производительность qml
Отправлено: navrocky от Март 22, 2014, 16:19
Qt4 QtQuick1 использует софтварную отрисовку, вообще не тормозит. Попробуй на нем.


Название: Re: От чего зависит производительность qml
Отправлено: Отражение луны от Март 23, 2014, 17:38
Qt4 QtQuick1 использует софтварную отрисовку, вообще не тормозит. Попробуй на нем.
Сейчас на нем и работаем, вот только там нет массы полезных фич.


Название: Re: От чего зависит производительность qml
Отправлено: OKTA от Март 23, 2014, 21:34
Например?


Название: Re: От чего зависит производительность qml
Отправлено: Отражение луны от Март 24, 2014, 23:56
Например?
Например адекватная реализация drag and drop и хоткеи при помощи Action. qtquick 1 больше не развивается, все новые плюшки появляются только для второго. Поэтому в любом случае придется переходить. 


Название: Re: От чего зависит производительность qml
Отправлено: OKTA от Март 25, 2014, 00:11
И первое и второе у меня работает в qtquick 1 замечательно :P Если надо помочь - помогу! 8)
У qtquick 2 тоже своих косяков хватает порядочно и лично для меня например эти косяки рещающие и не дают так просто перейти))


Название: Re: От чего зависит производительность qml
Отправлено: Отражение луны от Март 26, 2014, 01:56
И первое и второе у меня работает в qtquick 1 замечательно
Заставить работать можно, но не без огромных костылей и велосипедов.


Название: Re: От чего зависит производительность qml
Отправлено: OKTA от Март 26, 2014, 07:18
Да ничего там такого нет  ???


Название: Re: От чего зависит производительность qml
Отправлено: navrocky от Март 31, 2014, 19:08
Кстати а mesa в режиме программной эмуляции не пробовали? там есть пара софтварных рендеров, к примеру, http://www.mesa3d.org/llvmpipe.html

Цитировать
Shaders, point/line/triangle rasterization and vertex processing are implemented with LLVM IR which is translated to x86 or x86-64 machine code. Also, the driver is multithreaded to take advantage of multiple CPU cores (up to 8 at this time). It's the fastest software rasterizer for Mesa.

Я сам не пробовал, но возможно тоже придется потыкать, т.к. надо чтобы аппликуха запускалась везде, в том числе и на старых машинках с виндой xp и, возможно, дохлыми драйверами.


Название: Re: От чего зависит производительность qml
Отправлено: Отражение луны от Апрель 01, 2014, 11:18
llvmpipe пробовал, большого прироста не получилось, хоть он и был. Возможно, я не включил чего-то нужного.
Этому вопросу надо уделить кучу времени, но пока что такой возможности нет. Если вдруг добьюсь какого-либо результата - сообщу. Хотя интел гма все равно надо выкидывать.
На венде запускать со старыми видюхами поможет angle.


Название: Re: От чего зависит производительность qml
Отправлено: navrocky от Апрель 09, 2014, 19:30
Я попробовал llvmpipe, работает очень хорошо, конечно до скорости аппаратного ускорения ему далековато, но для моего приложения его хватает. Надо, правда, его на атоме погонять, пока тестил на core i5 :).

Квака 3 в разрешении 800х600 выдает вполне играбельный fps >50.