소켓 및 RMI 기반 자바 메시지 전달 시스템의 구현 및 성능평가

Implementation and Performance Evaluation of Socket and RMI based Java Message Passing Systems

  • 방승준 (경기대학교 대학원 전자계산학과) ;
  • 안진호 (경기대학교 정보과학부 컴퓨터학부)
  • 발행 : 2007.10.31

초록

본 논문은 자바 언어로 완성된 MPI(Message Passing Interface) 스펙인 MPJ(Message Passing in Java) 스펙을 준수하여 병렬 컴퓨팅 환경에서 메시지 통신 인터페이스를 제공하는 JMPI(Java Message Passing Interface) 라이브러리를 설계하고 구현하였다. 이 라이브러리는 간단하면서도 매우 편리한 GUI(Graphical User Interface) 도구를 제공하여, 사용자가 손쉽게 병렬 컴퓨팅 환경을 구성할 수 있다. 또한, 본 논문에서는 두 가지 전형적인 분산 시스템 통신 메커니즘인 소켓과 RMI(Remote Method Invocation) 방식을 이용하여 두 가지 버전의 시스템을 구현하였고, 기존의 JPVM 시스템과의 성능을 벤치마크 애플리케이션들을 통하여 컴퓨터 대수의 증가에 따른 처리 속도를 비교해 보았다. 실험 결과로는 본 논문에서 제시한 JMPI 시스템이 JPVM시스템보다 다양한 측면에서 높은 성능을 발휘한다는 것과 컴퓨터의 가장 효율적인 처리 속도는 애플리케이션에 따라 컴퓨터의 수를 증가시킨다고 해서 일정하게 처리속도가 증가하는 것이 아니라 네트워크의 트래픽을 고려하여 컴퓨터의 수를 증가시켰을 때 얻을 수 있다는 것을 보여준다. 마지막으로 컴퓨터의 수가 증가함에 따라 RMI를 사용하여 메시지를 전달하는 것이 소켓에 부속된 객체 스트림을 사용하여 메시지를 전달하는 것보다 효과적이라는 것을 알 수 있다.

This paper designs and implements a message passing library called JMPI (Java Message Passing Interface) which complies with MPJ (Message Passing in Java), the MPI standard Specification for Java language, This library provides some graphic user interface tools to enable parallel computing environments to be configured very simply by their administrators and JMPI applications to be executed very conveniently. Also in this paper, we implement two versions of systems using Socket and RPC which are both typical distributed system communication mechanisms and with three benchmark applications, compare performance of these systems with that of an existing system JPVM depending on the increasing number of the computers. Experimental results show that our systems outperform JPVM system in terms of various aspects and that the most efficient processing speedup can be obtained by increasing the number of the computers in consideration of network traffic through processing evaluation. Finally, we can see that, as the number of computers increases, using RMI to transmit a message is more effective than using object streams attached to sockets to transmit a message.

키워드