Traqueur, CPU

Téléchargement du traqueur pour PostgreSQL 9.6, 10, 11, 12, 13 et 14
Téléchargement du traqueur pour PostgreSQL 9.5
Téléchargement du traqueur pour PostgreSQL 9.4
Téléchargement du traqueur pour PostgreSQL 9.3
Journal des changements
Signalement de bugs via le forum
Licence identique à celle de PostgreSQL, open source type BSD
Dossier des versions

      Dans l’article d’introduction sur le traqueur, j’indique qu’avoir un serveur faiblement chargé au niveau CPU (processeur) n’est pas nécessairement un bon signe pour les performances générales. Une faible charge CPU globale ne signifie même pas qu’un serveur a des performances satisfaisantes à ce niveau.
      Imaginez, si c’était possible, que vous puissiez monter en 2019 un serveur avec 1000 coeurs de la puissance d'un AMD ® 386DX @ 40 Mhz, un CPU sorti en 1991 considéré à l’époque comme une référence. Tout ne peut pas être parallélisé et, de toute façon, chaque coeur serait individuellement si lent que les performances seraient exécrables avec une charge prévue pour un serveur des années 2010. Avec un nombre restreint d’utilisateurs, cette machine aurait pourtant en permanence un taux de CPU "idle" assez impressionnant.
      Bien sûr, cette situation est caricaturale. Mais il est malgré tout intéressant de savoir si la performance d’exécution sur un thread est acceptable et correspond à la puissance théorique.
      Le traqueur dispose pour cela de tests basiques accessible via option -t. Avec l'argument 1, un grand nombre premier est calculé. Avec les arguments 2 et 3, des décimales de pi. Ces tests sont basés sur du code C de Fabrice Bellard. Le score obtenu est toujours une durée, il doit donc être le plus faible possible. Démonstration :

./traqueur.sh -t 2 traqueur 4.02.00 - https://pgphil.ovh - outil de diagnostic performance pour PostgreSQL 9.4 => 13 INFORMATION, test CPU ... INFORMATION, score CPU (s) ... 137

Quelques résultats obtenus

