Desempenho de Java RMI

Sistemas de Objetos Distribuídos - Primeiro Semestre de 2003

Descrição Geral

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).

Metas

Considere quatro casos:

Para cada um dos casos abaixo, meça os seguintes tempos:
  1. tempo para chamada de uma operação sem argumentos e sem valor de retorno (void)
  2. tempo para chamada de uma operação com um argumento long e valor de retorno long
  3. tempo para chamada de uma operação com oito argumentos long e valor de retorno long
  4. tempo para chamada de uma operação com um argumento java.lang.String e valor de retorno java.lang.String
  5. tempo para chamada de uma operação com oito argumentos java.lang.String e valor de retorno java.lang.String
  6. tempo para chamada de uma operação com um argumento java.util.Date e valor de retorno java.util.Date
  7. tempo para chamada de uma operação com oito argumentos java.util.Date e valor de retorno java.util.Date
  8. 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.
  9. tempo para chamada de uma operação com oito argumentos Foo e valor de retorno Foo

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:

  1. código-fonte;
  2. documentação sucinta porém completa explicando como compilar o código e executar os experimentos;
  3. 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.


Valid CSS! Valid XHTML 1.0! Last modified: Thu May 15 07:45:22 EST 2003
Francisco Reverbel
reverbel at ime.usp.br