вторник, 6 января 2009 г.

Тестирование Intel GMA 900 на EEE PC 901

Продолжаю серию тестов нетбука Asus EEE PC 901. В предыдущей заметке написано как завести все это железо в рамках Gentoo Linux. Теперь самое время провести тесты видеокарты, результаты которых должны быть интересны в свете последних событий в развитии драйвера xf86-video-intel и интеграции в него новых фитч, повышающих его производительность и стабильность. Наибольший интерес представляет поддержка системы управления памятью GEM (Graphics Execution Manager), ибо уже подоспело ядро linux-2.6.28 и вполне юзабельным стал разрабатываемый xorg-server-1.6.0.
И так преступим. Установим xorg-x11-7.4 ( xf86-video-intel-2.5.1-r1, xf86-input-synaptics-0.99.3 и xorg-server-1.5.3), проконтролировав что установлены USE-флаги dri,hal,xv,xvmc, убран флаг SSE2 дабы не обновлять gcc до 4.3 и glibc до 2.9, а также устройства intel, vesa, synaptics, evdev, keyboard,mouse . Сразу стоит оговориться, что на сегодня по части производительности все что выше xorg-server-1.3 оставляет желать лучшего, но так как все-таки нетбук предъявляет дополнительные требования по функционалу, например, подключение устройств ввода/вывода "налету", придется закрыть на это глаза.
Убеждаемся что syslog-ng, acpid, sshd и hald будут стартовать автоматом при загрузке и перезагружаем подопытного для чистоты эксперимента. Заходим по ssh пользователем root и стратуем с пустым xorg.conf- starx. Смотрим что нам говорят glxinfo и glxgears: failed to initialize TTM buffer и direct rendering: Yes, 60FPS всреднем (что значит включен VSinc). Каких либо серьезных тестов проводить не буду, ибо уже 100 раз тестировалось. Мне главное убедиться, что от всех этих новых штучек будет прок в простых задачах: 2D, Video, простые OpenGL игры.
Теперь выполним более реальный тест, оценив производительность тулкита GTK. Сразу оговорюсь, для отрисовки шрифтов будут использоваться патчи из оверлея bobrik-cleartype, дабы на LCD шрифты смотрелись не так страшно (особенно когда есть с чем сравнивать). Устанавливаем gtkperf-0.4, gtk+-2.12.11, cairo-1.8.6-r1(glitz opengl) и запускаем очередную серию тестов. Получаем Total time: 16.86. Крутим опции драйвера видюхи следующим образом:
Section "Device"
Identifier "Configured Video Device"
Option "AccelMethod" "UXA"
Option "Tiling" "No"
EndSection
Все, запускаем опять gtkperf и видиим. Total time: 303.83. В целом все медленнее незначительно, но львиная доля уходит на:
GtkDrawingArea - Lines - time: 264.64
GtkDrawingArea - Circles - time: 10.72
GtkDrawingArea - Text - time: 12.25
Что то не ладно с новым методом акселерации (UXA), возможно надо mesa и xorg-server посвежее. Теперь посмотрим на поддержку 3D. Серьезные тесты гонять нет смысла хотябы потому, что это железо не предназначено для таких задач. Ограничимся запуском игрушки games-action/extreme-tuxracer. Пока не будем шаманить с 3D (например, забудем о force_comptex_s3tc.so), посотмрим дефолтовую производительность. Как оказалось смотреть не начто: в full-screen при 1024x600 оно не играбельно. Ну что же, если брать релизные версии софта, то Intel GMA900 не годится для игровых приложений, разве только для ускорения видео и Compiz. Скорее всего тут где-то что-то не так, но большого желания искать узкое место нет, лучше посотмреть что ожидается в следующем xorg-server, а вместе с ним и драйвер 2.6, GEM, обновленный libdrm и ядро со свежим DRM-модулем.
Добавим оверлей X11 и возьмем от туда следующие компоненты, попутно обновятся pixman и randr:
x11-proto/inputproto-9999
x11-libs/libdrm-9999
media-libs/mesa-9999
x11-base/xorg-server-9999
x11-drivers/xf86-video-intel-9999
x11-drivers/xf86-input-mouse-9999
x11-drivers/xf86-input-keyboard-9999
x11-drivers/xf86-input-evdev-9999
x11-drivers/xf86-input-synaptics-9999
x11-proto/dri2proto-9999
Опционально можно обновить и эти библиотеки(я не стал пробовать), однако есть риск словить нестыковки с другими библиотеками такими как cairo и gtk :
x11-proto/xproto-9999
x11-proto/xcb-proto-9999
x11-libs/libxcb-9999
x11-libs/libX11-9999
Смотрим на результаты gtkperf: Total time: 15.77. Уже не плохо. Включаем метод акселерации графики UXA(tiling теперь не нужно отключать) и получаем первую прибавку: glxgears выдает 259FPS. Походу Vsync теперь отключен в Mesa (чето такое я видел в лога репозитария на тему еще недопиленого UXA). А вот gtkperf дает осечку, хотя не такую страшную: Total time: 18.21. Кстати стоит заметить отсутсвие ругани на TTM buffer, значит GEM работает. Также судя по логам DRI2 тоже работает. Запустим нашу игру etracer: вау!, в 2 раза быстрее, теперь выдает 3FPS вместо прежних 1.5FPS. Вот они обещанные 50%, :) надо будет подумать может где загвоздка, но пока это не суть важно. Можно конечно попробовать снапшот ядра drm-intel. Насколько я понял, в ветке drm-intel-next ведутся основные разработки по необходимым нам модулям drm. Однако посмотрел логи, серьезных изменеий относительно производительности я не заметил, только фиксы и поддержка kernel-videomodeset.
Ну пожалуй до полной картины осталось протестировать воспроизведение видео. О наличи в каком либо плеере/библиотеки/драйвере аппаратной поддержки декодирования видео(как например у nvidia) на видюхах Intel я не знаю(). Поэтому сделаю просто: установлю mplayer-9999 из оверлея berkano. i8x0 xvmc у меня не заработало, что бы я не прописывал в /etc/X11/XvMCConfig: libIntelXvMC.so.1 или libI810XvMC.so.1:
localhost ~ # cat /var/log/Xorg.0.log | grep XvMC
(**) intel(0): Option "XvMC" "true"
(==) intel(0): Intel XvMC decoder disabled
Значит сломано до сих пор или както по другому включается(когда включится то можно будет проверить на xine-lib). Теперь пробуем различные видео записи(с оглядкой что просмотр идет по 100мбит сети). В качестве примеров несколько файлов наугад: big_buck_bunny_1080p_surround.avi (1Gb), Stargate.The.Ark.Of.Truth.2008.1080p.HDTV.x264-hV_RUS_ENG.mkv (7Gb), и несколько простых фильмов. Без Direct Rendering (опция -dr, не путать с DRI) смотреть почти все(заисключением широкоэкранных фильмов низкого разрешения) некомофртно: заметны дерганья картинки во многих сценах. Самый быстрый(и единственный комофртный) вывод видео через Xvideo. OpenGL и особенно Textured video(gl2) в данном случае оказались мало пригодны для просмотра тоже. Особенно разницу видно на "Звездных вратах": на XVideo идет дерганое видео и звук, на GL и GL2 все начинает тормозить начиная с заставки "со львом", сам фильм же уже нельзя назвать дерганый, он уже рваный. Да и вывод через gl/gl2 не сильно разгружает проц: от 5 до 15% разницы.

