SR-IOV와 IPC

1.
Chelsio의 아시아 영업담당자를 만났던 적이 있습니다. “앞으로 어떤 기능을 더하면 좋겠냐”고 물어보길래 PTP와 같은 시간동기화기능이면 좋겠다는 이야기를 했습니다. 그리고 한 달정도 흐른 후 해외 기사를 보니까 한자리 마이크로초단위로 시간동기화를 하고 Timestamping기능을 가진 RNIC이 나왔다고 하네요. 필요는 만국 공통이고 필요가 기술을 낳는다는 생각이 들었습니다.

비슷한 경험을 또 하였습니다. 역시 Chelsio의 한국영업과 술자리입니다. SR-IOV를 놓고 두런두런 이야기했습니다. SR-IOV에 대한 자료중 Latency와 연관하여 설명한 자료가 있는지 문의를 했었습니다. 별로 없더군요. 그러다 제가 이런 이야기를 했습니다.

사실 VM도 호스트입장에서 보면 하나의 프로세스이다.프로세스와 프로세스간에 통신을 하는 가장 기본적이고 빠른 방법은 IPC인데 왜 이런 방법이 없을까? 굳이 이더넷을 통하여 HOST와 Guest간에 통신을 하여야 하나?

이런 방법은 어떨까? 메모리가 있는 PCI카드를 만들어 설치하고 HOST와 Guest간에 PCI카드를 통해 통신을 하면 빠르지 않을까?

이런 내용입니다. 술자리를 파하고 다음날. 토요일이었습니다. 인터넷으로 검색을 해보았습니다. Virtualization과 IPC라는 검색어로 찾아보았습니다. 놀랍게도 중요한 정보가 보이더군요.

2.
오늘 소개하려고 하는 기술입니다. Nahanni는 VM환경을 위한 Shared Memory Interface입니다.

In many cloud computing environments (e.g., Amazon’s public Elastic Computing Cloud (EC2), and Openstack for private clouds), virtual machine (VM) instances are the unit of resource allocation. When possible, VM instances can be allocated on the same physical server and many techniques (i.e., using shared memory between VMs) can be used to reduce the overhead of the inter-VM communication.

2010년 발표한 논문이 출발입니다.

Nahanni – a shared memory interfacefor KVM

그리고 2011년 KVM 행사에서 발표한 Low-Latency, High-Bandwidth Use Cases for Nahanni/ivshmem입니다.

Download (PDF, 676KB)

앞서 대화에서 이야기한 필요때문에 VM간의 IPC를 구현하는 다양한 기술들이 등장하고 있습니다.

Challenges for Inter Virtual MachineCommunication

자세한 검토를 하지 않았지만 논문수준이 아니라 코드수준(?)으로 공개한 기술중 Nahanni가 가장 완성도가 높은 듯 합니다. 더구나 저처럼 상용이 아닌 공개소프트웨어를 사용할 경우 또다른 대안이 없는 듯 합니다.

3.
왜 이런 고민을 할까요? 현재 ZeroAOS는 이용장벽을 낮추기 위하여 비용을 낮출 방안으로 클라우드를 선택하였습니다. 이럴 때 문제가 생깁니다. High Latency입니다. 물론 DMA를 하는 것과 비용할 경우입니다. 그래서 Low Latency를 해보고자 다양한 기술을 찾았습니다. 그 때 본 기술이 SR-IOV입니다.

Latency와 가상화는 이율배반?

하드웨어기술이기때문에 특별한 어려움은 없습니다. 그렇지만 이 또한 문제입니다. Redhat이 발표한 자료입니다.


Host방식의 SR-IOV와 Bare Metal과 비교하면 대략 30 마이크로초정도의 차이가 발생합니다. 이 정도의 차이도 줄일 수 있는 방법이 있는지를 찾은 결과가 VM-Shared Memory입니다. 분명 DMA와 똑같은 Latency를 주는 것은 불가능합니다. 그렇지만 최소로 줄여서 서비스를 기획하는 것은 개발자의 역할이 아닐까 합니다.

5 Comments

  1. Hammer

    비교표의 단위가 millisecond이니 SR-IOV와 Bare Metal의 차이는 대략 30 microsecond가 아니고 300 microsecond라고 해야 할 것 같네요.
    헌데 정작 내용은 어려워서 잘 모르겠네요. ^^

    Reply
    1. smallake

      1,024를 기준으로 하면 일반적인 Bridged Guest와 SR-IOV guest를 비교하면 300 마이크로초이고 SR-IOV와 Bare Metal을 비교하면 30마이크로초로 보이는데…0.20 -0.17 = 0.03 밀리초 = 30 마이크로초.

      제가 계산을 잘못했나?(^^)

      Reply
    2. Hammer

      아..
      제가 표의 색을 잘못 봤습니다.
      말씀하신 내용이 맞네요.. ^^

      Reply
    3. smallake

      ㅋㅋㅋㅋ
      잘 지내시죠? 날이 찬데 건강 잘 챙기세요.
      새해 복많이 받으시고. 미리 인사를 드립니다.

      Reply
    4. Hammer

      네. 잘지내고 있습니다.
      바로 코앞에 있어도 한번 뵙기가 어렵네요. ^^
      대표님도 연말 마무리 잘하시고 새해 복 많이 아니 새해 사업 번창하시길 빌겠습니다. ^^

      Reply

Leave a Comment

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

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