Linux 7.2에 적용될 Btrfs 변경 사항으로 매우 유의미한 성능 향상 달성
요약
Linux 7.2에 적용될 Btrfs의 Direct I/O(DIO) 쓰기 직렬화 문제를 해결하여 성능을 대폭 향상시킵니다. 마운트 API 전환 과정에서 누락된 플래그를 수정함으로써 파일 시스템 처리량을 개선합니다.
핵심 포인트
- Btrfs의 DIO 쓰기 직렬화 오류 수정
- 개인 테스트 환경에서 처리량 약 59% 향상
- Intel 테스트 결과 약 12% 성능 향상 확인
- Linux 7.2 병합 윈도우에 반영 예정
Linux 7.2에 적용될 Btrfs 변경 사항으로 매우 유의미한 성능 향상 달성

Linux 7.2에 도입될 Btrfs의 변경 사항은 Direct I/O (DIO) 쓰기 작업을 강제로 직렬화(serialize)하지 않도록 하는 것입니다. Meta의 Mark Harmstone은 Linux 커널의 새로운 마운트 API (mount API)로 파일 시스템을 전환하는 과정에서, 2023년부터 Btrfs가 DIO 쓰기를 실수로 직렬화하고 있었다는 사실을 발견했습니다. Harmstone은 이번 변경 사항에 대해 다음과 같이 설명했습니다.
"2023년에 btrfs가 새로운 마운트 API로 전환하기 전에는, btrfs_mount_root()에서 SB_NOSEC를 설정했습니다. 이 플래그는 VFS(Virtual File System)에 파일 시스템에 보안 확장 속성(security xattrs)이 없는 파일이 있을 수 있음을 알려주어, 몇 가지 최적화를 수행할 수 있게 합니다.
불행히도 전환 과정에서 이 부분이 누락되었고, 이는 btrfs inode에 대해 IS_NOSEC가 항상 false를 반환함을 의미합니다. 결과적으로 btrfs_direct_write() 호출은 항상 inode 락(lock)을 독점적으로 획득하게 되며, 이는 동일한 파일에 대한 DIO 쓰기가 직렬화됨을 의미합니다.
제 컴퓨터에서는 이 한 줄의 변경만으로 DIO 처리량(throughput)이 약 59% 향상되었습니다."
826 MB/s에서 1311 MB/s로 처리량이 거의 60% 향상된 매우 훌륭한 성과입니다.
Intel의 커널 테스트 로봇(Kernel Test Robot) 또한 자체 테스트와 하드웨어 환경에서 이 변경 사항을 통해 Btrfs의 성능이 약 12% 향상되었다고 보고하고 있습니다.
해당 패치는 현재 "-next" 코드에 포함되어 있으며, 6월에 진행될 Linux 7.2 병합 윈도우(merge window)와 함께 이 Btrfs 변경 사항이 반영될 것으로 보입니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Phoronix의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기