Подитожу выше сказанное: большого толка от этих карточек с ускорением нет - уж слишком занижены частоты и медленный обвяз. XvMC не понятно как включать, возможно оно не хочет заводиться с DRI2. Вцелом, драйвер intel-2.5 поправил баги накопившиеся, какой либо эффект от UXA в сравнении EXA в области 2D особо не наблюдается, даже наооборот. Получается, если не нужно 3D вообще, то можно смело забить на GEM, по части Xvideo это мало чем поможет. Тут два выбора: если необходим функлионал XRandR, XOrg.Hotplug то нужно смотреть в сторону xorg-server-1.5/1.6 и всех этих плюшек, в противном случае смело откатываться на xorg-server-1.3 и не париться. Как мне кажется, нужно подождать первых ласточек 2.6.29, к тому времени в нем возможно улучшат Intel DRM, да и libdrm, intel-2.6 и xorg-server-1.6 возможно подшаманят.

9 комментариев:

vint комментирует...

вау чувак, крутое исследование замутил, зачет

Davnozdu комментирует...

Отличная статья.
Переехала в мои закладки.
На своём EEE PC 701 то-же попробую.

bukaka комментирует...

Ядро 2.6.28

Установленные пакеты:
x11-base/xorg-server-1.6.0
x11-base/xorg-x11-7.4
x11-drivers/xf86-input-evdev-2.2.0
x11-drivers/xf86-input-keyboard-1.3.2
x11-drivers/xf86-input-mouse-1.4.0
x11-drivers/xf86-input-synaptics-1.0.0
x11-drivers/xf86-video-intel-2.6.3
x11-drivers/xf86-video-vesa-2.2.0
x11-libs/libdrm-2.4.5
x11-proto/dri2proto-1.99.3
media-libs/mesa-7.3-r1

