Kafka, OS의 힘을 빌려 성능을 극대화하다!

by DD
5개월 전
조회수 9

KafkaOS 페이지 캐시Zero-Copy 기술을 활용하여 I/O 성능을 최적화함

JVM 힙 메모리를 우회하여 GC 오버헤드를 줄이고, sendfile API를 통해 데이터 복사 횟수를 최소화함

커뮤니티에서는 Redis, PostgreSQL 등 다른 시스템과의 유사성을 언급하며, TLS 암호화 환경에서의 제약 사항을 지적함

Kafka의 OS 페이지 캐시 활용

Kafka는 OS 페이지 캐시를 활용하여 메모리 관리 오버헤드를 줄이고, 디스크 I/O 성능을 향상시킨다. 구체적으로, JVM 힙 메모리 대신 OS의 캐시를 사용하여 데이터 이중 버퍼링을 방지한다. 따라서 브로커 재시작 시에도 캐시가 유지되어 데이터 접근 속도를 보장하며, 쓰기-쓰루 캐싱선행 읽기를 통해 성능을 최적화한다.

Zero-Copy 기술과 sendfile API

Kafka는 Zero-Copy 기술을 통해 데이터 전송 과정에서 발생하는 복사 횟수를 최소화한다. sendfile API를 활용하여 디스크 -> 페이지 캐시 -> 소켓으로 직접 데이터를 전송함으로써, 기존의 4번의 데이터 복사 과정을 2번으로 줄인다. 반면, TLS 암호화 연결에서는 데이터 암호화를 위해 추가적인 복사가 필요하며, 이는 성능 저하의 원인이 될 수 있다.

성능 최적화의 실제 적용

Kafka의 OS 페이지 캐시Zero-Copy 기술은 대용량 데이터 처리 환경에서 레이턴시 감소처리량 증가에 기여한다. 따라서, Kafka 클러스터를 운영하는 경우, OS 설정을 최적화하여 캐시 효율을 극대화하는 것이 중요하다. 결과적으로, 디스크 I/O 병목 현상을 완화하고 안정적인 서비스 운영을 가능하게 한다.

Kafka uses OS page buffer cache for optimisations instead of process caching