SSD 쓰기 성능 최적화: NoWA 패턴 인사이트

현대의 솔리드 스테이트 드라이브(SSD)는 데이터 저장 방식을 근본적으로 바꾸었지만, 종종 성능 저하와 하드웨어 마모를 초래할 수 있는 복잡한 내부 메커니즘을 숨기고 있습니다. 데이터베이스 엔지니어와 시스템 프로그래머에게는 소프트웨어가 데이터를 쓰는 방식과 플래시 변환 계층(FTL) mesma가 이를 관리하는 방식 사이의 차이를 이해하는 것이 처리량과 수명을 극대화하는 데 중요합니다.

VLDB에서 발표된 최근 연구인 "How to Write to SSDs"는 이 차이를 탐구하며, 사실상 쓰기 증폭을 제거하는 방법을 소개합니다. 이는 페이지 크기와 물리적 플래시 블록 간의 불일치가 큰 오버헤드를 초래하는 MySQL 및 PostgreSQL과 같은 대규모 데이터베이스에 특히 관련이 있습니다.

문제: 쓰기 증폭 (WAF)

쓰기 증폭은 플래시 메모리에 실제로 기록되는 데이터 양이 호스트 소프트웨어가 실제로 요청한 데이터 양보다 현저히 클 때 발생합니다. 이는 플래시 메모리가 제자리에서 덮어쓸 수 없고, 새로운 데이터를 블록 내 페이지에 쓰기 전에 큰 블록 단위로 지워야 하기 때문에 발생합니다.

데이터베이스가 작은 데이터 조각(예: 8KB 또는 16KB 페이지)을 업데이트하면 SSD 내부 컨트롤러는 읽기-수정-쓰기 사이클을 수행해야 합니다. 이 과정은 기존 유효 데이터를 새로운 위치로 이동하고 오래된 블록을 지워 내부 데이터 이동량이 크게 증가합니다. 드라이브가 채워질수록 이 "가비지 컬렉션" 과정이 더 공격적으로 진행되어 쓰기 속도가 급격히 떨어지고 드라이브가 더 빨리 마모되는 성능 절벽을 초래합니다.

NoWA 패턴: WAF = 1 달성

이 연구의 핵심 기여는 NoWA (No Write Amplification) 패턴의 도입입니다. 이 접근 방식의 가장 인상적인 점은 장치가 완전히 사용 중일 때도 쓰기 증폭 계수(WAF)를 1로 보장한다는 것입니다.

전통적인 쓰기 패턴과 달리 NoWA는 소프트웨어 쓰기를 플래시 메모리의 물리적 특성과 맞춥니다. SSD 컨트롤러가 공간을 회수하기 위해 내부 데이터 이동을 수행할 필요가 없도록 함으로써, 드라이브에 저장된 데이터 양에 관계없이 시스템은 최고 성능을 유지할 수 있습니다.

실제 데이터베이스에 미치는 영향

이 연구는 MySQL 및 PostgreSQL을 포함한 일반적인 데이터베이스에 이러한 쓰기 패턴이 미치는 영향을 분석했습니다. 결과는 이러한 패턴이 보다 최적화된 스토리지 테이블 포맷 개발로 이어질 수 있음을 시사합니다.

하지만 이러한 패턴의 구현은 데이터베이스 엔진마다 다릅니다:

  • MySQL: 기본 페이지 크기는 16KB입니다.
  • PostgreSQL: 기본 페이지 크기는 8KB입니다.
  • LeanStore: 페이지 크기는 4KB입니다.

페이지 크기의 이러한 차이는 SSD가 쓰기를 처리하는 방식에 크게 영향을 미칩니다. 예를 들어, 일부 비평가들은 PostgreSQL이 페이지를 쓰는 방식—먼저 Write-Ahead Log (WAL)에 쓰고 이후 데이터 파일에 쓰는 방식—이 WAL에 순차적 쓰기 패턴을 만들며, 이는 일반적으로 데이터 파일에 대한 무작위 쓰기보다 SSD에 더 친화적이라고 지적했습니다.

산업 관점 및 대안

이 연구를 둘러싼 논의는 동일한 문제에 대한 여러 기존 산업 솔루션 및 대체 접근 방식을 강조합니다:

엔터프라이즈 스토리지 솔루션

엔터프라이즈급 스토리지 시스템은 종종 대용량 NVRAM(8GB 이상) 버퍼를 사용하여 쓰기 증폭을 완화합니다. 이러한 버퍼는 쓰기를 통합하고 대규모 순차 청크로 SSD에 플러시하여 사실상 소프트웨어 정의 NoWA 계층으로 작동합니다.

Zoned Namespaces (ZNS) 및 Zoned XFS

일부 전문가들은 데이터 배치 목표가 파일 시스템 계층에서 Zoned XFS를 통해 추구되고 있다고 지적했습니다. 이는 Zoned SSD용으로 특별히 설계된 Linux 파일 시스템으로, 호스트가 데이터 배치를 보다 명시적으로 관리할 수 있게 하여 FTL의 내부 오버헤드를 감소시킵니다.

SMR 하드 드라이브

흥미롭게도, Shingled Magnetic Recording(SMR) 하드 드라이브와 유사점을 찾을 수 있습니다. SMR 드라이브는 트랙 겹침으로 인한 성능 패널티를 피하기 위해 대규모 순차 쓰기가 필요합니다. SMR 드라이브에 대한 최적화는 종종 SSD 최적화에 사용되는 전략을 반영합니다.

결론

WAF 1을 달성하는 것은 데이터베이스 성능에 있어 중요한 이정표입니다. 이 연구가 일반 하드웨어에서 SSD에 쓰는 새로운 방식을 위한 청사진을 제공하지만, 데이터베이스 스토리지 엔진의 미래는 하이브리드 접근 방식에 있을 수 있습니다: Zoned XFS의 명시적 데이터 배치를 NoWA 패턴의 설계 원칙과 결합하여 하드웨어의 물리적 현실을 진정으로 이해하는 스토리지 시스템을 만드는 것입니다.

Sources