Qual é o melhor tamanho de swap no Linux para um programa altamente segmentado?

1

Estou usando uma instância pequena do servidor do Amazon EC2 e, por padrão, ela permite 382 encadeamentos por processo. No entanto, desejo executar 10.000 threads em um único processo. Recentemente, aprendi que isso pode ser feito reduzindo o limite de pilha ou aumentando a memória virtual.

No melhor de meu conhecimento, a memória virtual pode ser aumentada aumentando a RAM ou o espaço de troca no Linux. Aumentar a RAM não é uma opção. Eu sei como aumentar o espaço de troca, mas não tenho certeza qual é o tamanho ideal que devo usar.

O que não estou claro é como funciona o espaço de troca e a RAM quando executo threads? Existe algum limite específico após o qual a memória de troca torna os threads mais lentos? Existe uma quantidade ideal de espaço de troca que devo usar?:

    
por dragosrsupercool 10.02.2012 / 16:15

1 resposta

3

Em circunstâncias normais, os administradores do sistema fazem o SWAP com 1x ou 2x de memória. No seu caso, não sei se isso será aplicável ou até suficiente.

Sem ter detalhes do que você está executando, é muito difícil saber qual seria o site apropriado do SWAP, mas em geral o que quer que você execute se for trocado para disco, haverá degradação do desempenho que pode aumentar o tempo de execução por ordens de magnitude. Então, antes de você ir colocando 10k tópicos que serão trocados como um louco pode ser que você deva olhar a configuração ou o design do seu aplicativo e fazer outra coisa.

Então, analise sua aplicação e determine o número de threads simultâneos ativos e pode ser que você não precise rodar tantos.

ABORDAGEM DA SOLUÇÃO, CONFORME SOLICITADO

Quando você estabelece uma conexão com um site ou servidor da Web, mantém uma lista de solicitações enviadas a essa conexão específica, pois as respostas serão recebidas em ordem. Depois que um encadeamento envia uma solicitação para um servidor, você espera em select() loop para que os dados se tornem disponíveis. Quando isso acontece, você recebe os dados e envia as informações da solicitação e os dados recebidos para outro segmento para processamento.

    
por 10.02.2012 / 16:39