GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Performances de référence des cartes graphiques (GPU) sous Linux avec glmark

Performance graphique :mesurez-la

Récemment, lorsque j'ai ajouté une nouvelle carte graphique nvidia à l'un de mes ordinateurs de bureau, j'étais curieux de mesurer et de comparer la puissance de cette carte graphique avec ce qu'elle était auparavant.

Une façon de le faire est d'utiliser des outils de référence qui exécuteraient une série de tests de "dessin" pour mesurer la capacité de traitement graphique du matériel. En termes simples, les GPU capables de traiter et de restituer plus d'images/graphiques par unité de temps (images par seconde) sont plus puissants.

Glmark - l'outil de référence

Sous Linux, il n'y a pas beaucoup d'outils pour comparer les GPU, et après avoir passé pas mal de temps sur google, je suis tombé sur ce petit outil appelé glmark. Il est développé par Linaro.

Glmark exécute une série de tests, rendant différents types de graphiques et d'animations 2D et 3D à l'écran, puis mesure les performances de sortie en termes de FPS (images par seconde). Il calcule ensuite la moyenne des images par seconde sur tous les tests pour calculer un score pour le GPU.

Pas très sûr, mais la meilleure supposition est que ce score est une mesure relative de la capacité de l'unité de traitement graphique de votre machine. Le comparer avec le score d'autres machines devrait donner une comparaison approximative de la puissance de traitement graphique.

J'ai exécuté glmark2 sur plusieurs machines, chacune avec une configuration GPU différente pour comprendre ce que la sortie glmark indiquait. Toutes les machines sont des ordinateurs de bureau, et voici une brève description de chacune

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

La première chose à faire est d'installer glmark. Sur Ubuntu/Linux Mint, il est disponible dans les référentiels par défaut.

$ sudo apt-get install glmark2

Test

Pour exécuter les tests, il vous suffit d'exécuter la commande glmark2 sans aucune option. Il rendrait de nombreux types d'animations différents les uns après les autres dans une fenêtre et imprimerait les mesures fps à côté du terminal. Assurez-vous de ne pas exécuter d'application gourmande en ressources processeur pendant cette période, sinon les résultats du test pourraient dévier.

À la fin des tests, glmark affichait un score. Un score plus élevé devrait indiquer un GPU plus puissant. Le score final n'est pas fixe et varie à chaque fois que vous exécutez le test. Mais cela reste dans une fourchette proche. Vous devez donc exécuter glmark plusieurs fois (je l'ai fait 3 fois) et prendre le score moyen.

Dans certains cas, une exécution de test particulière peut entraîner un score de test très élevé ou faible. J'ai simplement abandonné ces valeurs et classé à nouveau glmark.

Tous les tests ont été effectués sur un moniteur LCD Samsung avec une résolution [email protected].

L'heure des scores

Jetons maintenant un coup d'œil à la sortie et au score de glmark

M1 - Chipset graphique intégré Intel GMA X3500

Cette machine a le moins de puissance graphique et les tests glmark ne sont même pas en mesure de se terminer car le système plante quelque part entre les deux. Les animations 3D fonctionnent, mais avec du scintillement.

$ 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
=======================================================

Le score est d'environ 240, ce qui est assez bas. Sur cette machine particulière, Supertuxkart est lent et injouable, alors que 0AD se transforme simplement en fond d'écran :)

Notez que le moteur de rendu est MESA, ce qui indique que l'accélération 3D est émulée par logiciel et n'est pas disponible à partir du matériel. L'accélération matérielle n'est donc pas disponible.

M2 - Chipset graphique intégré Intel GMA X4500

Il s'agit de la carte mère Gigabyte avec unité graphique Intel GMA intégrée. Cette machine a une puissance graphique légèrement supérieure à celle de la machine précédente.

Les détails matériels rapportés par lspci sont

$ 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 est capable de terminer tous les tests sur cette machine et les résultats sont comme ça...

$ 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
=======================================================

Le score moyen de cette machine était d'environ 350. C'est comparativement mieux que notre machine précédente qui avait un GPU inférieur.

Cette machine peut jouer un peu au supertuxkart. Mais des jeux comme 0AD ne fonctionnent pas. Mais encore une fois, le rendu direct est effectué par MESA, donc l'accélération matérielle est absente.

M3 - Nvidia GeForce 210 avec nouveau pilote

Cette machine a la même carte mère Intel avec un GPU externe Nvidia GeForce 210 connecté via un slot PCI. C'est un chipset nvidia de marque Zotac et dispose de 1 Go de RAM dédiée et d'une vitesse d'horloge GPU/Core de 520 MHz

$ 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

Nous allons d'abord le tester avec les pilotes Nouveau par défaut et voir comment il fonctionne. Le prochain test serait effectué avec les pilotes propriétaires de 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
=======================================================

