En este artículo de Computer World , especifica que PostgreSQL puede escalar hasta un límite de núcleo de 64. ¿Esto significa para un procesador multinúcleo de 64 núcleos? ¿O múltiples procesadores con menos núcleos?
La razón por la que pregunto es porque estoy tratando de encontrar la cantidad de procesadores que PostgreSQL puede escalar, pero por supuesto eso puede estar limitado al tipo de procesador. Sin embargo, he estado buscando otras estadísticas en otras bases de datos (es decir, Microsoft SQL Server aquí indicando que puede escalar hasta 320 procesadores lógicos) y no especifican su número de núcleos. ¿Es esta una estadística muy vaga?
Cualquier pensamiento sería muy apreciado. ¡Gracias!
Respuestas:
No, es una estadística muy precisa. Un "procesador lógico" es un núcleo. Y un núcleo es solo eso, no importa cómo se extiendan sobre los procesadores físicos.
Y si se trata de una máquina con más núcleos que el número admitido, esto no debería ser un problema con PostgreSQL. Cada conexión es inherentemente de un solo subproceso *, por lo que cualquier número de núcleos que tenga es lo que limitará la eficiencia y la eficacia de las conexiones concurrentes.
No hace falta decir que esto también significa que debe poner su dinero en núcleos más rápidos que la cantidad de núcleos a menos que desee agrupar las cosas en un método más complicado.
* Actualización 2017: algunas consultas (o subconsultas) pueden ejecutarse en paralelo .
fuente
Needless to say this also means you should put your money in faster cores than quantity of cores unless you want to cluster things in a more complicated method.
<- Solo estoy de acuerdo con esta afirmación si el número de núcleos es mayor que el número de clientes concurrentes, y es poco probable que aumente el número de clientes concurrentes. Es bastante importante para el rendimiento tener un núcleo disponible para cada backend de Postgres ...Postgres puede escalar hasta tantos procesadores como desee instalar, y su sistema operativo puede manejar / administrar de manera efectiva. Puede instalar Postgres en una máquina de 128 núcleos (o incluso en una máquina con 128 procesadores físicos) y funcionará bien. Incluso puede funcionar mejor que en una máquina de 64 núcleos si el programador del sistema operativo puede manejar tantos núcleos.
Se ha demostrado que Postgres escala linealmente hasta 64 núcleos (con advertencias: estamos hablando del rendimiento de lectura, en una configuración específica (disco, RAM, sistema operativo, etc.) - Robert Haas tiene un artículo de blog con un bonito gráfico que He reproducido a continuación:
¿Qué tiene de importante este gráfico?
La relación es lineal (o casi) siempre que el Número de clientes sea menor o igual que el Número de núcleos , y luego comienza lo que parece ser aproximadamente una disminución log-lineal en el rendimiento, ya que tiene más conexiones de clientes que usted hacer núcleos para ejecutar los backends de Postgres porque los backends comienzan a pelear por la CPU (el promedio de carga supera 1.0, etc.).
Si bien solo se ha demostrado para hasta 64 núcleos, puede generalizar que puede seguir agregando núcleos (y clientes) y seguir mejorando el rendimiento, hasta el límite de algún otro subsistema (disco, memoria, red) donde los procesos ya no están teniendo problemas de contención de CPU pero en cambio están esperando algo más.
( Haas también tiene otro artículo en el que demostraron una escalabilidad lineal a 32 núcleos que tiene un excelente material de referencia sobre la escalabilidad en general: ¡lectura de fondo muy recomendable!)
fuente
Otros han aclarado que un procesador lógico generalmente se refiere a un núcleo de CPU, pero quiero comentar sobre la afirmación de que no importa cómo se distribuyen los núcleos sobre las CPU.
Puede tener cachés en la matriz de CPU que se comparten entre núcleos o que están dedicados a núcleos individuales o subgrupos. Por ejemplo, una configuración común es la caché L1 dedicada y la caché L2 compartida. En este caso, la escalabilidad de una sola CPU de doble núcleo puede diferir de dos CPU de un solo núcleo.
Estos efectos de escalabilidad continúan en la memoria principal, con máquinas NUMA que exhiben un comportamiento diferente que las que no son NUMA.
Lo señalo solo porque el OP está discutiendo cuestiones de escalabilidad, cuyas respuestas son generalmente más matizadas que "el programa X puede usar núcleos Y de CPU".
fuente
En este caso, se refieren a múltiples procesadores con menos núcleos ... Algunas de las charlas son a prueba de futuro. Algunos hablan de marketing.
fuente