Neste artigo do Computer World , especifica que o PostgreSQL pode escalar até um limite de núcleo de 64. Isso significa para um processador multinúcleo de 64 núcleos? Ou vários processadores com menos núcleos?
A razão pela qual pergunto é porque estou tentando descobrir quantos processadores o PostgreSQL pode escalar, mas é claro que isso pode estar limitado ao tipo de processador. No entanto, tenho encontrado outras estatísticas em outros bancos de dados (por exemplo, o Microsoft SQL Server aqui afirmando que pode escalar até 320 processadores lógicos) e eles não especificam seu número de núcleos. Esta é uma estatística muito vaga?
Qualquer pensamento seria muito apreciado. Obrigado!
Respostas:
Não, é uma estatística muito precisa. Um "processador lógico" é um núcleo. E um núcleo é exatamente isso, não importa como eles estão espalhados por processadores físicos.
E se você estiver lidando com uma máquina com mais núcleos do que o número suportado, isso não deve ser um problema no PostgreSQL. Cada conexão é inerentemente de thread único *, portanto, qualquer número de núcleos que você tiver é o que limitará a eficiência e a eficácia das conexões simultâneas.
Escusado será dizer que isso também significa que você deve colocar seu dinheiro em núcleos mais rápidos do que a quantidade de núcleos, a menos que queira agrupar as coisas de um método mais complicado.
* Atualização de 2017: algumas consultas (ou subconsultas) podem ser executadas em paralelo .
fonte
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.
<- Eu só concordo com esta afirmação se o número de núcleos for maior que o número de clientes simultâneos e o número de clientes simultâneos provavelmente não aumentará. É muito importante para o desempenho de ter um núcleo disponível para cada backend Postgres ...O Postgres pode escalar até quantos processadores você deseja instalar, e seu sistema operacional pode gerenciar / gerenciar com eficiência. Você pode instalar o Postgres em uma máquina com 128 núcleos (ou mesmo uma máquina com 128 processadores físicos) e funcionará bem. Ele pode até funcionar melhor do que em uma máquina de 64 core se o programador OS pode lidar com que muitos núcleos.
O Postgres mostrou escalar linearmente até 64 núcleos (com ressalvas: estamos falando sobre desempenho de leitura, em uma configuração específica (disco, RAM, SO, etc.) - Robert Haas tem um artigo de blog com um bom gráfico que Eu reproduzi abaixo:
O que é importante sobre este gráfico?
O relacionamento é linear (ou quase), desde que o Número de clientes seja menor ou igual ao Número de núcleos e, em seguida, começa o que parece ser aproximadamente uma diminuição log-linear no desempenho, pois você tem mais conexões de clientes do que você faça núcleos para rodar back-end do Postgres porque os back-end começam a lutar pela CPU (a média de carga ultrapassa 1,0, etc ...).
Embora tenha sido demonstrado apenas para até 64 núcleos, você pode generalizar que pode continuar adicionando núcleos (e clientes) e melhorando o desempenho, até o limite de outro subsistema (disco, memória, rede) onde os processos não são mais tendo problemas de contenção de CPU, mas está esperando outra coisa.
(A Haas também tem outro artigo em que eles provaram escalabilidade linear para 32 núcleos, o que tem um ótimo material de referência sobre escalabilidade em geral - leitura em segundo plano altamente recomendada!)
fonte
Outros esclareceram que um processador lógico geralmente se refere a um núcleo de CPU, mas eu quero comentar sobre a afirmação de que não importa como os núcleos estão espalhados pelas CPUs.
Você pode ter caches na matriz da CPU compartilhados entre núcleos ou dedicados a um ou subgrupos de núcleos. Por exemplo, uma configuração comum é o cache L1 dedicado e o cache L2 compartilhado. Nesse caso, a escalabilidade de uma única CPU dual core pode diferir de duas CPUs single core.
Esses efeitos de escalabilidade continuam na memória principal, com máquinas NUMA exibindo um comportamento diferente do que não é NUMA.
Aponto isso apenas porque o OP está discutindo questões de escalabilidade, cujas respostas geralmente são mais sutis do que "o programa X pode usar os núcleos Y da CPU".
fonte
Nesse caso, eles significam vários processadores com menos núcleos ... Parte da conversa é preparada para o futuro. Alguns falam em marketing.
fonte