매니코어 서버에서 F2FS 파일 시스템의 메타데이터 I/O 확장성 연구
Enabling Metadata I/O Scalability in F2FS on a Manycore Server
- 주제어 (키워드) 운영체제 , 매니코어 , F2FS 파일 시스템
- 발행기관 서강대학교 일반대학원
- 지도교수 김영재
- 발행년도 2022
- 학위수여년월 2022. 2
- 학위명 석사
- 학과 및 전공 일반대학원 컴퓨터공학과
- 실제 URI http://www.dcollection.net/handler/sogang/000000066645
- UCI I804:11029-000000066645
- 본문언어 한국어
- 저작권 서강대학교 논문은 저작권 보호를 받습니다.
초록 (요약문)
매니코어 서버는 수백개의 Core를 병렬적으로 I/O 작업에 동원하여 로컬 파일 시스템에 대해 높은 I/O Throughput을 기대할 수 있다. 그러나 실제로 매니코어 서버의 Core들이 동시에 I/O를 수행하는 경우 로컬 파일 시스템이 이를 효율적으로 처리하지 못하여 Core 수에 비례하여 Throughput이 증가하는 성능 확장성을 보여주지 못한다. 파일 시스템이 처리하는 I/O는 크게 데이터 I/O와 메타데이터 I/O로 나눌 수 있다. 이중 기존 연구들은 데이터 I/O 성능 확장성을 위해 범위 기반 Lock을 적용하여 단일 파일에 대한 병렬 읽기/쓰기를 가능하게 하였다. 그러나 메타데이터 I/O는 많은 연구 가 이루어지지 않은 상태이며 여러 Core들이 공유하는 자료구조로 인해 성능 확장성을 보이지 못한다. 공유 자료구조에서는 많은 Core들이 Lock으로 인해 Block된다. 매니 코어 환경에서는 수많은 Core들의 Block되어 전체 CPU Cycle을 낭비시켜 병렬적인 메타데이터 I/O 수행을 막아 확장성이 저해된다. 대표적인 로컬 파일 시스템 중 하나인 F2FS에서 Core들이 개별 디렉토리에 create()를 수행하는 워크로드에서는 20 Core 이후에 Throughput이 유지되어 성능 확장성을 볼 수 없었다. 또한 Core들이 개별 디렉토리에 unlink()를 수행하는 워크로드에서의 Throughout은 1 Core부터 40 Core까지 Throughput이 약 0.6배 감소하여 역시 확장 성이 제한되었다. 본 논문에서는 매니코어 환경에서 F2FS의 create()와 unlink()를 분석하였으며 두 작업의 확장성 병목은 파일 메타데이터의 주소를 관리하는 NAT (Node Address Table)에서 발생함을 밝혔다. 각각을 개선하기 위해 create() 시 병렬적으로 NAT에 접근이 가능하게 하는 Per-Core NAT와 unlink() 시 수행하는 Free NID Scan을 최적화하는 Compact Free NID Scan을 제안한다. 우리는 제안한 기법을 적용한 F2FS를 40 Core 서버에서 FxMark를 이용하여 평가하였다. 실험 결과 개별 디렉토리에서의 create() 워크로드에서 기존 F2FS 대비 40 Core에서 약 1.6배 Throughput이 증가하였고 확장성을 보였다. 더불어 개별 디렉토리에서의 unlink() 워크로드에서는 F2FS 대비 40 Core에 서는 41배 Throughput이 증가하고 확장성을 보였으며 공유 디렉토리에서의 unlink() 워크로드에서는 약 3배의 성능 향상을 보였다
more초록 (요약문)
Manycore servers can expect high I/O throughput for Local File System by mobilizing hundreds of cores for I/O operations in parallel. However, if the cores of the Manycore server perform I/O concurrently, the Local File System does not process this efficiently, so the performance scalability that increases the throughput in proportion to the increase in the number of cores is limited. Among them, recent studies made parallel read/write possible for shared file by applying range-based lock for data I/O performance scalability. I/O that is processed by File System can be largely divided into Data I/O and Metadata I/O. However, Metadata I/O has not been studied much, and Scalability is limited due to the data structure shared by several cores. In this shared data structure, Lots of Cores are blocked by a lock. In Manycore environment, Blocking of lots of Cores leads to lack of Scalability by the waste of entire CPU Cycle and prevent parallel metadata I/O. F2FS that is one of the representative Local File System, Performance scalability could not be seen in the workload where cores perform create() in private directories as throughput was maintained after 20 Core. In addition, Scalability was also limited in the workload in which the cores perform unlink() in individual directories as the throughput from 1 Core to 40 Core decreased by about 0.6 times. In this paper, we analyzed create() and unlink() of F2FS in the Manycore environment and revealed that the Scalability bottleneck of the two operations occurred in NAT (Node Address Table), which manages the address of File Metadata. To improve each, we propose Per-Core NAT, which enables parallel NAT access at create(), and Compact Free NID Scan, which optimizes Free NID Scan at unlink(). We evaluated the proposed design using FxMark in 40 Core servers. As a result, Our proposed design shows Scalability and the increase of throughput by about 1.6 times at 40 Core compared to the baseline F2FS in the create() workload in the in dividual directory. In addition, in the unlink() workload in the individual directory, Our proposed design shows Scalability and the increase of throughput by 41 times compared to Baseline F2FS. And the performance improved by about 3 times in the unlink() workload in the shared directory compared to Baseline F2FS.
more