Le score moyen reste autour de 335. Le score indique de mauvaises performances graphiques malgré la présence d'un GPU Nvidia dédié. C'est à cause des pilotes Nouveau qui sont inefficaces et n'utilisent pas tout le potentiel des cartes nvidia.

Des jeux comme supertuxkart et 0AD ont très bien fonctionné.

Note that the score of this machine is lesser/equal to the previous machine. While testing games it was seen, that this machine had a better graphics performance. 

This is because this machine has a separate dedicated GPU which works independantly. Whereas in the previous machine the MESA libraries used the main CPU to do graphics work, which resulted in a competitive score, but would fail when real applications would use it.

M4 - Nvidia GeForce 210 avec pilote nvidia-331

Il s'agit de la même machine que ci-dessus et utilise des pilotes propriétaires Nvidia au lieu des pilotes Nouvea.

Les détails matériels tels que rapportés par lspci sont

$ 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

Sortie et score 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
=======================================================

Cette fois, le score est supérieur à 500 et cette machine a des performances graphiques très correctes pour de faibles exigences, comme jouer à des jeux pour enfants. Des jeux comme Supertuxkart et 0AD fonctionnent parfaitement sans aucun problème.

Le rendu GL est le pilote Nvidia, ce qui signifie que l'accélération 3D basée sur le matériel est disponible et fonctionne correctement.

Évaluez votre GPU

Pour comparer le GPU de votre système, exécutez la commande glmark et vérifiez la sortie et le score. Les performances doivent être optimales avec les pilotes propriétaires au lieu des pilotes gratuits.

Il n'y a pas de tableau de score en ligne à comparer, mais en concluant des tests ci-dessus, quelque chose de supérieur à 500 devrait être bon et indiquer une accélération matérielle utilisable à condition que GL_RENDERER soit un pilote non MESA.

Si le GL_RENDERER est MESA, le rendu 3D est effectué par logiciel et non par matériel, et les applications et jeux 3D auraient donc de très mauvaises performances.

Si vous ajoutez une nouvelle carte graphique à votre machine Linux, la première chose à faire serait d'obtenir le meilleur pilote pour cela. Nvidia fournit des pilotes Linux pour la plupart de ses cartes graphiques modernes qui fonctionnent très bien avec Linux.

Vous pouvez obtenir une liste de certains des GPU les plus performants pour Linux sur http://www.free3d.org/.

Résumé

Dans les tests ci-dessus, on peut voir qu'avec l'augmentation du score, le nombre de FPS dans chaque test individuel augmente progressivement. Ainsi, les GPU hautes performances sont capables de fournir un FPS plus élevé. Cependant ce FPS ne doit pas être confondu avec le taux de rafraichissement du moniteur qui est de 60 et y restera.

Le FPS décrit dans le test de référence est une mesure du nombre d'images que le GPU (ou l'ensemble du système) a pu traiter et générer par seconde.

Notez que le score glmark n'est pas un test concluant des performances graphiques. Comme on l'a vu au 3e test, les scores peuvent parfois être trompeurs. Par exemple, une machine avec un CPU élevé et aucune accélération matérielle peut obtenir le même score qu'une machine avec un CPU modéré et un GPU faible. Cela se produit parce que le rendu basé sur le logiciel via le CPU élevé est égal à la puissance de traitement de l'accélération matérielle du GPU faible fonctionnant seul. Cependant, il s'agit d'une limitation de l'outil de référence qui doit évoluer pour effectuer des tests et des analyses approfondis afin de donner une image plus précise.

Alors maintenant, lancez glmark sur votre machine et indiquez-nous votre score ainsi que la marque/le modèle du GPU, dans la zone de commentaire ci-dessous.

Quelques notes supplémentaires

Voici maintenant les scores de certaines cartes graphiques, rapportés par d'autres utilisateurs.

=======================================================
    OpenGL Information
    GL_VENDOR:     NVIDIA Corporation
    GL_RENDERER:   GeForce GTX 460/PCIe/SSE2
    GL_VERSION:    4.4.0 NVIDIA 331.38
=======================================================
                                  glmark2 Score: 4707
=======================================================

Ubuntu
  1. Améliorez les performances du système Linux avec noatime

  2. Comment manipuler une carte Ethernet sous Linux avec la commande ethtool

  3. Mauvaises performances 3D dans Ubuntu 12.04 ?

  4. Comment afficher les performances passées avec sar sous Linux

  5. RAID1 augmente-t-il les performances avec Linux mdadm ?

Commande de tri sous Linux avec des exemples

Commande IP Linux avec exemples

Analyser les performances du serveur Linux avec atop

Dépanner et surveiller les performances du système Linux avec nmon

Comment trouver quelle carte graphique avez-vous sous Linux ?

Comment installer Basemark GPU Benchmark sur Ubuntu 20.04 Linux