Linux 7.3, PCIe Gen5 NVMe SSD의 소규모 I/O '심각한 병목 현상' 해결 예정
요약
Linux 커널 7.3에서 PCIe Gen5 NVMe SSD의 소규모 I/O 병목 현상을 해결하기 위한 새로운 직접 I/O(DIO) 경로가 도입됩니다. IOmap 프레임워크의 오버헤드를 줄여 4K 랜덤 읽기 성능을 크게 향상시켰습니다.
핵심 포인트
- PCIe Gen5 SSD의 4K 랜덤 읽기 시 발생하는 소프트웨어 오버헤드 해결
- IOmap 상태 기계 및 메모리 할당 오버헤드를 줄이는 간소화된 DIO 경로 도입
- 4K 랜덤 읽기 테스트에서 IOPS가 1.92M에서 2.19M로 향상됨
- EXT4 및 XFS 파일 시스템에서 IO_uring 사용 시 최대 10% 성능 이점
Linux 7.3, PCIe Gen5 NVMe SSD의 소규모 I/O '심각한 병목 현상' 해결 예정

Bytedance 엔지니어 Fengnan Chang은 Gen5 NVMe SSD에서 4K 랜덤 읽기(random reads)를 수행할 때 '심각한 병목 현상(significant bottleneck)'을 발견했습니다. 상당한 소프트웨어 오버헤드가 Linux 커널의 IOmap 프레임워크와 그 직접 I/O 경로(direct I/O path)에서 발생하고 있는 것으로 추적되었습니다. CPU는 메모리 할당과 IOmap 상태 기계(state machine)에 많은 시간을 소비하게 됩니다. 이에 Fengnan Chang은 EXT4 및 XFS를 사용하는 경우처럼, IOmap을 사용할 때 소규모 직접 I/O를 위한 간단한 직접 I/O 경로를 고안했습니다.
이 간단한 DIO 경로는 읽기 요청을 받을 때 I/O 크기가 inode 블록 크기보다 작거나 같을 경우의 IOmap 오버헤드를 줄이는 데 사용됩니다. 또한, inode가 암호화되지 않는 것과 같은 다른 제한 사항도 포함합니다. 이 기능 구현 후, PCIe Gen5 NVMe SSD를 대상으로 한 4K 랜덤 읽기 테스트에서 1.92M IOPS에서 2.19M IOPS로의 점프가 관찰되었습니다. 추가적인 벤치마크에서는 최신 PCIe Gen5 NVMe SSD 스토리지와 함께 IO_uring을 사용할 때, 특히 더 높은 큐 깊이(queue depths)에서 EXT4 및 XFS에 최대 10%까지의 이점을 보여주고 있습니다.
IOmap을 위한 이 간단한 DIO 경로는 VFS 서브시스템의 'fvfs-7.3.iomap' Git 브랜치로 병합되었습니다. 현재 vfs/vfs.git의 '7.3' 브랜치에 대기 중이므로, 올해 후반 Linux 7.3 사이클에서 제출될 것으로 예상됩니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Phoronix의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기