최경열 군은, 스토리지와 파일시스템 관련 최근 동향 파악 및 역량 증진을 위하여 FAST 2017에 참석 하였다.
해당 국제 학술대회 FAST (USENIX Conference on File and Storage Technologies)에서는 매년 스토리지 분야에 특화된 다양한 논문들이 발표되며 이들 중에서 발표되는 논문들은 세계적으로 인정받는 연구 내용이라고 인정받을 만큼 국제적으로 명성이 높은 학회이다. 이번 FAST 학회에 참가하여 WiPs (Work-in-Progress) 발표를 통해 현재 연구실에서 진행 중인 연구 내용을 소개하고 또한 다른 연구실에서 진행 중인 최신 연구 내용을 확인하는 과정을 통해 현재 스토리지 관련 기술 발전 동향을 파악하고 이를 학습할 수 있었다. 동시에 현재 스토리지 분야의 요구사항(Requirement)을 파악해 관련된 주제로 연구 방향을 설정하기 위한 동기 부여의 기회를 가질 수 있었다
이번 FAST’17 학회에서는 27개의 구두 논문, 그 외 수십개의 WiPs & Poster Session의 논문들이 발표되었다. 해당 논문들은 모두 파일 시스템 및 스토리지 관련 분야의 Session들로 분류되어 있으며 (Garbage, The System, Edward Sharpe and the Magnetic Zeros, Corruption, Framework, Solid State Records, Faster Faster, Open Channel SSD) 각 Session 별로 3~4개의 논문이 발표되었다. 학회 발표 논문들 중에서 흥미를 가진 몇몇 논문들에 대해 간단히 요약하면 다음과 같다.
Graphene: Fine-Grained IO Management for Graph Computing [1]의 경우, 디스크의 그래프 데이터를 외부 메모리 처리와 같이 유지하면서 프로그래밍의 용이성과 높은 IO 성능 (메모리 내 처리)을 달성하기 위해 IO 요청 중심 프로그래밍 모델, 비트 맵 기반 비동기 IO, 데이터 및 작업 부하 분산 등 새로운 기술로 구성된 Framework를 개발하였다.
Application Crash Consistency and Performance with CCFS [2]는 어플리케이션 레벨의 Crash Consistency 보장을 위한 솔루션으로 CCFS (Crash-Consistent File System)을 제안하고 있으며 CCFS에서는 새로운 추상화 단위인 ‘stream’을 통해 각각의 어플리케이션 처리 동작을 stream 단위로 분리시키고 동기화 과정을 스트림 단위로 개별적으로 처리하게 만들어 어플리케이션 레벨의 Crash Consistency를 향상시켰다.


또한 이번 FAST’17 학회에서는 현재 진행 중인 연구 내용을 학회 참가자들에게 소개하는 WiPs & Poster Session을 통해 “Concurrent Journaling for Barrier-enabled I/O Stack” 이라는 제목의 연구내용을 발표할 기회를 가질 수 있었다. Poster Session에서는 18:00 ~ 20:00까지 저녁 시간 동안 홀에서 제공하는 음식들을 먹으면서 포스터 내용에 대한 설명 및 질문에 대한 답변을 가졌으며 WiPs Session에서는 5분의 발표 시간 동안 짤막하게 연구내용을 소개했다. 해당 세션 내에서 연구 내용을 설명하고 그에 대한 질문 및 코멘트를 받는 과정 속에서 연구 내용을 좀더 정밀하고 견고하게 만들 수 있는 피드백을 얻을 수 있었다. 해당 코멘트 내용을 요약하면 다음과 같다.
Q1. Barrier-enabled I/O Stack에서는 순서 보장을 위해서 사용되었던 플러시 명령을 베리어 명령으로 대체하였다고 했는데 해당 베리어 기반의 순서 보장 기능은 어떠한 방식으로 사용 가능한가?
A1. 우리는 기존 플러시 기반 동기화 함수 fsync() & fdatasync() 함수를 기반으로 새로운 프로그래밍 모델 fbarrier() & fdatabarrier()를 개발하였다. Barrier-enabled I/O Stack에서는 영속성 보장 (Durability Guarantee)이 필요할 경우에는 플러시 기반의fsync() & fdatasync()를 사용하고 순수한 순서 보장 (Ordering Guarantee)만이 목적일 경우에는 fbarrier() & fdatabarrier()를 사용하면 된다.
Q2. 순서 보장 프로그래밍 모델 fbarrier()에서는 모든 플러시 커맨드는 베리어 커맨드로 대체되는가?
A2. 그렇다. fbarrier()는 순서 보장을 위한 프로그래밍 모델이기 때문에 전체 동작 과정에서 사용되는 플러시가 모두 베리어로 대체된다.
Q3. 실제 플러시 명령을 베리어 명령으로 대체한 것 외에 Barrier-enabled I/O Stack의 Contribution이 있는가?
Q4. 베리어 명령은 스토리지 레벨의 쓰기 명령들의 순서를 보장해주지만 이 것만으로 입출력의 완벽한 순서 보장은 이룰 수 없다. 이는 입출력 스택의 Orderless 특성에 기인한 것으로 어플리케이션에서 요청되는 입출력 요청은 입출력 스택을 거치는 과정에서 입출력 스케줄러의 스케줄링, 디스패치 큐의 명령어 디스패치 과정 등 다양한 요인들로 인해 그들간의 순서가 뒤바뀔 수 있다. 우리는 이러한 Reordering 요건을 고려하여 베리어 명령을 통해 순서가 보장되어야 하는 입출력 요청들이 입출력 스택으로 인해 순서가 뒤바뀌지 않도록 하는 순서 보장 입출력 스택을 설계하였다. 또한, 단순히 플러시 명령을 제거함에도 남게 되는 DMA Completion, 즉 Transfer Overhead를 제거하기 위해 전체 저널링 과정을 트랜잭션 관련 블록들을 디스패치해주는 Dispatch Phase, 해당 블록들의 DMA 완료를 대기하였다가 이후 과정을 처리해주는 Commit Phase로 나누어 개별적인 쓰레드로 처리해주는 병행 저널링 기법을 개발하였다.
이번 FAST’17 학회 참석은 스스로의 연구 개발에 자극제 역할을 해주었다. FAST 학회에서 발표된 여러 논문들을 통해 현재 스토리지 & 파일시스템 개발의 최신 동향을 파악할 수 있었으며 동시에 FAST 학회에서 발표한 WiP 주제에 대해서 현지 학회 참가자들에게 받은 코멘트는 연구 및 논문 작성에 있어서 좋은 피드백이 되어줄 것으로 기대하고 있다. 이번 학회 참가를 통해 얻을 수 있었던 경험을 살려 열심히 연구를 진행해 나가고자 한다.
[1] Hang Liu, et al, “Graphene: Fine-Grained IO Management for Graph Computing”, In Proc. of USENIX FAST, 2017
[2] Thanumalayan Sankaranarayana Pillai, et al, “Application Crash Consistency and Performance with CCFS”, In Proc. of USENIX FAST, 17