OAK

ERB:고성능 스토리지 시스템을 위한 eBPF 기반 네트워크 및 스토리지 입출력 스택 통합 최적화 연구

Metadata Downloads
Alternative Title
ERB: Unified Network and Storage I/O Optimization Using eBPF for Redis
Abstract
저장장치 기술의 발전에 따라 메모리와의 성능 격차는 점차 줄어들고 있다. 고성능 저장장치의 등장과 함께 스토리지 스택의 소프트웨어 오버헤드는 새로운 병목 지점으로 작용하고 있다. 특히, 분산 시스템 환경에서는 클라이언트와 서버 간 요청과 응답 과정에서 커널의 네트워크 스택과 스토리지 스택을 여러 차례 왕복해야 하며, 이에 따라 심각한 문맥 교환(Context switch) 및 데이터 복사 오버헤드가 발생한다. 이러한 오버헤드는 Linux 커널의 네트워크 및 스토리지 스택에서 발생하는 불필요한 처리 비용을 초래해 고성능 스토리지 시스템의 성능을 저하하는 주요 원인으로 작용한다.
Redis[1]는 고성능 스토리지 시스템의 대표적인 예이다. 메모리 기반 데이터 저장소로 설계된 Redis는 메모리 중심의 구조와 Append-Only File(AOF) 등의 영속성 지원을 통해 데이터의 신뢰성과 안정성을 제공하며, 고성능 스토리지 시스템으로 활용될 수 있다. 그러나 Redis 역시 커널 소프트웨어 스택 오버헤드로 인해 높은 처리량이 요구되는 환경에서 성능이 제한될 수 있다. 이러한 문제를 해결하기 위해 최근에는 Linux 커널의 네트워크 스택이나 스토리지 스택을 우회하여 불필요한 오버헤드를 근본적으로 제거하는 커널 우회(Kernel Bypass) 기술이 개발되었다[29, 47]. 하지만 이러한 커널 우회 기술은 CPU 자원 낭비가 매우 심하고, 사용자가 커널이 제공하던 기능을 직접 재구현해야 하는 등의 한계를 가지고 있다. 본 논문에서는 이러한 한계를 극복하고 고성능 스토리지 시스템의 성능을 극대화하기 위해 eBPF(extended Berkeley Packet Filter)[6]를 활용한 네트워크 및 스토리지 통합 입출력 프레임워크인 ERB(eBPF-based Redis Booster)를 제안한다. ERB는 Redis[1]의 성능 최적화에 초점을 맞추어 설계된 프레임워크로, TCP 프로토콜을 기반으로 동작하며 eBPF XDP와 TC 훅 지점을 활용하여 고속의 패킷 처리를 구현한다. 또한 Redis의 데이터 영속성을 지원하기 위해 커널 모듈로 구현된 ERB 입출력 모듈을 사용하여 네트워크 패킷 처리 과정에서 디스크 입출력을 분리하고, 비동기적인 커널 페이지 캐시 작성 및 fdatasync()를 호출을 통해 클라이언트의 체감 응답 시간을 효과적으로 감소시킨다. 실험 결과, 멀티스레드 기반으로 성능 최적화를 적용한 Redis 대비 최대 6.5배의 성능 향상을 달성하였으며, 99번째 백분위수 응답 시간도 평균 2.5배 ~ 3배가량 감소시켰다. 이를 통해 고성능 스토리지 시스템의 성능 향상을 위해서는 네트워크와 스토리지 스택의 통합적인 최적화가 필수적임을 확인하였다.
Author(s)
안설령
Issued Date
2025
Awarded Date
2025-02
Type
Dissertation
URI
https://repository.sungshin.ac.kr/handle/2025.oak/1453
http://dcollection.sungshin.ac.kr/common/orgView/000000015222
Alternative Author(s)
An Seolryeong
Affiliation
성신여자대학교 일반대학원
Department
일반대학원 컴퓨터학과
Advisor
박지웅
Table Of Contents
I. 서 론 1
II. 배 경 3
1. Redis 3
1) 데이터 영속성을 고려한 Redis의 명령어 처리 과정 3
2) Redis의 데이터 영속성 보장 방식 5
3) Redis AOF 6
2. eBPF 8
1) eBPF 훅 지점 9
2) eBPF 맵(Map) 11
3) eBPF Kfuncs 12
4) eBPF 제약 사항 14
III. 동기 15
1. 기존 Redis의 문제점 15
1) 지연 시간 측면의 문제점 15
2) 확장성 측면의 문제점 17
2. XDP에서의 디스크 입출력 제한 19
IV. 설계 21
1. 전체 구조 21
1) ERB 사용자 영역 22
2) ERB 커널 영역 22
3) ERB 입출력 모듈 22
2. 명령어 처리 과정과 ERB 입출력 모듈 동작 과정 23
1) set 명령어 처리 과정 23
2) get 명령어 처리 과정 23
3) 커널 페이지 캐시 작성과 디스크 입출력 24
V. 구현 25
1. 스토리지 시스템을 위한 eBPF kfunc 25
1) Redis 로깅을 위한 타켓 파일 탐색 25
2) kfifo 자료구조를 위한 kfunc 27
2. ERB 입출력 모듈의 디스크 입출력 방식 28
1) 배치 작업 방식 29
2) kernel_write() 30
3) fdatasync() 31
3. eBPF 전송 제어 프로토콜과 해시 충돌 32
1) eBPF 전송 제어 프로토콜(TCP protocol) 32
2) 해시 충돌 32
VI. 실험 34
1. 실험 환경 34
2. 마이크로 벤치마크 실험 35
1) 지연 시간 평가 36
2) 확장성 평가 38
3. 매크로 벤치마크 실험 40
1) 워크로드 A (update 50%, read 50%) 41
2) 워크로드 B (update 5%, read 95%) 43
3) 워크로드 C (update 0%, read 100%) 45
4) ERB 캐시 크기 별 캐시 적중률(hit ratio) 46
VII. 관련 연구 49
1. 커널 우회 방식(Kernel-Bypass) 49
2. 네트워크를 위한 eBPF 49
3. 스토리지를 위한 eBPF 50
VIII. 논의 및 향후 연구 52
1. 효율적인 데이터 방출 방식(eviction mechanism) 52
2. 전송 제어 프로토콜(TCP protocol)의 확장 53
IX. 결론 54
Degree
Master
Publisher
성신여자대학교 일반대학원
Appears in Collections:
컴퓨터학과 > 학위논문
공개 및 라이선스
  • 공개 구분공개
  • 엠바고2025-02-20
파일 목록

Items in Repository are protected by copyright, with all rights reserved, unless otherwise indicated.