[논문 리뷰] Re-enabling high-speed caching for LSM-trees
이 논문은 강력한 쓰기 작업에서 캐시 무효화를 줄이기 위해 디스크에 저장되는 컴팩션 버퍼를 사용하는 수정된 LSM-트리인 dLSM을 제안한다. 자주 컴팩션되는 데이터에 대해 안정적인 디스크 주소를 유지함으로써 dLSM는 지속 가능한 캐싱을 가능하게 하여, 동일한 DRAM 캐시를 사용할 때 하드디스크 스토리지에서 표준 LSM-트리 대비 5–8배 높은 쿼리 성능을 달성한다.
LSM-tree has been widely used in cloud computing systems by Google, Facebook, and Amazon, to achieve high performance for write-intensive workloads. However, in LSM-tree, random key-value queries can experience long latency and low throughput due to the interference from the compaction, a basic operation in the algorithm, to caching. LSM-tree relies on frequent compaction operations to merge data into a sorted structure. After a compaction, the original data are reorganized and written to other locations on the disk. As a result, the cached data are invalidated since their referencing addresses are changed, causing serious performance degradations. We propose dLSM in order to re-enable high-speed caching during intensive writes. dLSM is an LSM-tree with a compaction buffer on the disk, working as a cushion to minimize the cache invalidation caused by compactions. The compaction buffer maintains a series of snapshots of the frequently compacted data, which represent a consistent view of the corresponding data in the underlying LSM-tree. Being updated in a much lower rate than that of compactions, data in the compaction buffer are almost stationary. In dLSM, an object is referenced by the disk address of the corresponding block either in the compaction buffer for frequently compacted data, or in the underlying LSM-tree for infrequently compacted data. Thus, hot objects can be effectively kept in the cache without harmful invalidations. With the help of a small on-disk compaction buffer, dLSM achieves a high query performance by enabling effective caching, while retaining all merits of LSM-tree for write-intensive data processing. We have implemented dLSM based on LevelDB. Our evaluations show that with a standard DRAM cache, dLSM can achieve 5--8x performance improvement over LSM with the same cache on HDD storage.
연구 동기 및 목표
- 컴팩션 작업 중 캐시 무효화로 인한 성능 저하 문제를 해결한다.
- 컴팩션은 데이터를 재구조화하여 캐시 블록을 무효화하지만, 데이터 내용은 그대로 유지되는 바람에 발생하는 근본적인 제약을 극복한다.
- SSD나 추가적인 키-값 캐시에 의존하지 않고도 쓰기 집약적 워크로드에서 무작위 키-값 쿼리에 효과적인 캐싱을 가능하게 한다.
- 쓰기 효율성과 범위 쿼리 성능을 유지하면서도 무작위 읽기 스루풋을 크게 향상시킨다.
- 시스템 전체 아키텍처 변경 없이도 동적이고 혼합 워크로드에 적용 가능한 저비용 일반 목적 솔루션을 제공한다.
제안 방법
- 자주 컴팩션되는 데이터의 스냅샷을 저장하는 지속 가능한 디스크 상 컴팩션 버퍼를 도입하여 안정적인 디스크 블록 주소를 유지한다.
- 데이터가 주 LSM-트리보다 훨씬 낮은 빈도로 업데이트되는 스테이징 영역으로서 컴팩션 버퍼를 사용하여 주소 변경을 최소화한다.
- 자주 액세스되는 데이터는 컴팩션 버퍼의 안정적인 블록 주소를 참조하고, 드물게 액세스되는 데이터는 여전히 주 LSM-트리에 유지한다.
- 캐시가 데이터의 물리적 위치와 분리되도록 하여 컴팩션 동안에도 컴팩션 버퍼에 캐시된 블록이 유효한 상태를 유지한다.
- 쓰기 효율성과 I/O 부하 균형을 유지하기 위해 LevelDB와 동일한 기존의 LSM-트리 컴팩션 스케줄링 및 병합 로직을 활용한다.
- 최소한의 성능 오버헤드로 빠른 키-값 검색을 가능하게 하기 위해 컴팩션 버퍼에 큰 블룸 필터를 사용한다.
실험 결과
연구 질문
- RQ1지속 가능한 디스크 버퍼가 집약적인 컴팩션 중 LSM-트리에서 캐시 무효화를 줄일 수 있는가?
- RQ2컴팩션 버퍼가 쓰기 스루풋이나 메모리 사용량을 떨어뜨리지 않고 무작위 읽기 성능을 어느 정도 향상시킬 수 있는가?
- RQ3버퍼 내에서 안정적인 블록 주소를 유지함으로써 쓰기 집약적 워크로드에서 캐시 효과성이 유지되는가?
- RQ4혼합 읽기/쓰기 워크로드 하에서 dLSM이 표준 LSM-트리에 비해 캐시 히트 비율과 쿼리 스루풋 측면에서 어떻게 비교되는가?
- RQ5SSD나 추가적인 키-값 캐싱 계층 없이도 dLSM이 하드디스크 스토리지에서 높은 성능을 달성할 수 있는가?
주요 결과
- 동일한 쓰기 워크로드에서 하드디스크에 표준 DRAM 캐시를 사용할 때 dLSM는 표준 LSM-트리 대비 5–8배 높은 쿼리 성능을 달성한다.
- dLSM에서는 컴팩션 중 평균 캐시 히트 비율이 약 90%로 안정적으로 유지되며, 표준 LSM-트리는 평균 47%로 떨어진다.
- dLSM에서는 무작위 읽기 스루풋이 항상 높은 수준(약 3,400 QPS)을 유지하지만, 표준 LSM-트리는 컴팩션 중 50에서 850 QPS 사이로 변동성이 크다.
- 전체 컴팩션 동안 dLSM는 높은 성능을 유지하지만, 표준 LSM-트리는 캐시 채움 현상으로 인해 심각한 성능 저하를 겪는다.
- 컴팩션 버퍼는 자주 액세스되는 데이터의 업데이트 빈도를 주 컴팩션 프로세스에서 분리함으로써 캐시 무효화 폭발을 줄인다.
- 컴팩션 단계 동안 dLSM는 표준 LSM-트리 대비 평균 캐시 히트 비율 41% 향상 및 평균 읽기 스루풋 91% 향상을 달성한다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.