검색 상세

매니코어 환경에서 F2FS 파일 시스템의 단일 파일 I/O 병렬화

  • 발행기관 서강대학교 일반대학원
  • 지도교수 김영재
  • 발행년도 2020
  • 학위수여년월 2020. 2
  • 학위명 석사
  • 학과 및 전공 일반대학원 컴퓨터공학과
  • UCI I804:11029-000000064864
  • 본문언어 한국어
  • 저작권 서강대학교 논문은 저작권보호를 받습니다.

초록/요약

매니 코어 환경은 병렬처리를 통해 작업량을 높일 수 있기 때문에 고성능 시스템에서 널리 사용되고 있다. 특히 I/O 연산이 많은 데이터베이스 어플리케이션에서는 매니 코어 환경을 이용한 성능 증가를 기대할 수 있다. 이러한 매니 코어 환경에서는 빠른 I/O 수행을 위해 저장장치로 고성능의 SSD를 사용한다. SSD는 내부 병렬성을 활용하는 고성능의 저장장치로 HDD에 비해 빠른 I/O 성능을 기대할 수 있다. 그리고 이에 최적화된 파일시스템인 F2FS를 활용하여 I/O의 병렬 수행을 기대할 수 있다. 그러나 매니 코어 환경에서 단일 파일 I/O를 수행하는 경우 F2FS는 성능이 확장하지 않는다. 본 논문에서는 이러한 문제점의 원인으로 세가지를 밝혔다. 첫째, F2FS 파일 시스템에서 사용하는 파일 단위의 Inode Mutex Lock이 모든 I/O를 Serialize 한다. 따라서 각 쓰레드가 다른 데이터 블록에 대해 I/O를 수행하는 경우에도 I/O는 병렬적으로 수행하지 못한다. 둘째, 첫째에서 언급한 I/O Serialization 문제를 해결 하기 위해 도입한 Interval Tree 기반의 Range Lock에서 Lock Contention이 발생한다. 특히 Interval Tree에서 노드 삽입/삭제시 트리 단위로 사용하는 Mutex Lock이 F2FS의 I/O 성능 확장성을 크게 감소시킨다. 셋째, 여러 쓰레드가 단일 파일에 대해 I/O를 수행하는 경우 커널 쓰레드가 Page Cache에 있는 F2FS의 인덱스 자료구조에 접근하는데 이 때 인덱스 자료구조에서 Lock Contention이 발생한다. 본 논문은 이에 대한 해결책으로 다음과 같은 설계를 제안한다. 첫째, 단일 파일 I/O를 병렬화 하기 위해 F2FS의 Inode Mutex Lock을 Range Lock으로 대체한다. Range Lock은 파일 전체가 아닌 접근하고자 하는 일부분 만을 Lock함으로써 단일 파일 I/O를 병렬화 할 수 있다. 둘째, Interval Tree 기반의 Range Lock에서 발생하는 Lock Contention을 최소화하기 위해 Lightweight한 Atomic 연산 기반 Range Lock을 적용하였다. 셋째, Page Cache에서 발생하는 Lock Contention을 해결하기 위해 F2FS의 인덱스 자료구조를 캐싱하는 Node Cache를 제안한다. 제안한 기법을 적용한 F2FS를 120개 코어의 IBM 서버에서 FxMark 벤치마크를 사용하여 확장성을 실험하였다. 실험 결과 수정한 F2FS는 기존 F2FS에 비해 단일 파일 쓰기 연산에서 최대 24.6배, 단일 파일 읽기 워크로드에서 최대 8.1배의 성능 증가를 보였다.

more