Reference

RHOTOS 2021 학회에서 진행한 발표. USENIX워크샵 중 하나.

논문 : https://www.cs.yale.edu/homes/soule/pubs/hotos2021.pdf

자료 : https://www.youtube.com/watch?v=6ORl8nnd19A

독스 : https://zerial.readthedocs.io/en/latest/

Zero-copy와 Serializer-Deserializer

Zero-Copy는 데이터 송수신하는 상황에서
데이터 복사본을 적게 만들고, 어플리케이션 영역과 커널영역을 적게 드나드는 것
을 목적으로 만들었다

그래서 데이터를 송신할때는 Serializer(직렬화) 를 해주고, 수신할때는 Deserializer(역직렬화) 를 해줘야 했다.

Zero-Copy가 분산환경에서는 Application 레벨에서만 가능했고, Network단계에서 Zero-Copy에서 하는게 불가능 했었음
Zero-Copy를 Network단계에서 수행하지 못하다보니, CPU는 매우 많은 데이터복사본을 가져야했음

이번 학회의 목표는

  • Memory단계에서 원래저장된 데이터를 직렬화시킨다
  • 직렬화된 데이터를 NIC장비의 QUEUE구조에서 사용할수있도록 만든다

라는 것이다

Bottleneck

Bottleneck(병목현상)

  • serializer 는 대부분의 보틀넥(병목)현상을 만드는 주된 요인이다 (+RPC)
  • Memory copy와 컴퓨팅연산이 결합되기때문에 병목이 일어난거고
  • Memory접근에 영향을 받으면서도, DMA(직접메모리 엑세스) 는 사용하기 쉽지않다

software를 바꾸지않고, 굳이 serialization하려는 이유

  • 대다수의 직렬화라이브러리는 다른것보다 성능이 좋거나, 나쁨경우가 많아서
    범용적으로 사용하기엔 애매함
  • 메모리카피때 발생하는 대다수의 기능적인 문제에는 접근하지않음

다른 cpu를 사용하지않고, 굳이 serialization하려는 이유

  • CPU는 bit레벨 연산 인코딩에 최적화되어있지않음
  • Data인코딩은 순차적인 작업이고
  • 메모리카피때 발생하는 대다수의 기능적인 문제에는 접근하지않음

다른 accelerator(가속기)를 사용하지않고, 굳이 serialization하려는 이유

  • 가속기를 썻다가 괜히 새로운 CPU문제가 일어날수 있음
  • Memory-Copy할때 발생하는 대다수의 기능적인 문제에는 접근하지않음

굳이 따지자면 DMA를 써서 Memory-CPU연산하는 부분을 줄이려고하는것

결국엔 핵심은 DMA Copy 하는 부분을 줄이는 것이 목적이다

jjongguet