IB RDMA 프로그래밍

1.
iWARP이나 Infiniband 프로그래밍을 하려고 하는 개발자라면 OpenFabric을 알고 있습니다. 가장 기본적인 Application Stack이면서 오픈소스로 제공하기 때문입니다. 그런데 문제는 개발이 말처럼 쉽지 않습니다. 오픈소스로 제공하지만 마땅한 텍스트도 없습니다.? 그래서 OpenFabric은? 유료로 OFA Training이라는 프로그램을 제공하고 있습니다. 이 또한 한국은 물건너 이야기입니다.

또한 ZeroM에서 RDMA를 지원하기로 하였습니다. 당연한 기능입니다. 이를 위해 개발자가 참고로 할 수 있는 자료를 정리하여야 할 필요가 있었습니다. 그래서 간단히 정리를 했습니다. 우선 입문입니다.

InfiniBand의 개요

다음으로 일본어지만 Infiniband 입문으로 괜찮은 자료입니다. (한글로 번역은 여기로)


영어가 자신있고 문장으로 된 글을 원하면 아래를 참고로 하시길 바랍니다.


2.
이제 조금 깊이 들어갈까요? Data-path basics와 관련된 QP,CQ등에 대한 설명입니다.

Quick Concepts Part 1 Introduction to RDMA

이제 RDMA 프로그래밍을 어떻게 할지 알아보죠.보통 아래 세가지방법이 가능하다고 합니다.

1. First and simplest way of working with InfiniBand is IPoIB. In this case IP stack is put above IB. You don’t need to rewrite your applications while you can utilize high throughput. On the other hand you will kill IB low latencies and won’t be able to utilize whole IB throughput capabilities.
2. Second way is Sockets Direct Protocol (SDP) which is designed to utilize IB RDMA capabilities and bypass TCP/IP stack. SDP can be used transparently w/o recompiling your application. It’s not that fast as native IB API but os better than IPoIB.
3. Third and hardest way is using IB Verbs which is the lowest API, User Direct Access Programming Library (uDAPL) which is based on IB Verbs, Message Passing Interface (MPI) or Unified Parallel C. Different versions of MPI and UPC can be based on either IB Verbs or uDAPL. I personally work with MPI and UPC so I will describe their installation over InfiniBand.
Activating InfiniBand stack in Linux중에서

물론 비개발자인 제가 설명할 능력은 없습니다. 외국의 개발자들이 작성한 Sample Program을 소개하는 것으로 대신하겠습니다.(^^) 이중에서 IPoIB(IP over Infiniband)와 RDMA CM(Communication Manager)를 이용하여 개발한 샘플을 소개합니다.

먼저 Cisco에서 근무하는 Roland Dreier가 개발한 프로그램입니다. InfiniBand 프로그래밍을 검색하면 자주 보이는 아래 자료를 만든 사람입니다.

Writing RDMA applications on Linux

LinuxConf.eu 2007이라는 행사에서 발표한 자료입니다. 이 때 관련된 샘플소스도 공개하였습니다.

또 다른 .T.Bedeir라는 개발자가 있습니다.2010년에 IB Verb를 이용한 RDMA 프로그래밍과 관련된 자료를 공개하였습니다. HPC Advisory Council에서 발표한 자료입니다.

Building an RDMA Capable Application with IB Verbs
RDMA Read and Write with IB Verbs

위의 논문과 관련된 소스들입니다.

RDMA Read/Write Sample Code

이상의 논문을 온라인으로 보시고자 하면 아래의 블로그를 방문하시면 됩니다.

The Geek in the Corner

블로그를 보시면 DAPL을 이용하여 어플리케이션을 개발하는 것은 시간과 비용의 낭비라고 주장합니다. 쉽지 않다는 말입니다.

3.
InfiniBand를 시험하려면 작지 않은 비용이 듭니다. Infiniband HCA도 비싸고 네트워크케이블도 무척 비쌉니다. 대부분 물 건너 수입하여야 합니다. 들리는 말에는 HCA 제조업체별로 달라서 맞는 케이블을 구해야 한다고 하네요. 현재 RJ45처럼 표준화하려면 시간이 덜 필요할 듯 합니다.

OFED를 사이트에서 받아서 리눅스에 설치하고 시험을 하려고 하면 아래의 사이트를 참조하세요.

HOWTO: Getting Started with InfiniBand on Redhat/Centos Linux
Activating InfiniBand stack in Linux

10G Ethernet을 도입하는 증권사가 늘고 있습니다. InfiniBand를 도입하고자 검토하는 회사도 있습니다. 혹 InfiniBand를 도입한다고 하더라도 앞서 세가지모델중 IPoIB를 이용한 모델이 효과적이지 않을까 합니다.

4 Comments

  1. 박보순

    좋은 자료 감사합니다.
    OpenFabric에서 나오는 드라이버를 사용하기 전에는 각 업체별로 드라이버가 달랐고 그 중에서도 Cisco에 합병된 Topspin과 Voltaire가 성능이 가장 잘나왔던것으로 테스트를 해보았습니다.
    그리고 지금은 뭐 다들 같은 구조라서 그렇게 성능의 차이는 없지만 SM의 기능이 중요한 것으로 알고 있습니다.

    Reply
    1. smallake

      늦었습니다. 귀한 댓글 감사합니다.

      혹 시험한 결과가 있으면 공유하면 어떨지?그냥 저의 의견입니다.(^^)

      Reply
  2. 박보순

    참 그리고 Xsigo는 기반은 infinband이지만 그 회사가 주창하는 바는.
    I/O 가상화입니다. 실제로 network+storage I/O를 한 곳에서 관장을 하고 연결은 20G의 속도가 나오는
    Infinband HCA를 이용하는 것입니다.

    Reply
    1. smallake

      Xsigo라는 회사에 관심을 갖지 않아서.그냥 Infiniband와 관련된 자료를 제공하고 PPT로 잘 정리된 듯 해서 소개했습니다.

      Reply

박보순에 답글 남기기 응답 취소

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.