Criar um único processador em servidor XEON.

Iniciado por rfl.souza, 10 de Janeiro de 2011, 15:29

tópico anterior - próximo tópico

rfl.souza

Boa tarde,

Pessoal tenho um programa que trabalha em single thread e não consigo deixar ele rodando com várias thread!

Hoje em dia tem muitos servidores que possuem varios nucleos, no meu caso tenho um servidor com 8 nucleos. Porém o meu programa as vezes ocupa 100% de um único núcleo deixando os outros 7 processadores livres.

Ou seja, tenho 8 nucleos com 2.5 Ghz. Gostaria de fazer 2 nucleos de 10 GHz ou no pior cenário 1 de 20Ghz.

Alguém tem alguma ideia ou já viu algo parecido?

Obrigado.

zekkerj

Olá rfl.souza,

A extração de paralelismo deve ser feita no algoritmo, não no programa. Se você quer que sua aplicação se torne multi-thread, deve reescrever o código dela, separando as tarefas em vários threads. Não há como pegar um programa que foi escrito para rodar em single-thread e forçá-lo a trabalhar em multi-thread.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

rfl.souza

Entendo perfeitamente que deve ser feito no codigo, porém não existe essa possibilidade de deixar a rotina em thread separada. Hoje o programa já existe 5 thread porém existe uma rotina que processa muito. é uma aplicação para atendimento em de chamadas em real-time e deve ter seu tratamento na hora.

Eu queria saber se existe alguma na forma de hardware mesmo! com sistemas AIX eu consigo fazer esse tipo de configuração.

Porém tenho muitos servidores XEON e gostaria de fazer algo parecido no AIX.

Obrigado pela resposta zekkerj... Se tiver alguma outra ideia sera bem vinda...




zekkerj

O que vc pode fazer é copiar o modelo de processos de atendimento de serviço, onde um processo principal liga-se ("bind") à conexão ("socket"), e a cada novo pedido de conexão, abre um novo processo ("fork"), deixando o processamento da nova requisição para o novo processo.

O que vc teria que fazer então seria adequar as primitivas usadas para o caso de threads, em vez de processos.

Mas ainda assim, precisaria reescrever o código.

Por curiosidade, de quantas requisições por segundo estamos falando? E quanto tempo há pra processar cada requisição?
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

rfl.souza

Essa aplicação é uma aplicação de CTI ( computer Telephone Integration) é de um fabricante dos EUA não tenho acesso aos códigos fontes, mas conheco as caracteristicas de como foi desenvolvido.

Essa aplicação conversa com o PABX e recebe dados de chamadas por segundo. Essa informações são trocadas através de socket porém em uma única porta! Após estabelecida ele mantem a troca de mensagem e não recebe novas conexões.

As trocas de mensagens de um lado para o outro deve esta em torno de 1000 mensagens por segundo. o Problema que são chamadas telefonicas e vc tem que conseguir a informação na hora pois o telefone não vai esperar! :)

Uma das sugestões do fabricante é de distribuir em mais PABX e outros servidores. Porém eu venho buscando uma outra solução através do hardware e SO.



Tota

Ola

Vou dar meu pitaco:

1) Ligar para a Intel ( sim existe suporte ) e perguntar

2) Um graaande chute: e se virtualizar? Se na virtualização puder ser acertado o numero de nucleos ou se o pacote de virtualização apenas suportar uns dois ou tres nucleos apenas pode rolar.

Citação de: rfl.souza online 11 de Janeiro de 2011, 12:27
...com sistemas AIX eu consigo fazer esse tipo de configuração...

Xeon é um tipo de processador, AIX é um Unix da IBM, crie uma maquina virtual ( assumindo que os Xeon tenham algum outro sistema operacional) e instale o AIX nele, faça o procedimento que voce ja domina e pronto!

Veja as rotinas e dependencias necessarias para fazer no AIX e porte para o kernel do linux compilando o mesmo. Já que são " primos" Unix e Linux.

[]'s