이원종군은 File system과 storage에 대한 신 기술들과 유구의 기업들이 투자하는 연구 트랜드를 파악하고 현재 진행중인 Journal Conflict 문제에 대한 의견을 받기 위하여 2019 USENIX conference on File and Storage Technologies(FAST’ 19)에 참석하였다.

IMG_1041

이번 FAST’19는 Boston에 위치한 Sheraton Boston 호텔에서 열렸다. FAST는 Google, Amazon, NetpApp 등 세계적인 IT 기업들이 후원하고  스토리지 시스템, 보안, 메모리 가상화 등 컴퓨터 시스템과 관련한 다양한 주제를 다루는 저명한 학회이다.

이번 학회 출장은 개인적으로 첫 해외 출장이라 모든 것이 새롭고 신기했다. 학회장의 분위기, 메이저 학회의 진행 그리고 Google, Amazon 등 유명한 기업의 직원들이 논문의 내용에 대해 질문하기도 하였다. 해외의 유명 인사들도 보았고 국내의 시스템을 연구하시는 교수님들도 많이 보았다. 학회에 참석할수록 많은 동기부여가 되었다.

이번 학회에는 파일시스템과 관련한 논문이 3편 게재되었다. 하지만 아쉽게도 저널링과 관련한 논문은 없었고 VFS, reference count, 암호화와 관련한 논문들이었다. 그렇기 때문에 이번 학회를 통해 나의 연구 분야가 아닌 NVM, 메모리 시스템 등 다른 분야에 대해서도 공부하여 견문을 넓히고자 하였다.

 

첫 번째 논문은 캘리포니아 대학교에서 발표한 “Ziggurat: A Tiered File System for Non-Volatile Main Memories and Disks”라는 논문이다. 이 논문에서 소개하는 계층적 파일시스템인 Ziggurat은 NOVA파일시스템을 기반으로 한다. Ziggurat은 NVMM(Non-Volatile Main Memory)을 기존의 스토리지와 함께 사용하여 스토리지의 성능과 capacity를 NVMM의 성능과 capacity와 유사하게 만들었다. NVMM의 사용은 필연적으로 데이터를 어떻게 분배해야 하는가에 대한 설계가 동반되어야 한다. Ziggurat은 NVMM의 이점을 최대한으로 활용하기 위해 필요한 data placement와 data migration을 집중적으로 설계하였다. Ziggurat은 두가지 predictor를 사용하여 write 요청을 write size, application access patterns 등에 따라 NVMM, DRAM, Disk에 분배한다.  Synchronicity Predictor는 데이터가 곧 디스크로 동기화가 될것인지를 예측한다. Write size predictor는 앞으로 쓰일 데이터의 크기가 큰 지를 판단한다. 두가지 predictor를 통해 write size가 크고 동기화가 많이 남은 data들은 Main memory에 있다가 Disk로 옮겨지고 그렇지 않은 경우는 NVMM에 쓰이는 방식이다. 또한 NVMM의 공간확보를 위해 migration을 해야 한다. NVMM의 파일 중 가장 cold 파일에 가까운 파일을 migration의 대상으로 선택한다. 이 논문의 발표를 들으면서 VM이 있다면 저널링 또한 매우 효율적인 방식으로 진행될 수 있겠다는 생각을 했다. 로깅을 persist memory에 하고 checkpoint만 스토리지에 한다면 더 효율적인 저널링이 될 것 같다.

Zigg

 

두 번째 논문은 “Fully Automatic Stream Management for Multi-Streamed SSDs Using Program Contexts”라는 서울대학교의 김지홍 교수님 연구실에서 발표한 논문이다. 이 논문은 현재 multi-streamed SSD의 효율을 최대한 끌어낼 수 있는 stream management solution이 없다는 문제에서 시작한다. 특히 현재 stream management를 완벽히 자동화하여 구현된 솔루션이 없다. 이 논문에서 제안한 PCStream은 유저스택의 정보를 참고하여 fully automatic stream management를 구현하였다. 핵심 아이디어는 유저스택의 return address를 back tracing 함으로써 어떤 함수들로부터 호출되었는지 추적하고 계산한다. 해당 작업을 통해 I/O의 특성을 구분하고 lifetime을 계산하여 블록을 stream을 메핑할 수 있다. 이 작업은 커널을 통해 완벽히 자동적으로 실행될 수 있다. 유저 스택과 return address를 통해 back tracing이 가능하다는 것은 xv6에서 실습을 통해 배운적이 있다. 내가 아는 기술이 실제로 적용되어 하나의 완벽한 논문이 탄생했다는 것이 감명깊었고 신선하였다. 아무리 call path가 길어도 back tracing은 메모리에서만 하는 작업이기 때문에 오버헤드가 적다고 할 수 있다. 적은 오버헤드로 메모리에 비해 상대적으로 오랜 시간이 걸리는 디스크에서의 작업을 효율적으로 만든 좋은 논문인 것 같다.

 

세 번째 논문은 한양대학교 정형수 교수님 연구실에서 발표한 “Pay Migration Tax to Homeland: Anchor-based Scalable Reference Counting for Multicores”라는 논문이다. 여러 파일시스템의 확장성의 문제가 되는 부분 중 하나는 데이터 및 메타데이터 관리에 사용되는 reference count 때문이다. 이 논문은 이 문제를 해결하기 위해 논문은 코어 별로 유지하고 있던 local reference counter에 대한 해쉬 테이블을 anchor counter와 병합하는 기법인 PAYGO(pay-as-you-go)를 제안한다. reference count와 관련해서 공간과 시간 간의 tradeoff가 존재한다. PAYGO는 anchor counter를 이용하여 무시할만한 time overhead로 scalable counting과 space efficiency를 얻었다. PAYGO는 anchor counter를 통해 값이 0인 local counter를 바로 회수하도록 한다. 이 기법은 코어가 접근하는 오브젝트의 수가 많아질 때 반드시 필요하다. 스레드가 migration 되더라도 anchor 된 코어에서 anchor counter를 이용하도록 하였다. 이 방식을 통해서 모든 로컬 카운터 값을 확인할 때 0이 아닌 값을 만나면 바로 중지할 수 있다.

 

KakaoTalk_20190327_222330540

 

이번 학회 출장은 정말 신선한 경험이었다. 나의 연구분야에 대한 최신 논문은 없었지만 더 많은 것을 얻어엇다. 전공 공부와 영어 공부에 대한 많은 필요성을 느낄 수 있었고 나도 이 학회장에서 발표하고 싶다는 동기가 생겼다. 다음에 오게 된다면 꼭 발표자로서 학회에 참석하고 싶다.