바이트댄스는 '라이브러리로 프로세스 실행(Run Process As Library, RPAL)'이라는 새로운 리눅스 프로세스 간 통신 방법을 도입하여 데이터 평면 효율성과 제어 평면 최적화를 크게 향상시켰습니다. RPAL은 데이터 복사 횟수를 두 번에서 한 번으로 줄여 통신 과정을 간소화합니다. 또한 시스템 호출 및 커널 스레드 전환과 관련된 오버헤드를 제거하여 유닉스 도메인 소켓 및 epoll() 계열을 사용하는 기존 애플리케이션과의 통합을 용이하게 합니다.
성능 비교에서 RPAL은 놀라운 개선을 보여줍니다. RPAL 없이 32바이트 메시지의 경우, 총 TSC 사이클 수는 19,616,222,534로, 1,000,000개의 메시지에 대한 평균 대기 시간은 19,616 사이클이었습니다. 반면, RPAL을 사용할 경우 총 TSC 사이클 수는 1,703,459,326으로 감소하여 평균 대기 시간은 단 1,703 사이클로 줄어들었습니다. 이는 17,913 사이클의 감소를 의미하며, 32바이트 메시지에 대해 약 91.3%의 성능 향상을 나타냅니다.
RPAL의 실제 적용은 상당한 의미를 가지며, 이미 바이트댄스의 데이터 센터 내 RPC 프레임워크에 구현되었습니다. 이 구현은 마이크로서비스 시나리오에서 프로세스의 CPU 사용량을 15.5% 감소시키는 결과를 가져왔습니다. 성능 향상은 주로 사용자 공간 컨텍스트 전환을 통한 제어 평면 오버헤드 감소와 주소 공간 공유로 인한 메모리 복사 감소에 기인합니다.
* 이 글은
phoronix.com의 기사를 요약한 것입니다. 전체 기사의 내용은
이곳에서 확인하실 수 있습니다.