PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 17/03/2020 18:16:41

ced
Membre

Comparaison serveur physique / serveur virtuel

Bonjour,

Je mène actuellement une série de tests visant à comparer le plus objectivement possible les différences de performances de PostgreSQL entre un serveur physique et un serveur virtuel dimensionné de manière identique (même nombre de CPU , même quantité de RAM). L'objectif est d'évaluer s'il y a des écarts forts entre les deux types de serveurs (comme ce que certains utilisateurs le pressentent) ou pas.
J'ai installé PostgreSQL v11 sur les deux machines et je les ai paramétrées de la même façon (paramètres identiques du fichier postgresql.conf).
J'ai ensuite fait tourner plusieurs benchmarks avec pgbench, ou plus précisément avec pgbench-tools.
J'ai commencé par une série de tests avec des facteurs d'échelle de 1, 10, 100 et 1000 (la base est celle initialisée par défaut dans pgbench). En termes de résultats (TPS et latence), je n'observe aucune différence entre les deux serveurs. Le serveur virtuel serait même un peu plus performant...
J'ai ensuite relancé les tests avec les facteurs 100, 1000 et 10000, histoire de travailler avec une taille de base de données qui ne tienne pas en mémoire (32 GB). Là encore, les résultats des tests (TPS et latence) sont très proches, toutefois le serveur virtuel a mis 2h de plus que le serveur physique pour boucler les tests... Et quand j'analyse les logs avec PgBadger, je vois que les requêtes de type COPY et VACUUM sont plus lentes sur le serveur virtuel.

Mon interprétation est que ce qui ralentit le serveur virtuel, ce sont les écritures de données sur disque. En effet, quand je teste les temps d'écriture / lecture avec l'outil dd, les résultats sont meilleurs sur le serveur physique (180 MB/s vs 120 MB/s). Est-ce que ça vous semble être la bonne analyse ?
Je pense que pgbench ne fait qu'évaluer des performances en mémoire pure (vue que toutes les opérations sont effectuées en mémoire), sans prendre en compte des opérations d'écriture sur les disques (comme les COPY et les VACUUM). C'est bien ça ?

Merci d'avance pour votre aide dans ma compréhension des résultats.

Cédric

Hors ligne

#2 17/03/2020 19:03:40

rjuju
Administrateur

Re : Comparaison serveur physique / serveur virtuel

À moins de créer des tables temporaires ou non journalisées, tout écriture finira sur disque deux fois: une fois dans les WAL et une fois dans les fichiers de données, généralement lors du checkpoint.  Il faut donc prendre en compte cela dans les tests afin de pouvoir avoir quelquechose de reproductible.  Il faut donc au minimum faire tourner le test suffisamment longtemps pour que de nombreux checkpoints s'effectue et avoir un résultat stable.


Concernant vos résultats, difficile de se prononcer sans plus de détails.  Comparez-vous une machine physique avec disques locaux contre une machine virtuelle avec disques sur un SAN par exemple, y a-t-il de l'overcommit, etc.

Hors ligne

#3 17/03/2020 19:09:15

ced
Membre

Re : Comparaison serveur physique / serveur virtuel

Oui, la machine physique a des disques locaux et la machine virtuelle des disques sur un SAN.
Pour l'overcommit, voici les paramètres appliqués :
vm.swappiness = 1
vm.overcommit_memory = 2
vm.overcommit_ratio = 99

Hors ligne

#4 17/03/2020 20:53:49

rjuju
Administrateur

Re : Comparaison serveur physique / serveur virtuel

ced a écrit :

Oui, la machine physique a des disques locaux et la machine virtuelle des disques sur un SAN.

Pas la peine d'aller plus loin, vous ne pouvez pas comparer ces deux environnements.


Pour l'overcommit, voici les paramètres appliqués :
vm.swappiness = 1
vm.overcommit_memory = 2
vm.overcommit_ratio = 99


Je voulais parler d'overcommit des ressources sur l'hypverviseur.

Hors ligne

Pied de page des forums