파일 시스템 스케일러빌러티 연구

매니코어OS
이동: 둘러보기, 검색

그 동안 많은 운영체제 연구가 진행되었지만, 파일 시스템의 스케일러빌러티에 대한 연구는 없었다. 그 이유는 파일의 견고한 저장 관리와 상대적으로 느린 디바이스대비 파일 처리량 향상에 주로 연구의 초점을 두었기 때문이다. 따라서 여기에서는 그 동안 다루지 않았던 파일 시스템의 스케일러빌러티를 다루고자 한다. 즉 코어수 증가에 따라 파일 성능도 증가하는 파일 시스템을 연구하며, 두 가지 방법으로 접근한다.


문제점 분석

예전과 달리, 이제는 NVMe 등과 같은 빠른 디바이스가 활용될 것으로 보고 scalable한 파일 시스템 연구가 필요하다. 그 동안 파일 시스템 분야의 연구는 데이터 관리의 견고성과 처리량 향상에 초점이 되었다. 추가적으로 이젠 매니코어 시대를 대비하여 파일 시스템 성능의 스케일러빌러티 문제도 다루어야 할 분야이다.

먼저 리눅스 파일 시스템 구현물의 흐름을 파악하기 위해서 70여개 파일 시스템을 비교하였다. 비교의 대상은 파일 시스템의 흐름과 locking 방식 등이다. 보다 편리하고 정확하게 비교 분석하기 위해서 분석 도구(JUXTA)를 만들어 진행한다. 이 활동을 통해 아래과 같이 130여개 이상의 버그를 발견하고 버그 패치를 리눅스 커뮤니티에 제출하였습니다.

<Juxta에 의해 발견된 버그 리스트(Linux kernel 4.2-rc2)>

RTENOTITLE
두번째로 리눅스 파일 시스템의 스케일러빌러티 실험을 진행하였다. Fxmark 벤치마크 슈트를 만들어 다양한 실험을 진행 한 결과, 다음과 같은 리눅스 파일 시스템의 병목원인과 해결방안을 찾았다.
RTENOTITLE

또 한 가지의 교훈으로 그 동안 운영체제 설계에서는 locality와 cache hit를 고려하여 자료구조 등을 설계하였지만, 이 점들이 매니코어 시스템에서는 오히려 성능 저하의 원인이 되고 있다.

향후 계획

상기의 문제점 분석을 통하여 다음과 같은 절차와 방법으로 스케일러블 파일 시스템을 개발하고자 한다.

  • 먼저, 비휘발성 메모리를 저장시스템으로 사용하므로써 파일 시스템의 많은 기능을 제거하고 잠금 문제를 해결하는 메모리 기반 파일 시스템을 개발(메모리기반 파일 시스템 부분을 참조)
  • 두번째 방법은 새로운 스케일러블 spinlock과 block synchronization primitive를 개발하여 기존 리눅스 파일 시스템에 적용하고, 다음으로 저널링 등 순차적인 기능을 스케일러블하게 개선하는 방법으로 스케일러블 파일 시스템을 개발

결과물

공개 소프트웨어

논문


*메모리 기반 파일 시스템 개발

*블록 레이어 스케일러빌러티

*스케일러블 비휘발성 메모리 파일시스템

*매니코어에서 확장성 있는 F2FS 연구