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 하는 부분을 줄이는 것이 목적이다
'DATA Engineering > Kafka' 카테고리의 다른 글
AWS EC2에 Kafka 설치 및 구축하기 (0) | 2022.11.08 |
---|---|
Scalog 설명. 간단한 요약. (0) | 2022.11.04 |
Kafka 파티션 갯수를 늘일수있지만, 줄일수없는 이유 : InvalidPartitionsException (0) | 2022.07.20 |
챕터4. 기타) 카프카 실습 환경 구성 (0) | 2022.07.20 |
섹션4. 카프카 CLI 활용 (0) | 2022.07.20 |