12 votes

Mise à l'échelle de PostgreSQL jusqu'à 64 cœurs ?

Dans ce Article de Computer World il précise que PostgreSQL peut évoluer jusqu'à une limite de 64 cœurs. Cela signifie-t-il pour un processeur multicœur de 64 cœurs ? Ou pour plusieurs processeurs avec moins de cœurs ?

La raison de ma question est que j'essaie de trouver combien de processeurs PostgreSQL peut utiliser, mais bien sûr, cela peut être limité par le type de processeur. Cependant, j'ai trouvé d'autres statistiques dans d'autres bases de données (i.e. Microsoft SQL Server aquí indiquant qu'il peut évoluer jusqu'à 320 processeurs logiques) et ils ne précisent pas leur nombre de cœurs. S'agit-il d'une statistique très vague ?

Toute réflexion serait très appréciée. Merci !

13voto

voretaq7 Points 78924

Postgres peut évoluer jusqu'à autant de processeurs que vous voulez installer et que votre système d'exploitation peut gérer efficacement. Vous pouvez installer Postgres sur une machine à 128 cœurs (ou même une machine avec 128 processeurs physiques) et il fonctionnera parfaitement. Il s'agit de mai même mieux que sur une machine à 64 cœurs si l'ordonnanceur du système d'exploitation peut gérer autant de cœurs.

Il a été démontré que Postgres échelle linéairement jusqu'à 64 cœurs (avec des réserves : Nous parlons de performances en lecture, dans une configuration spécifique (disque, RAM, OS, etc.) -- Robert Haas a publié un article sur son blog avec un joli graphique. que j'ai reproduit ci-dessous :

enter image description here

Qu'est-ce qui est important dans ce graphique ?

La relation est linéaire (ou presque) tant que les Nombre de clients est inférieure ou égale à la Nombre de cœurs puis commence ce qui semble être une courbe log-linéaire. diminuer en termes de performances, car vous avez plus de connexions clients que de cœurs sur lesquels faire tourner les backends Postgres, car les backends commencent à se battre pour le CPU (la moyenne de charge dépasse 1.0, etc...).

Bien qu'il n'ait été a démontré jusqu'à 64 cœurs, on peut généraliser en disant qu'on peut continuer à ajouter des cœurs (et des clients) et continuer à améliorer les performances, jusqu'à la limite d'un autre sous-système (disque, mémoire, réseau) où les processus n'ont plus de problèmes de contention du CPU mais attendent quelque chose d'autre.

( Haas a également publié un autre article dans lequel ils ont prouvé l'extensibilité linéaire à 32 cœurs. qui contient d'excellents documents de référence sur l'évolutivité en général - lecture de fond fortement recommandée !)

8voto

Chealion Points 762

Non, c'est une statistique très précise. Un "processeur logique" est un noyau. Et un cœur n'est que cela, peu importe comment il est réparti sur les processeurs physiques.

Et si vous avez affaire à une machine avec plus de cœurs que le nombre supporté, cela ne devrait pas être un problème avec PostgreSQL. Chaque connexion est intrinsèquement monofilière * Ainsi, quel que soit le nombre de cœurs dont vous disposez, c'est ce qui va limiter l'efficacité et l'efficience des connexions simultanées.

Il va sans dire que cela signifie également que vous devez miser sur des cœurs plus rapides plutôt que sur la quantité de cœurs, à moins que vous ne souhaitiez regrouper les choses selon une méthode plus compliquée.

* Mise à jour de 2017 : <a href="https://www.postgresql.org/docs/9.6/static/parallel-query.html" rel="nofollow noreferrer">Certaines requêtes (ou sous-requêtes) peuvent être exécutées en parallèle. </a>.

2voto

Tim B Points 186

D'autres ont précisé qu'un processeur logique fait généralement référence à un cœur de processeur, mais je tiens à commenter l'affirmation selon laquelle la manière dont les cœurs sont répartis entre les processeurs n'a pas d'importance.

Vous pouvez avoir des caches sur la matrice du processeur qui sont partagés entre les cœurs ou qui sont dédiés à un seul ou à des sous-groupes de cœurs. Par exemple, une configuration courante est un cache L1 dédié et un cache L2 partagé. Dans ce cas, l'évolutivité d'une seule unité centrale double cœur peut être différente de celle de deux unités centrales à cœur unique.

Ces effets d'évolutivité se poursuivent dans la mémoire principale, les machines NUMA présentant un comportement différent de celui des machines non-NUMA.

Je ne les signale que parce que le PO discute de questions d'évolutivité, dont les réponses sont généralement plus nuancées que "le programme X peut utiliser Y cœurs de processeur".

1voto

ewwhite Points 193555

Dans ce cas, il s'agit de processeurs multiples avec moins de cœurs... Une partie du discours est à l'épreuve du futur. D'autres sont du langage marketing.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X