혹시 Infiniband를 아시나요?

hiboss1의 이미지

안녕하세요.

처음 직장을 연구소에 들어갔고 거기서 리눅스 클러스터 구축 및 신제품 테스트 일을 해서 지금까지 그쪽일을 하고 있습니다.
HPC에서 심장이 Interconnection이라고 하시는 분이 있더라구요. 저도 그렇게 생각을 하는데 그 중에서 Giga, Myrinet, Infiniband를 사용해 보았습니다. 제가 5년 전에 처음으로 Infiniband를 테스트를 했을때는 정말 성능이나 개념이 너무 좋아서 이제 점점 이 기술이 퍼지지 않을까라는 생각을 했지만 지금까지 그냥 HPC에서만 많이 사용을 하고 있더군요. 좀 아쉽긴 하지만요.

요즘은 Google에서 infiniband를 뒤져보면 많은 자료가 있습니다. 또한 관련된 제품을 만드는 회사도 많이 있는 것으로 알고 있습니다.
CISCO,Voltaire,Qlogic,Mellanox,Xsigo 등등.

사족이 너무 길었네요. 그럼 본론으로 돌아가서 infiniband에 대해서 말씀을 드리겠습니다.
Infiniband는 기존의 서버 벤더들이 Bus방식의 한계를 해결하기 위해서 Next I/O, Future I/O라는 다른 이름으로 생겨난 것이 infiniband라는 이름으로 합쳐지면서 지금까지 오고 있습니다. 기존의 Bus방식은 병렬로 시스템의 통로를 만드는 것인데 이것은 고속도록의 차선을 많이 만드는 방식입니다. 그렇다보니 만약에 하나의 장비가 많은 대역폭을 소모하게 되면 다른 장비가 그 버스를 이용하기가 힘들게 됩니다. 이런 문제점을 해결한 infiniband는 직렬 방식으로 P2P방식으로 장비와 장비간의 연결을 하고 있는 구조입니다. 즉 장비마다 하나의 고속도로를 만드는 방식입니다. 현재 4X의 속도로 10G/20G까지 지원을 하고 있습니다. 처음에는 이것을 보드 형식으로 만들려고 했지만 현재 너무 많은 서버가 bus방식으로 구성되다보니 장비와 장비의 연결을 지원하기 위해서 카드와 스위치로 변경이 되었습니다.
카드는 HCA(host channel adapter)라고 불리고요 뭐 HBA카드랑 비슷하게 생겼습니다.
스위치는 서버를 연결 시킬 수 있는 것과 기존의 네트워크와 스토리지를 연결 시킬 수 있는 것으로 2가지가 나오고 있습니다.

이런 Infiniband는 다양한 특징을 가지고 있습니다.
1. 기존의 네트워크와 통합 기능 : 모듈타입으로 스위치에 장착을 하면 기존의 giga와 SAN을 사용 할수 있습니다.
2. CPU overhead 감소 : RDMA(Remote Direct Memory Access)를 이용하여 통신에서 사용되는 CPU의 일을 줄려줍니다.
3. MPI 지원 : 기존의 MPI를 지원하고 있습니다.

이런 특징을 가진 infiniband는 현재까지 연구소에서 HPC의 통로로 사용을 하고 있습니다. 하지만 요즘에는 높은 대역폭을 필요로 하는 응용프로그램이 많아지다보니 점점 엔터프라이즈로 활동 범위를 넓히고 있습니다.

처음에 글을 적을 때는 많은 이야기를 하고 싶었는데 혹시 관심이 있으시면 답글 남겨주세요. 그럼 다음에또 뵙도록하죠.

항상 행복한 하루보내세요.

Forums: 
park7275의 이미지

저도 최근에 본것이 있어서 붙이자면.

TCP 전송 속도 개선을 위한
infiniband을 이용한(?) SDP+RDMA 조합이 있습니다.

일단 방식은 TOE 방식으로 TCP/IP Stack 를 하드웨어(OS가 처리해주지 않음)
가 처리해주는 방식입니다. 결국 TCP 처리를 개선해주는 하나의 모델이라고 보시면 됩니다.

RDMA는 zero-copy를 통해 통신하는 쪽의 양단의 data를 바로 메모리로 전송해주는 것이고
SDP는 기존 TCP를 대체하여 이를 사용하는 Protocol 이라고 보시면 될듯합니다. Infiniband에 의해 design되었다네요.

이를 통해 기본적으로 전송 속도 개선과 CPU 부하를 줄일 수 있습니다.
단, 하드웨어 장치의 CPU(이건 카드에 붙은 CPU 얘기) 에 따라....크게 개선을 못볼수도 있다는 문제가 있습니다.

혹시나 전송속도 개선을 생각하신다면 해당 카드 확인해보시면 RDMA를 지원한다면 아마
해보실수 있을듯합니다.
SDP의 경우 linux에서도 지원하니....
기존 소스나 바이너리 변경없이 그냥 sdp 라이브러리 preloading 방식이니 간단합니다.
(동적 라이브러리기준으로 컴파일 필요없다는 얘기..--;)
설정은 프로그램 바이너리 및 IP/PORT 정도 지정만 하면 되고요.
HP는 lsa라는 이름으로 나와있던것 같고...

또하나의 TCP개선 방식으로는 하나의 CPU하나가 전체 TCP 처리를 담당하는 Onloading 방식도 있습니다.

P.S 이런글 쓰려니..정리가 안되네요.첨이니 이해 부탁드립니다.

[KILL] 죽을각오로.........

[KILL] 죽을각오로.........

crazyits의 이미지

가격이 문제라고 생각합니다.

보통 몇백단위가 기본이고 좀 할려고 하면.. 몇천~억소리로 확뛰어 버리기 때문에

보급에 문제가 있는 것이라 생각합니다만... ^^;

모지리의 이미지

TOE 기능이 상당히 매력적이긴 한데 이게 커널과 유기적으로 작업할려고 할때는 좀 걸림돌이 되드라구요. 2.6 커널에는 몇몇 드라이버는 벌써 올라가있습니다. 가격도 그리 문제가 되지 않습니다. 인텔 계열이 아니면 100만원 이하 카드들 몇종류 나와있습니다. 몇천/억일 경우는 칲셋을 대량으로 구매해서 제작할때의 이야기 같습니다. 괜찮은 제품도 듀얼포트 PCI-X의 경우 100 언저리에 구매가능합니다.

지난 여름에 이쪽 작업 할려다가 다른게 우선권이 있어서 좀 미뤄놓았는데 올해는 해야죠 헤헤..

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.