Xorg.0.log http://codepad.org/MIMo1n2K
xorg.conf http://codepad.org/OWqimxJ6

вызывает подозрение в логе :
276 (WW) intel(0): DRI2 requires UXA
297 (EE) intel(0): Failed to set tiling on front buffer: rejected by kernel
298 (EE) intel(0): Failed to set tiling on back buffer: rejected by kernel
299 (EE) intel(0): Failed to set tiling on depth buffer: rejected by kernel


уже устал побеждать ((

Есть идеи ?


И не работает!

PS. Option "AccelMethod" "UXA" тоже не решает проблему - всё те же glxgears 50 FPS

Nick Shaforostoff комментирует...

Option "Tiling" "No"
?

Анонимный комментирует...

Option "XvMCSurfaces" "integer"
Valid values are 6 and 7. Default: XvMC is disabled.

NiTr0 комментирует...

Кстати, тайлинг на 2.6.30 ядре прекрасно работает. И прирост дает ощутимый - в glxgears более чем в 2 раза ФПС растет (сколько точно - не знаю, т.к. при 800x450 окне уже 60 ФПС - без тайлинга меньше 30).
Единственное "но" - нужно проследить, чтобы не грузился intelfb. Если тайлинг не желает включаться и дальше - есть патч: http://linux.derkeiler.com/Mailing-Lists/Kernel/2009-06/msg02360.html

Unknown комментирует...

Респект автору! Такие статьи приятно читать, хоть у меня Intel видяшка нормально работает. Успехов тебе!

Анонимный комментирует...

Думаю, уже немного неактуально. Последние дрова версии 2.9.1 уже не держат EXA. Там оставили только UXA. И тут вопрос такой - или переходить на него, или старые дрова ставить.
Реально ли на нём поднять fps побольше? И не будут ли старые дрова конфликтовать с xorg-server-1.7.3?
Разумеется, что-то мощное я запускать не собираюсь (будут деньги - куплю себе тачку помощнее), мне бы хотя бы wormux, а то и он тормозит. :(

Сейчас на последних дровах fps у меня около 200, причём в зависимости от того, подключён ли блок питания (у меня при этом процессор частоту меняет, энергосбережения ради), fps меняется. И меня этот факт не утешает.
А KMS у тебя включён?

Unknown комментирует...

знаменателями»
Тест «Сравнение, сложение, вычитание обыкновенных дробей с одинаковыми знаменателями».
За две с половиной минуты необходимо ответить на 10 вопросов. Проверь свои знания.buy viagra