Graphics performance
Recently, when I added a new nvidia graphics in one of my workstation card, I’m curious to measure and compare the power of the graphics card it was before.One way to do it is with tools reference which would be a series of Design tests to measure the ability of graphics processing hardware. In simple terms, the GPU can process and make more images / graphics per unit of time are more powerful.
Glmark – the benchmark tool
Under Linux, there are not many tools for benchmarking GPU, and after spending some time on Google, I came across this little tool called glmark. It is developed by Linaro.
Glmark runs a series of tests, making different types of 2D and 3D graphics and animation on the screen, then measure the output performance in terms of FPS (frames per second). It then averages the fps through all the tests to calculate a score for the GPU.
Not sure, but the best guess is that this score is a relative measure of how able the graphics processing unit of your machine. Comparing with the twenty other machines should provide a rough comparison of the graphics processing power.
I ran glmark2 on many machines each with a different GPU configuration to understand what the glmark output indicated. All the machines are desktop pcs, and here is a short description of each
1. M1 - Intel DG35EC motherboard + QuadCore + 8GB + Ubuntu 13.10 => "Intel® Graphics Media Accelerator (Intel® GMA) X3500 onboard graphics subsystem" Little/Limited hardware acceleration 2. M2 - Gigabyte GA-G41MT-ES2L motherboard + QuadCore + 4GB + Ubuntu 13.04 => "Integrated Intel Graphics Media Accelerator X4500" Little/Limited hardware acceleration 3. M3 - Intel DG35EC motherboard + Nvidia GeForce 210 (Nouveau drivers) + QuadCore + 4GB + Linux Mint 17 4. M4 - Intel DG35EC motherboard + Nvidia GeForce 210 (Nvidia proprietory drivers) + QuadCore + 4GB + Linux Mint 17
1st thing to do is install glmark. On Ubuntu/Linux Mint it is available in the default repositories.
$ sudo apt-get install glmark2
Testing
To run the tests, all you need to do is run the command glmark2 no option. This would make a lot of different types of animations one by one within a window, and the print fps measures alongside the terminal. Make sure you do not run a CPU intensive application Meanwhile, the rest of the test results may differ.
At the end of the tests, glmark would show a score. A higher score would indicate a more powerful should GPU. The final score is not fixed and varies each time you run the test. But he remains in a narrow range. Therefore, you must run glmark few times and take the average score.
In some cases, a particular test run might result into a very high or low test score. I simply discarded those values and rank glmark again.
All tests were done on Samsung LCD monitor with 1360×768@60hz resolution.
M1 – Intel GMA X3500 onboard graphics chipset
This machine has the less amount of graphics power and the glmark tests are not even able to completed as the system crashes somewhere in between. The 3d animations do work but with jitters.
$ 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 =======================================================
The score is about 240 which is low. On this particular machine Supertuxkart is slow-playing and unplayable, whereas 0AD simply turns into a wallpaper 🙂
Note that the renderer is MESA, which indicates that the 3D acceleration is being software emulated and not available from the hardware. So hardware acceleration is not available.
M2 – Intel GMA X4500 onboard graphics chipset
This is the Gigabyte motherboard with integrated Intel GMA graphics unit. This machine has slightly higher graphics power compared to the previous machine.
The hardware details reported by lspci are
$ 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 is able to complete all tests on this machine and the results are like this …
$ 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 =======================================================
The average score for this machine was around 350. This is comparatively better than our previous machine which had an inferior GPU.
This machine can play supertuxkart a little bit. But games like 0AD do not work. But again, direct rendering is done by MESA, so hardware acceleration is absent.
M3 – Nvidia GeForce 210 with nouveau driver
This machine has the same ot an Intel motheboard with external Nvidia GeForce 210 series GPU connected via PCI slot. Its a Zotac brand nvidia chipset and has 1GB dedicated RAM and 520Mhz GPU/Core clock speed.
$ 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
First of all we will test it with the default Nouveau drivers and see how it does. The next test would be done with Nvidia proprietory drivers.
$ 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 =======================================================
The average score remains around 335. The score shows bad graphics performance inspite of having a dedicated Nvidia GPU. Its because of the Nouveau drivers which are inefficient and do not utilize the full potential of the nvidia cards.