VirtualisationOSType de coeurTest 1, temps en sTest 2, temps en sTest 3, temps en s
LPARDebian 10.1IBM ® PowerPC_POWER9 @ 3.40 GHz63216235
N/AAndroid 10.0Qualcomm ® Snapdragon 855 plus @ 2.96 GHz68165159
N/AUbuntu 18.04 LTSIntel ® Core CPU I7- 9750H @ 2.60 GHz88114160
VmwareDebian 10.6AMD ™ EPYC 7702 64-Core Processor @ 2.00 GHz89153169
N/AUbuntu 18.04 LTSIntel ® Core CPU I7- 7700HQ @ 2.80 GHz104137186
VmwareDebian 10.7Intel ® Xeon® Platinum 8268 @ 2.90 GHz118168206
VmwareDebian 10.3Intel ® Xeon® Gold 6142 @ 2.60 GHz121175215
VmwareDebian 10.7Intel ® Xeon® Gold 6240 @ 2.60 GHz124177218
VmwareDebian 10.6Intel ® Xeon® Gold 6132 @ 2.60 GHz125177218
VmwareDebian 10.6Intel ® Xeon® Gold 6126 @ 2.60 GHz127179220
VmwareDebian 10.4Intel ® Xeon® Gold 6148 @ 2.40 GHz132189235
VmwareDebian 10.8Intel ® Xeon® Gold 6254 @ 3.10 GHz134191236
VmwareDebian 10.0Intel ® Xeon® CPU E5-4627 v4 @ 2.60 GHz136150225
N/AAndroid 9.0Qualcomm ® Snapdragon 835 @ 2.45 GHz147219229
LPARAIX 6.1 TL9 SP7IBM ® PowerPC_POWER8 @ 3.40 GHz147534493
N/ADebian 10.8Intel ® Celeron® CPU J3455 @ 1.50 GHz148251285
VmwareDebian 10.3Intel ® Xeon® CPU E5-2697 v4 @ 2.30 GHz157172256
VmwareDebian 10.7Intel ® Xeon® CPU E5-2680 v4 @ 2.40 GHz160173254
VmwareRHEL 7.4Intel ® Xeon® CPU E5-2650 v3 @ 2.30 GHz162
N/AAndroid 9.0HiSilicon ® Kirin 970 @ 2.36 GHz169235231
KVM Debian 10.1Intel ® Core Processor (Haswell, no TSX) -- CPU VPS 2018 ovh178194293
KVM Debian 9.5Intel ® Core Processor (Haswell, no TSX) -- CPU VPS 2016 ovh179192281
VirtualboxDebian 9.0Intel ® Core CPU I7-4710HQ @ 2.50 GHz180
VmwareRHEL 7.2Intel ® Xeon® CPU X5670 @ 2.93 GHz184
N/AAndroid 9.0Qualcomm ® Snapdragon 632 @ 1.8 GHz196297311
VmwareRHEL 7.4Intel ® Xeon® CPU E5-4640 @ 2.40 GHz204209303
VmwareDebian 8.7Intel ® Xeon® CPU E7-4860 @ 2.27 GHz205
VmwareDebian 10.3Intel ® Xeon® CPU E5-2620 0 @ 2.00 GHz225226340
VmwareDebian 8.7Intel ® Xeon® CPU E7-4850 @ 2.00 GHz239232336
VmwareDebian 10.0Intel ® Xeon® CPU E5506 @ 2.13 GHz259251363
LPARAIX 7.1 TL4 SP2IBM ® PowerPC_POWER7+ @ 3.70 GHz264
Xen Debian 9.5Intel ® Xeon ® CPU E5-2603 v2 @ 1.80 GHz265277397
VirtualboxUbuntu 16.04 LTSAMD ™ Phenom II X6 1090T @ 3.20 GHz303139237
LPARAIX 7.1 TL4 SP2IBM ® PowerPC_POWER7 @ 3.00 GHz349
N/AAndroid 6.0.1Qualcomm ® Snapdragon 615 @ 1.5 GHz383400494
N/AAIX 6.1 TL8 SP2IBM ® PowerPC_POWER6 @ 4.70 GHz388559642
Hyper-VRHEL 7.2Intel ® Xeon® CPU E5-2640 @ 2.50 GHz395
N/AAIX 6.1 TL9 SP4IBM ® PowerPC_POWER6 @ 4.20 GHz432632721
LPARAIX 6.1 TL8 SP2IBM ® PowerPC_POWER7 @ 2.46 GHz517
N/AUbuntu 18.04 LTSIntel ® Pentium ® M processor 1400MHz702246786
LPARAIX 6.1 TL8IBM ® PowerPC_POWER5 @ 1.65 GHz77010441156

      Les résultats obtenus n'ont pas grande valeur dans l'absolu. Ils doivent être utilisés pour évaluer le même CPU à différentes périodes.
      Le serveur soupçonné de lenteur et présentant effectivement une anomalie au regard de sa configuration est ici la machine virtuelle Hyper-V/RHEL 7.2. Ses coeurs Xeon E5-2640 devraient lui donner un score autour des 200s au 1er test alors qu’elle obtient en fait 395s. L’information a été remontée à l’équipe concernée et une intervention a été réalisée. Je ne connais pas les détails mais il semble qu’un simple reboot de l’hôte et donc des machines virtuelles ait permis de retrouver un score conforme à la puissance théorique ainsi que des performances ressenties acceptables pour les utilisateurs.
      Autre particularité : le serveur obtenant une note de 517 au 1er test ne disposait que d'une fraction de la puissance d'un coeur, ce qui explique sa note.

Conclusion

      Comme avec la latence I/O, il n’y a pas de "bonne" valeur dans l’absolu. La "bonne" valeur pour chaque élément est celle qui permet à cet élément de ne pas être un goulet d’étranglement et d’obtenir des performances globalement acceptables. Inutile de rajouter du CPU alors que le problème est au niveau des I/O par exemple.

Mise à jour : 30/04/2021