## RHEL 6.3에 Pseudo InfiniBand HCA driver 설치하여 인피니밴드 테스트 하기 ##
해당 가상 드라이버를 통해 물리적인 인피니밴드가 없는 환경에서 기본적인 인피니밴드 테스트를 해 볼 수 있다.
* 테스트 했던 RHEL 6.8 에서는 www.nminoru.jp 에서 제공하는 rpm 패키지를 통해 쉽게 설치가 가능했다.
하지만 RHEL 6.3 Base 커널 기반에서 테스트가 필요해서 아래와 같이 진행하여 설치하였는데 rpm은 물론 소스컴파일도 진행이 안되었다.
이유는 PIB 가 CentOS 6.5 기반으로 개발이 되어서 그렇다. 그래서 RHEL 6.5 일부 헤더파일을 이용해서 설치하였다.
reference :
http://www.nminoru.jp/~nminoru/network/infiniband/pib.html
https://pkg-ofed.alioth.debian.org/howto/infiniband-howto-4.html
download :
http://www.nminoru.jp/~nminoru/network/infiniband/src/
1) 커널 dev 설치 및 인피니밴드 패키지 설치
# yum install -y kernel-devel gcc
# yum install opensm libibverbs libibverbs-utils infiniband-diags rdma
2) RHEL 6.5의 일부 헤더파일을 사용
- RHEL 6.3 커널의 기존 헤더파일 복사
# mv /usr/src/kernels/2.6.32-279.el6.x86_64/include/rdma/ib_verbs.h /usr/src/kernels/2.6.32-279.el6.x86_64/include/rdma/ib_verbs.h_original
# mv /usr/src/kernels/2.6.32-279.el6.x86_64/include/rdma/ib_mad.h /usr/src/kernels/2.6.32-279.el6.x86_64/include/rdma/ib_mad.h_original
- RHEL 6.5 커널의 3가지 헤더파일 복사 (RHEL 6.5 kernel-devel 패키지의 헤더파일들을 복사)
# cp /root/pib/ib_verbs.h /usr/src/kernels/2.6.32-279.el6.x86_64/include/rdma/
# cp /root/pib/ib_mad.h /usr/src/kernels/2.6.32-279.el6.x86_64/include/rdma/
# cp /root/pib/export.h /usr/src/kernels/2.6.32-279.el6.x86_64/include/linux/
-> RHEL 6.5 헤더파일을 사용하지 않으면 pib-0.4.5 컴파일 시 헤더파일의 함수 인자들 일부가 정의가 되지 않았다는 에러가 발생된다.
3) 커널 모듈 만들기
# cd /root
# tar zxvf pib-0.4.5.tar.gz (pib-0.4.6 버전이 2017.02.27 기준 가장 최신이지만 다운로드 사이트에서 해당 버전의 소스 tar.gz 파일을 받아 압축을 풀면 pibnetd 임.)
# cd /root/pib
# cd pib-0.4.5
# make
# mkdir /lib/modules/2.6.32-279.el6.x86_64/extra/pib
# cp pib.ko /lib/modules/2.6.32-279.el6.x86_64/extra/pib
# depmod -a
# modprobe pib
# lsmod | grep pib
pib 111472 0
ib_core 74343 11 ib_ipoib,rdma_ucm,ib_ucm,ib_uverbs,ib_umad,rdma_cm,ib_cm,iw_cm,ib_sa,ib_mad,pib
4) pib 제공 라이브러리와 init 스크립트 rpm 설치
# rpm -ivh libpib-0.0.6-1.el6.x86_64.rpm pibnetd-0.4.6-1.el6.x86_64.rpm
5) 데몬 start
# /etc/rc.d/init.d/pibnetd start
# /etc/rc.d/init.d/rdma start
# /etc/init.d/opensm start
6) dmesg 확인
# dmesg | grep pib
pib: Pseudo InfiniBand HCA driver v0.4.5
pib: single-host-mode
pib: add internal switch (ports=4)
pib: add HCA (dev_id=0, ports=2)
pib: add HCA (dev_id=1, ports=2)
7) 테스트
- pingpong
# ibv_ud_pingpong
# ibv_ud_pingpong host
- 상태 확인
# ibnetdiscover
# perfquery
- ibping 테스트
# ibping -S (서버 모드 동작)
# ibstat -p (port 상태 확인)
# ibping -G 0x000c297b9be60301 (확인된 포트로 ibping 테스트)