Abstract
In this paper, we address how to apply Apache Storm, a distributed stream processing framework, to InfiniBand, a high performance communication device. An easy way to run Storm on InfiniBand is to simply use IPoIP (IP over InfiniBand). However, this method causes a serious CPU load on the node, which is caused by frequent context switches and buffer copies. To solve this problem, we propose a new communication method using InfiniBand's Remote Direct Memory Access (RDMA) function in Storm. First, we design and implement RJ-Netty (RDMA/JXIO Netty), a new framework that replaces Netty, the legacy framework, to exploit RDMA functionality. Second, we reimplement the related classes so that Storm can use both existing Netty and new RJ-Netty. Third, we extend the JXIO server functionality so as to support multi-threading to maximize the performance of RJ-Netty. Experimental results show that the proposed RJ-Netty significantly reduces CPU load while improving message throughput compared to IPoIB as well as Ethernet. This paper is the first attempt to run Apache Storm on InfiniBand, and we believe that it is an excellent research result that improves the performance of Storm by using InfiniBand RDMA.
본 논문에서는 분산 스트림 처리 프레임워크인 Apache Storm을 고성능 통신 장비인 InfiniBand에 적용하는 방안을 다룬다. InfiniBand 상에서 Storm을 동작시키는 쉬운 방법은 IPoIB (IP over InfiniBand)를 사용하는 것이다. 그러나 이 방법은 노드에 심각한 CPU 부하를 발생시키는데, 이는 잦은 문맥 전환과 버퍼 복사에서 기인하는 것으로 나타났다. 이를 해결하기 위해, Storm에서 InfiniBand의 RDMA (Remote Direct Memory Access) 기능을 사용하는 새로운 통신 방식을 제안한다. 첫째, Storm에서 RDMA 기능을 이용하기 위해, 기존 통신 프레임워크인 Netty를 대체하는 새로운 프레임워크인 RJ-Netty (RDMA/JXIO Netty)를 설계 및 구현한다. 둘째, Storm이 기존 Netty와 RJ-Netty를 모두 사용할 수 있도록 관련 클래스들을 개선한다. 셋째, RJ-Netty의 성능을 최대화하기 위해 멀티스레드를 지원하도록 JXIO 서버 기능을 개선한다. 실험 결과, 제안한 RJ-Netty는 Ethernet은 물론 IPoIB에 비해서 메시지 처리량을 향상시키면서도 CPU 부하를 크게 줄인 것으로 나타났다. 본 논문은 Apache Storm을 InfiniBand 상에서 동작시킨 최초의 시도로, 고성능의 InfiniBand RDMA를 사용하여 Storm의 처리 성능을 향상시킨 우수한 연구 결과라 사료된다.