Desempenho de Java RMI
Sistemas de Objetos Distribuídos - Primeiro Semestre de 2003
Seu objetivo é comparar o desempenho de RMI sobre JRMP (a implementação
original de Java RMI) com o desempenho de RMI sobre IIOP. Para isso,
você escreverá um servidor RMI e um cliente RMI simples, com versões
para JRMP e para IIOP. As versões JRMP e IIOP devem ser praticamente
idênticas, sendo admissíveis apenas as diferenças requeridas pelo
uso de diferentes protocolos (como a troca de
java.rmi.server.UnicastRemoteObject
por
javax.rmi.PortableRemoteObject
).
Considere quatro casos:
- RMI sobre JRMP, cliente e servidor na mesma máquina
- RMI sobre IIOP, cliente e servidor na mesma máquina
- RMI sobre JRMP, cliente e servidor em máquinas diferentes
- RMI sobre IIOP, cliente e servidor em máquinas diferentes
Para cada um dos casos abaixo, meça os seguintes tempos:
- tempo para chamada de uma operação sem argumentos e sem valor de
retorno (
void
)
- tempo para chamada de uma operação com um argumento
long
e valor de retorno long
- tempo para chamada de uma operação com oito argumentos
long
e valor de retorno long
- tempo para chamada de uma operação com um argumento
java.lang.String
e valor de retorno
java.lang.String
- A string recebida no argumento e a string devolvida pela
operação têm o mesmo comprimento.
- Faça medidas para os seguintos comprimentos de string:
1, 2, 4, 8, 16, 32, 64, 128, 256, 512 e 1024.
- tempo para chamada de uma operação com oito argumentos
java.lang.String
e valor de retorno
java.lang.String
- Aqui basta uma medida só, com strings de comprimento 16 nos
argumentos e no valor de retorno.
- tempo para chamada de uma operação com um argumento
java.util.Date
e valor de retorno
java.util.Date
- tempo para chamada de uma operação com oito argumentos
java.util.Date
e valor de retorno
java.util.Date
- tempo para chamada de uma operação com um argumento
Foo
e valor de retorno Foo
,
onde Foo
é uma classe serializável que
tem um campo long e um campo java.lang.String
.
- A string no campo do argumento e a string no campo do valor de
retorno têm o mesmo comprimento.
- Faça medidas para os seguintos comprimentos de string:
1, 2, 4, 8, 16, 32, 64, 128, 256, 512 e 1024.
- tempo para chamada de uma operação com oito argumentos
Foo
e valor de retorno Foo
- Aqui basta uma medida só, com
Foo
s que contendo
strings de comprimento 16.
Repita cada um dos experimentos entre 5 e 10 vezes. O resultado que você
apresentará para cada experimento será a média aritmética dos valores
obtidos em cada repeticão juntamente com o desvio padrão. Opcionalmente,
você pode descartar os valores extremos ou comparar os resultados obtidos
descartando-se e não descartando-se os valores extremos.
Os resultados dos experimentos 1-3, 5-7 e 9 devem ser mostrados em um
gráfico de barras elegantemente formatado com indicação do desvio padrão
através de barras verticais. Algo similar a este
exemplo.
Os resultados dos experimentos 4 e 8 devem ser mostrados em um
único gráfico de linhas elegantemente formatado com
indicação do desvio padrão através de barras verticais. Algo similar a este
exemplo.
Cada grupo deverá entregar um arquivo compactado contendo:
- código-fonte;
- documentação sucinta porém completa explicando como compilar o código
e executar os experimentos;
- um relatório indicando a plataforma de hardware e a versão de JDK
utilizada, descrevendo os experimentos realizados, mostrando os
resultados obtidos e analisando sucintamente os dados coletados.
Last modified: Thu May 15 07:45:22 EST 2003
Francisco Reverbel
reverbel at ime.usp.br