Библиотека сайта rus-linux.net
Проверяем производительность графической карты (GPU) в Linux с помощью glmark
Оригинал: Benchmark graphics card (GPU) performance on Linux with glmarkАвтор: Silver Moon
Дата публикации: Apr 18, 2014
Перевод: Н.Ромоданов
Дата перевода: октябрь 2014 г.
Измеряем производительность графической системы
Недавно, когда я добавил новую видеокарту NVIDIA в один из моих настольных компьютеров, мне стало интересно оценить и сопоставить мощность этой видеокарты с той, которая была у меня раньше.
Один из способов это сделать — использовать программу тестирования производительности (benchmark tools), которая для измерения аппаратной мощности графического процессора запускает серию "рисующих" тестов. Или проще, более мощными будут графические процессоры, которые могут в единицу времени обработать и отобразить больше изображений/графиков (кадров в секунду).
Glmark – инструмент для проверки производительности
В Linux существует не так много инструментов для тестирования графических процессоров, и, потратив некоторое время с google, я наткнулся на эту небольшую инструментальную программу, которая называется glmark. Она разработана Linaro.
Glmark запускает серию тестов, отображающих на экране 2D- и 3D- графику различного вида, а затем измеряется производительность в терминах FPS (число кадров, отображаемых в секунду). Затем для того, чтобы вычислить для графического процессора итоговый показатель, происходит усреднение значений fps по всем тестам.
Не очень уверен, но скорее всего эта оценка является лишь сравнительной, оценивающей возможности графического процессора вашей машины. Если ее сравнивать с итоговыми показателями других машин, то можно получить примерную относительную оценку мощности графического процессора.
Для того, чтобы понять, что показывают результаты работы glmark, я запускал glmark2 на нескольких машинах с разными конфигурациями графических процессоров. Все машины являются настольными ПК, и ниже для каждой машины приводится ее краткое описание
- M1 – материнская плата Intel DG35EC + QuadCore + 8GB + Ubuntu 13.10 => встроенная графическая система "Intel® Graphics Media Accelerator (Intel® GMA) X3500 onboard graphics subsystem" Незначительное/ограниченное аппаратное ускорение
- M2 - материнская плата Gigabyte GA-G41MT-ES2L+ QuadCore + 4GB + Ubuntu 13.04 => "Integrated Intel Graphics Media Accelerator X4500" Незначительное/ограниченное аппаратное ускорение
- M3 - материнская плата Intel DG35EC + Nvidia GeForce 210 (драйверы Nouveau) + QuadCore + 4GB + Linux Mint 17
- M4 - материнская плата Intel DG35EC + Nvidia GeForce 210 (проприетарные драйверы Nvidia) + QuadCore + 4GB + Linux Mint 17
Первое, что нужно сделать, это установить программу glmark. В Ubuntu/Linux Mint она по умолчанию доступна в репозиториях.
$ sudo apt-get install glmark2
Тестирование
Все, что вам нужно сделать для запуска тестов, это запустить команду glmark2 без всяких параметров. Внутри окна будет друг за другом отображаться большое количество анимаций различного вида, а в терминале одновременно будут выдаваться измеренные значения fps. Следите за тем, чтобы одновременно не запускались какие-либо ресурсоемкие приложения, иначе результаты тестов могут быть искажены.
В конце всех тестов программа glmark выдаст итоговый результат. Более высокий результат должен указывать на более мощный графический процессор. Итоговые результаты каждый раз при запуске теста не будут повторяться и различаются. Но они похожи. Поэтому вы должны запускать программу glmark несколько раз (я запускаю ее 3 раза) и брать среднее значение.
В некоторых случаях конкретный тест может давать очень высокой или очень низкий результат. Я просто отбрасываю эти значения и снова запускаю программу glmark.
Все тесты проводились на ЖК-мониторе Samsung с разрешениеи 1360x768 @ 60 Гц.
Смотрим результаты
Теперь давайте взглянем на результаты работы и оценки, выданные glmark.
M1 – встроенный графический чипсет - Intel GMA X350
Эта машина имеет обладает самой слабой графической системой и тесты glmark даже не смогли завершиться, поскольку система прекращала свою работу где-то в середине тестирования. 3D-анимация прошла, но с трудом.
$ glmark2 ======================================================= glmark2 2012.08 ======================================================= OpenGL Information GL_VENDOR: Intel Open Source Technology Center GL_RENDERER: Mesa DRI Intel(R) 965G GL_VERSION: 2.1 Mesa 9.2.1 ======================================================= [build] use-vbo=false: FPS: 325 FrameTime: 3.077 ms [build] use-vbo=true: FPS: 375 FrameTime: 2.667 ms [texture] texture-filter=nearest: FPS: 371 FrameTime: 2.695 ms [texture] texture-filter=linear: FPS: 365 FrameTime: 2.740 ms [texture] texture-filter=mipmap: FPS: 338 FrameTime: 2.959 ms [shading] shading=gouraud: FPS: 235 FrameTime: 4.255 ms [shading] shading=blinn-phong-inf: FPS: 206 FrameTime: 4.854 ms [shading] shading=phong: FPS: 173 FrameTime: 5.780 ms [bump] bump-render=high-poly: FPS: 112 FrameTime: 8.929 ms [bump] bump-render=normals: FPS: 347 FrameTime: 2.882 ms [bump] bump-render=height: FPS: 320 FrameTime: 3.125 ms [effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 134 FrameTime: 7.463 ms [effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 60 FrameTime: 16.667 ms [pulsar] light=false:quads=5:texture=false: FPS: 336 FrameTime: 2.976 ms [desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 67 FrameTime: 14.925 ms [desktop] effect=shadow:windows=4: FPS: 136 FrameTime: 7.353 ms [buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 164 FrameTime: 6.098 ms ======================================================= glmark2 Score: 239 =======================================================
Итоговый результат приблизительно равен 240, что является довольно низким значением. На этой конкретной машине игра Supertuxkart почти не шевелится, а игра 0AD просто превращается в обои :)
Обратите внимание, что в качестве средства визуализации используется MESA, что указывает, что ускорение 3D в данный момент эмулируется программным обеспечением, а не поддерживается аппаратно. Так образом аппаратное ускорение недоступно.
M2 – графический чипсет - Intel GMA X4500
Это материнская плата Gigabyte с интегрированным графическим блоком Intel GMA. По сравнению с предыдущей машиной эта машина имеет несколько большую графическую мощность.
Команда lspci выдает следующую подробную информацию об аппаратных средствах
$ lspci -vnn | grep VGA -A 12 00:02.0 VGA compatible controller [0300]: Intel Corporation 4 Series Chipset Integrated Graphics Controller [8086:2e32] (rev 03) (prog-if 00 [VGA controller]) Subsystem: Giga-byte Technology Device [1458:d000] Flags: bus master, fast devsel, latency 0, IRQ 43 Memory at fd800000 (64-bit, non-prefetchable) [size=4M] Memory at d0000000 (64-bit, prefetchable) [size=256M] I/O ports at ff00 [size=8] Expansion ROM at <unassigned> [disabled] Capabilities: <access denied> Kernel driver in use: i915 Kernel modules: i915
Glmark может на этой машине выполнить все тесты и результаты следующие ...
$ glmark2 ======================================================= glmark2 2011.09 ======================================================= OpenGL Information GL_VENDOR: Tungsten Graphics, Inc GL_RENDERER: Mesa DRI Intel(R) G41 GEM 20100330 DEVELOPMENT GL_VERSION: 2.1 Mesa 7.10.2 ======================================================= [build] use-vbo=false: FPS: 493 [build] use-vbo=true: FPS: 494 [texture] texture-filter=nearest: FPS: 431 [texture] texture-filter=linear: FPS: 427 [texture] texture-filter=mipmap: FPS: 451 [shading] shading=gouraud: FPS: 495 [shading] shading=blinn-phong-inf: FPS: 312 [shading] shading=phong: FPS: 269 [bump] bump-render=high-poly: FPS: 201 [bump] bump-render=normals: FPS: 392 [effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 247 [effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 131 [pulsar] light=false:quads=5:texture=false: FPS: 494 [desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 126 [conditionals] fragment-steps=0:vertex-steps=0: FPS: 375 [conditionals] fragment-steps=5:vertex-steps=0: FPS: 297 [conditionals] fragment-steps=0:vertex-steps=5: FPS: 375 [function] fragment-complexity=low:fragment-steps=5: FPS: 375 [function] fragment-complexity=medium:fragment-steps=5: FPS: 285 [loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 362 [loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 362 [loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 272 ======================================================= glmark2 Score: 348 =======================================================
Итоговый средний результат для этой машины приблизительно равен 350. Это сравнительно лучше, чем на нашей предыдущей машине, графический процессор которой был слабее.
На этой машине игра supertuxkart работает немного лучше. Но такие игры, как 0AD, не работают. Но, опять же, прямое отображение осуществляется с помощью MESA, так что аппаратное ускорение отсутствует.
M3 – карта Nvidia GeForce 210 с драйвером nouveau
Эта машина имеет такую же самую материнскую плату Intel с внешним графическим процессором серии Nvidia GeForce 210, подключенным через слот PCI. В ней используется чипсет nvidia, выпущенный под брендом Zotac, который имеет 1 Гб встроенной памяти и частоту работы ядра графического процессора 520 МГц.
$ lspci -vnn | grep VGA -A 12 01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GT218 [GeForce 210] [10de:0a65] (rev a2) (prog-if 00 [VGA controller]) Subsystem: ZOTAC International (MCO) Ltd. Device [19da:1160] Flags: bus master, fast devsel, latency 0, IRQ 16 Memory at e2000000 (32-bit, non-prefetchable) [size=16M] Memory at d0000000 (64-bit, prefetchable) [size=256M] Memory at e0000000 (64-bit, prefetchable) [size=32M] I/O ports at 2000 [size=128] Expansion ROM at e3080000 [disabled] [size=512K] Capabilities: <access denied> Kernel driver in use: nouveau
Сначала мы собираемся протестировать его с драйверами Nouveau, используемыми по умолчанию, и посмотреть, как она работает. Следующий тест будет выполнен с использованием фирменных драйверов Nvidia.
$ glmark2 ======================================================= glmark2 2012.08 ======================================================= OpenGL Information GL_VENDOR: nouveau GL_RENDERER: Gallium 0.4 on NVA8 GL_VERSION: 3.0 Mesa 9.2.1 ======================================================= [build] use-vbo=false: FPS: 420 FrameTime: 2.381 ms [build] use-vbo=true: FPS: 430 FrameTime: 2.326 ms [texture] texture-filter=nearest: FPS: 395 FrameTime: 2.532 ms [texture] texture-filter=linear: FPS: 393 FrameTime: 2.545 ms [texture] texture-filter=mipmap: FPS: 409 FrameTime: 2.445 ms [shading] shading=gouraud: FPS: 351 FrameTime: 2.849 ms [shading] shading=blinn-phong-inf: FPS: 353 FrameTime: 2.833 ms [shading] shading=phong: FPS: 319 FrameTime: 3.135 ms [bump] bump-render=high-poly: FPS: 301 FrameTime: 3.322 ms [bump] bump-render=normals: FPS: 428 FrameTime: 2.336 ms [bump] bump-render=height: FPS: 387 FrameTime: 2.584 ms [effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 315 FrameTime: 3.175 ms [effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 157 FrameTime: 6.369 ms [pulsar] light=false:quads=5:texture=false: FPS: 348 FrameTime: 2.874 ms [desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 414 FrameTime: 2.415 ms [desktop] effect=shadow:windows=4: FPS: 407 FrameTime: 2.457 ms [buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 260 FrameTime: 3.846 ms [buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 279 FrameTime: 3.584 ms [buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 269 FrameTime: 3.717 ms [ideas] speed=duration: FPS: 356 FrameTime: 2.809 ms [jellyfish] <default>: FPS: 227 FrameTime: 4.405 ms [terrain] <default>: FPS: 30 FrameTime: 33.333 ms [conditionals] fragment-steps=0:vertex-steps=0: FPS: 386 FrameTime: 2.591 ms [conditionals] fragment-steps=5:vertex-steps=0: FPS: 290 FrameTime: 3.448 ms [conditionals] fragment-steps=0:vertex-steps=5: FPS: 383 FrameTime: 2.611 ms [function] fragment-complexity=low:fragment-steps=5: FPS: 384 FrameTime: 2.604 ms [function] fragment-complexity=medium:fragment-steps=5: FPS: 312 FrameTime: 3.205 ms [loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 383 FrameTime: 2.611 ms [loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 384 FrameTime: 2.604 ms [loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 318 FrameTime: 3.145 ms ======================================================= glmark2 Score: 336 =======================================================
Средняя итоговая оценка остается приблизительно равной 335. Несмотря на наличие отдельного графического процессора Nvidia, оценка указывает на плохую графическую производительность. Это вызвано тем, что производительность драйверов Nouveau недостаточна и они не используют весь потенциал карт nvidia.
Такие игры, как supertuxkart и 0AD работают очень хорошо.
Обратите внимание, что итоговый результат для этой машины меньший/равен результату для предыдущей машины. Во время тестовых игр было видно, что эта машина имела лучшую графическую производительность.
Это объясняется тем, что данная машина имеет отдельный выделенный графический процессор, который работает независимо. На предыдущей машине библиотеки MESA для выполнения графической работы использовали главный процессор и, несмотря на хороший итоговый результат, машина не могла пользоваться этим процессором в случаях, когда запускались реальные приложения.
M4 – карта Nvidia GeForce 210 с драйвером nvidia-331
Это та же самая машина, что и выше, но в ней вместо драйверов Nouveaи используются фирменные драйверы Nvidia.
Команда lspci выдает следующую подробную информацию об аппаратных средствах
$ lspci -vnn | grep VGA -A 12 01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GT218 [GeForce 210] [10de:0a65] (rev a2) (prog-if 00 [VGA controller]) Subsystem: ZOTAC International (MCO) Ltd. Device [19da:1160] Flags: bus master, fast devsel, latency 0, IRQ 46 Memory at e2000000 (32-bit, non-prefetchable) [size=16M] Memory at d0000000 (64-bit, prefetchable) [size=256M] Memory at e0000000 (64-bit, prefetchable) [size=32M] I/O ports at 2000 [size=128] [virtual] Expansion ROM at e3080000 [disabled] [size=512K] Capabilities: <access denied> Kernel driver in use: nvidia
Результаты работы и итоговая оценка, выдаваемые программой glmark, следующие
$ glmark2 ======================================================= glmark2 2012.08 ======================================================= OpenGL Information GL_VENDOR: NVIDIA Corporation GL_RENDERER: GeForce 210/PCIe/SSE2 GL_VERSION: 3.3.0 NVIDIA 331.20 ======================================================= [build] use-vbo=false: FPS: 671 FrameTime: 1.490 ms [build] use-vbo=true: FPS: 747 FrameTime: 1.339 ms [texture] texture-filter=nearest: FPS: 660 FrameTime: 1.515 ms [texture] texture-filter=linear: FPS: 649 FrameTime: 1.541 ms [texture] texture-filter=mipmap: FPS: 688 FrameTime: 1.453 ms [shading] shading=gouraud: FPS: 635 FrameTime: 1.575 ms [shading] shading=blinn-phong-inf: FPS: 631 FrameTime: 1.585 ms [shading] shading=phong: FPS: 600 FrameTime: 1.667 ms [bump] bump-render=high-poly: FPS: 507 FrameTime: 1.972 ms [bump] bump-render=normals: FPS: 781 FrameTime: 1.280 ms [bump] bump-render=height: FPS: 744 FrameTime: 1.344 ms [effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 483 FrameTime: 2.070 ms [effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 308 FrameTime: 3.247 ms [pulsar] light=false:quads=5:texture=false: FPS: 579 FrameTime: 1.727 ms [desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 231 FrameTime: 4.329 ms [desktop] effect=shadow:windows=4: FPS: 326 FrameTime: 3.067 ms [buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 396 FrameTime: 2.525 ms [buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 423 FrameTime: 2.364 ms [buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 432 FrameTime: 2.315 ms [ideas] speed=duration: FPS: 563 FrameTime: 1.776 ms [jellyfish] <default>: FPS: 360 FrameTime: 2.778 ms [terrain] <default>: FPS: 41 FrameTime: 24.390 ms [conditionals] fragment-steps=0:vertex-steps=0: FPS: 664 FrameTime: 1.506 ms [conditionals] fragment-steps=5:vertex-steps=0: FPS: 556 FrameTime: 1.799 ms [conditionals] fragment-steps=0:vertex-steps=5: FPS: 662 FrameTime: 1.511 ms [function] fragment-complexity=low:fragment-steps=5: FPS: 661 FrameTime: 1.513 ms [function] fragment-complexity=medium:fragment-steps=5: FPS: 517 FrameTime: 1.934 ms [loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 654 FrameTime: 1.529 ms [loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 662 FrameTime: 1.511 ms [loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 603 FrameTime: 1.658 ms ======================================================= glmark2 Score: 547 =======================================================
На этот раз итоговая оценка выше 500 и эта машина имеет очень достойную производительность графики, так что простые игры воспроизводятся без всяких проблем. Такие игры, как Supertuxkart и 0AD, работают отлично и без глюков.
Драйвер Nvidia воспроизводит графику GL, что означает, что аппаратное ускорение 3D-графики доступно и работает нормально.
Проверьте производительность своего графического процессора
Чтобы проверить графический процессор вашей системы, выполните команду glmark и просмотрите выданные данные и итоговую оценку. При использовании фирменных драйверов вместо свободных драйверов производительность должна быть высокой.
В сети нет для сравнения таблицы итоговых оценок, но из выполненных выше тестов можно сделать заключение, что если оценка выше 500, то это хорошо и что если GL_RENDERER не является драйвером MESA, то это указывает на то, что используется аппаратное ускорение.
Если GL_RENDERER является драйвером MESA, то 3D-рендеринг осуществляется с помощью программного обеспечения, а не с помощью аппаратных средств, и, следовательно, при воспроизведении 3D-приложений и игр производительность будет очень низкой.
Если вы на свою машину добавляете новую видеокарту, то первое, что нужно сделать, это - получить для нее наилучший драйвер. Фирма Nvidia для большинства своих современных видеокарт предоставляет драйверы для Linux, которые с Linux работают очень хорошо.
Для Linux вы можете получить список некоторых самых производительных графических процессоров по ссылке http://www.free3d.org/.
Подведем итог
Из приведенных выше тестов видно, что по мере того, как в каждом отдельном тесте растет итоговая оценка, постепенно возрастает значение FPS. Поэтому высокопроизводительные графические процессоры способны обеспечить рендеринг с большим значение FPS. Однако значение FPS не следует путать с частотой обновления монитора, которая равна 60 гц и останется такой.
Значение FPS, указываемое в тесте, сообщает, сколько кадров в секунду может обработать и сгенерировать графический процессор (или вся система).
Обратите внимание, что оценка glmark не является неоспоримым тестом производительности графической подсистемы. Как видно из третьего теста, результаты могут иногда вводить в заблуждение. Например, машина с высокой производительностью центрального процессора и без аппаратного ускорения может дать такую же оценку, как и машины с умеренной производительностью центрального процессора и низкой производительностью графического процессора. Это вызвано тем, что программы, осуществляющие рендеринг с использованием высокопроизводительного центрального процессора, сопоставимы по производительности мощности аппаратного ускорения низкопроизводительного графического процессора, работающего самостоятельно. Однако это ограничение инструментального средства, которое должно развиваться дальше с тем, чтобы могло использовать более сложные тесты и выполнять анализ, позволяющий дать более точную картину.
Так что теперь запустите программу glmark на своей машине и сообщите нам в комментариях о том, какую итоговую оценку вы получили, а также укажите марку/модель вашего графического процессора.