Pode-se verificar os núcleos disponíveis em tempo de execução no postgres?

2

TL; DR: Existe alguma maneira de consultar uma instância postgres de quantos núcleos ela tem disponível para processamento?

O Postgres tem uma boa reputação no que diz respeito a paralelizar várias consultas de maneira eficiente nos núcleos disponíveis.

Estou escrevendo um aplicativo com um pipeline de transformação de dados intensivo da CPU para ser executado por postgres em um grande número de coleções de dados de origem. Cada pipeline será o trabalho de uma única conexão e espero explorar o paralelismo estabelecendo várias conexões e executando o trabalho (que ocorre em tabelas temporárias com escopo dentro de conexões únicas).

Gostaria de ajustar quantas conexões simultâneas são mantidas com o banco de dados. Minha inclinação é usar um multiplicador sobre os núcleos disponíveis, algo como 1.5x, para não sobrecarregar o DBMS com Conexões em espera, mas ainda garantir que ele sempre tenha trabalho a fazer.

No entanto, o DBMS será uma instância do AWS RDS selecionada pelos usuários. Não sei de antemão quantos núcleos estarão disponíveis. Existe alguma maneira de consultar o banco de dados para descobrir?

Muito obrigado.

    
por Steve Waldman 24.04.2016 / 02:26

1 resposta

2

create table cores(num_cores integer);
copy cores(num_cores) from program ‘grep processor /proc/cpuinfo|wc -l’;
select * from cores;

Em psql como postgres (não testado na AWS)

    
por 12.03.2018 / 12:58

Tags