이도근 군은, 비 휘발성 메모리 및 I/O 서브시스템 관련 최신 연구 동향 파악 및 연구 역량 증진을 위해 ACM Symposium on Operating Systems Principles (SOSP) 2017 학회에 참석 하였다. SOSP는 운영체제와 관련된 모든 이슈를 다루는 대규모 학술 대회로서 세계 유수의 연구실과 기업들이 참여하는 학회이다.
이번 SOSP 2017은 10월 28일부터 31일까지 4일간 진행되었으며, 총 13개의 세션에서 39개의 논문이 발표되었다. 개인적으로는 네트워크 분야의 이슈들(scalability, in-network computing, resource management 등)에 많이 치중되어 있다는 생각이 들 정도로 이번 년도 학회에는 해당 이슈들에 대한 논문들이 많이 발표되었다.
본인이 집중한 분야는 스토리지 시스템 분야였다. Strada[1] 논문은 I/O스택에서 커널레이어 부분의 동작들이 바틀넥임을 실험을 통해 증명하였고, 이를 바이패스하기 위하여 파일시스템을 유져 레벨의 동작과 커널 레벨의 동작을 담당하는 두 부분으로 나누어 파일시스템의 성능을 향상시킨 논문이다. 이때, 유져레벨의 동작과 커널레벨의 동작을 각기 담당하는 LibFS와 KernelFS는 성능의 극대화를 위해 각기 다른 미디어(DRAM, NVM and Storage)에 접근하도록 설계되어 있다. 크게 보면 유져레벨의 동작은 LibFS에 의해 NVM에 로그 형식으로 기록되고 KernelFS에 의해 NVM공유영역 혹은 스토리지로 데이터 이동이 이루어진다. 이때 KernelFS가 하는 동작은 파일시스템의 fsync와 유사한 동작을 하며 커널레이어의 바이패스를 위해 load()/store() 명령을 직접 사용한다.
ScaleFS[2] 논문은 코어가 많아질수록 파일시스템의 성능이 증가해야 하는데 어느 점에 수렴함을 실험을 통해 증명하였고, 이를 해결하기 위한 솔루션을 제시하였다. ScaleFS가 집중한 부분은 서로 다른 프로세스가 서로 다른 영역에 입출력을 하는데도 입출력 성능이 좋아지지 않는 부분이었다. 이를 해결하기 위해 ScaleFS는 파일시스템을 MemFS와 DiskFS의 두 부분으로 나누어 메모리 입출력과 디스크 입출력을 각기 담당하도록 하였다. MemFS는 코어마다 존재하는 오퍼레이션 로그에 입출력 명령을 기록하며, DiskFS는 코어마다 존재하는 오퍼레이션 로그를 모아서 스토리지에 기록하는 역할을 한다. 이때 코어마다 존재하는 오퍼레이션들의 충돌을 막기 위해 타임스탬프를 같이 기록한다.
NOVA-Fortis[3] 논문은 기존의 NOVA 파일시스템이 로그 기반의 메타데이터 일관성 보장을 지원하던 것을 Fault-tolerance를 지원을 위해 파일시스템 아이노드에 스냅샷을 사용한 NVM용 파일시스템에 관한 연구이다. 아이노드가 업데이트 될 때 이전 스탭샷 ID를 증가시키고 현재 스냅샷 ID를 각 로그에 같이 기록하게 하여 스냅샷ID마다의 데이터를 접근할 수 있도록 한다. 스냅샷을 지우면 해당 스냅샷이 포인팅하고 있는 데이터들은 가비지가 되며 가비지 수집을 통해 시스템에 회수된다.
첫날 열린 포스터 세션에서는 세션의 발표자들 외에 포스터 세션에만 참가한 연구진들도 모두 발표를 하였다. 본인은 ScaleFS 저자에게 ‘싱글 파일에 대한 scalability는 어떻게 보장을 하는가?’, ‘코어마다의 타임스탬프 동기화는 어떻게 보장하는가?’ ‘파일시스템 메타데이터에 걸리는 락이 scalability를 방해하지는 않는가?’의 3가지 질문을 하였고 각각 ‘그 부분은 이 연구에서 커버하는 부분이 아니다.’, ‘타임스탬프 동기화는 하드웨어에서 동기화를 해주기 때문에 소프트웨어적으로 보장하는 것은 없다.’, ‘디렉토리 엔트리는 해시테이블로 관리되고, 테이블 전체가 아닌 엔트리마다 락을 관리하기 때문에 큰 방해가 되지는 않는다.’ 라는 답변을 받았다.
Strada 논문의 저자에게는 ext4-dax와 nova간의 파일시스템 성능 비교 데이터에 대해 ‘성능 차이 발생의 원인은 무엇인가?’라는 질문을 하였고, ‘ext4-dax같은 경우 저널링의 존재 때문에 write amplication이 발생하여 성능이 좋을 수 없다.’ 라는 답변을 받았고, 또한 ‘커널 바이패스를 위해 memory-mapped file을 사용하였느냐?’라는 질문에는 ‘직접 load()/store()명령어를 이용하여 파일시스템 read()/write()를 구현하였다.’는 답변을 받았다.
MittOS[4]의 저자에게는 ‘클라이언트의 입출력 요청이 기아상태에 빠질 수 있을 것 같은데, 입출력 스케쥴링 혹은 로드 밸런싱을 따로 하는가?’라는 질문을 하였으나, 저자가 기아상태(Starvation)을 잘 이해하지 못하는 것 같았다. 저자의 답변으로는 ‘모든 서버가 사용 불가능인 상태는 관찰되지 않았다.’ 정도의 답변만 받을 수 있었다.
이번 SOSP 2017 학회에서는 모든 세션에 참석하여 주요 연구 동향을 파악하였고, 포스터 세션에서는 여러 저자들과 만나 질문을 주고 받으면서 세계 유수의 연구 기관들의 최신 연구 이슈에 대해서 확인하였다. 이번 학회에서는 상대적으로 우리 연구실의 메인 분야인 메모리 시스템과 스토리지에, 비 휘발성 메모리 분야의 이슈들이 적었고, 운영체제 분야의 메인 이슈는 현재 네트워크와 머신 러닝에 있다는 것을 확인하였다. 비록 관련 주제들은 적었지만 이번 학회의 몇몇 논문에서 보여준 이슈와 해결 방안들을 본인의 연구 주제에 어떻게 적용할지에 대해 좀더 생각해보는 계기가 되었다. 또한 좋은 논문을 써서 좋은 학회에 개제함을 목표로 매일 정진해야 할 필요성을 다시 한번 느꼈다.
참고문헌
[1] Youngjin Kwon, Henrique Fingler, Tyler Hunt, Simon Peter, Emmett Witchel (UT Austin), and Thomas Anderson (University of Washington), “Strata: A Cross Media File System”, in Proc of ACM SOSP 2017
[2] Srivatsa S. Bhat (MIT CSAIL and VMware), Rasha Eqbal (MIT CSAIL and Apple), Austin T. Clements (MIT CSAIL and Google), and M. Frans Kaashoek, Nickolai Zeldovich (MIT CSAIL), “Scaling a file system to many cores using an operation log”, in Proc of ACM SOSP 2017
[3] Xu, Jian, et al. “NOVA-Fortis: A Fault-Tolerant Non-Volatile Main Memory File System.” , in Proc of ACM SOSP 2017
[4] Mingzhe Hao, Huaicheng Li, Michael Hao Tong, Chrisma Pakha, Riza O. Suminto, Cesar A. Stuardo, Andrew A. Chien, and Haryadi S. Gunawi (University of Chicago), “MittOS: Supporting Millisecond Tail Tolerance with Fast Rejecting SLO-Aware OS Interface”, in Proc. of ACM SOSP 2017