n JRE

4 respostas
J

Pessoal,

alguém já viu algum material(benchmark) relativo a desempenho de distribuição sobre multiplas jres ?
ex1: comparar a performance de uma aplicação que abra 2 threads e execute algo pesado para cada thread X execução do conteudo dessas duas threads pesadas(extrair o código) em duas jres, cada uma com um processo java e uma thread rodando.

ex2: comparar desempenho de duas aplicações web rodando em servlet containers diferentes compartilhando a mesma jre E utilizando jres distintas…

Quando jre, falo em duas instalações da JRE mesmo.

Deixando de lado o hardware destes pseudo exemplos, a dúvida é relatvia ao gerencimento de recursos da jvm mesmo. se ganha perfomance ao não se compartilhar a jre em alguns casos ? depende ? Enfim, esta é minha dúvida.

Abraço

4 Respostas

E

A resposta é sempre “depende do seu problema”.

Dividir o problema em vários processos gasta mais memória (fato) mas se você adequar a quantidade de memória disponível para as aplicações que estão rodando em separado pode diminuir a porcentagem do tempo gasto em garbage collection, por exemplo.

Isso também depende do sistema operacional usado para rodar seus programas. O Unix/Linux/MacOSX compartilha a memória gasta pelos binários dos executáveis, o que não é bem o caso do Windows.

adolfojunior

Bom, se entendi o problema seria:

(2 processos [JRE] rodando 2 threads cada) x (1 processo [JRE] rodando 4 threads).

Nessa caso, imagino que o Hardware/SO tenha uma influência significativa.
Pois o paralelismo terá alteração de desempenho quando executado em maquinas variando os núcleos.

O comportamento do processo no gerenciamento de recursos entre as threads vai acarretar em gargalo quando 2 processos executarem no mesmo núcleo.
Se cada JRE executar seu processo em núcleos separados, é de se imaginar que vão ter um desempenho semelhante.
Já quando executado 2 JRE em um mesmo processo, vai acarretar em 2 gerencias de recursos:
1 - Pipeline do processador na execução dos 2 processos.
2 - Pipeline do processo na execução das threads.

Imagino que o melhor cenário seria:

2 processos (JRE) executando 2 threads cada, com cada processo rodando em núcleos distintos.

J

Olá entanglement,

valeu pela resposta.

Abraço

J

Olá adolfojunior ,

valeu pela resposta.

Abraço

Criado 16 de abril de 2013
Ultima resposta 16 de abr. de 2013
Respostas 4
Participantes 3