SOSP는 1973년 Unix 논문이 발표되었고, 지금까지 그 명성을 유지하고 있는 저명한 국제 학술대회이다. SOSP는 Scalability, Networking, Kernels, Security, Storage systems 등, 컴퓨터 과학의 전반적인 분야를 다룬다. 우리는 그 중에서도 Storage System과 Scalability 등의 최신 연구 동향을 파악하고, 그 외 분야에 대한 배경 지식을 넓히고자 SOSP ‘17에 참여하였다.

SOSP ‘17은 중국 상해에서 10월 28일부터 10월 31일까지 개최되었다. 총 39편의 논문이 발표되었고, 총 13가지의 세션(Bug hunting, Scalability, In-network computing, Resource management, Kernels, Verification, Potpourri, Adaptation and repair, Privacy, Storage systems, Security, Understanding failures, Data analytics)으로 나뉘어졌다.

SAMSUNG CSC

코어 하나의 성능을 증가시키는 것보다 다수의 코어를 사용하는 것이 더 효율적이다. 그래서 많은 사용자들이 매니 코어 시스템을 사용하는 추세를 보이고 있고, 매니 코어에서 발생하는 문제인 Bottleneck에 의한 Scalability 하락에 대한 연구가 활발히 진행되고 있다. SOSP ‘17 또한 Scalability 세션을 통해 최근 연구 동향에 맞는 모습을 보였다. Scalability 세션에서는 “Scaling a file system to many cores using an operation log”라는 논문이 발표되었다. 하나의 디렉토리에 다수의 프로세스가 서로 다른 파일을 생성할 때, 디렉토리에 대한 병목이 발생한다. 해당 논문에서는, 파일 시스템을 MemFS와 DiskFS로 구분하고, 어플리케이션이 MemFS를 수정하고, sync, fsync 등의 연산을 하면, operation log를 통해 DiskFS에 MemFS의 내용을 반영할 수 있도록 하여 파일 시스템의 확장성을 높인다. MemFS에서 파일과 디렉토리는 해시 테이블, 라딕스 트리 등의 자료구조로 관리되며, 확장성에 유의하여 구현된다. 하지만, 디렉토리는 파일에게 있어서 글로벌 자료구조이다. 글로벌 자료구조를 보호하기 위해서 락이 사용된다. 하지만, 락은 Bottleneck 현상의 주된 원인으로 꼽히는 자료 구조이다. 해당 문제를 어떻게 해결했는지 저자에게 직접 질문하였다. 저자는 디렉토리를 해시 테이블로 관리하며, 해시 테이블 엔트리마다 락을 두었다고 대답했다. 그렇다면, 파일 이름이 같은 경우는 Scalability가 악화되지 않는지 궁금증이 생겨 질문을 하였다. 저자는 그 경우에는 Scalability가 악화된다는 사실을 수긍하였다. 또한, 파일 시스템 메타데이터에 대해서는 어쩔 수 없이 Scalability가 존재할 수 있다고 하였다.

KakaoTalk_20171107_141913702

Scalability와 함께 활발히 연구되고 있는 분야로는 Virtual Machine 분야가 있다. 클라우드 서비스의 수요가 늘고 있기 때문이다. 클라우드 서비스를 운영하는 회사는 자신의 서버에 고립된 환경인 가상 머신을 할당하여 사용자에게 제공해준다. 가상 머신의 효율이 좋을수록 클라우드 서비스의 효율은 좋아진다. 그래서 가상 머신에 대한 연구가 활발히 이루어지고 있다. 특히, 커널 위에 에뮬레이터와 커널을 한번 더 실행해야 하는 일반 가상 머신의 단점을 보완한 Docker에 대한 연구도 활발히 이루어지고 있다. 하지만, Docker 또한 단점이 있다. 우선, 사용자가 원하는 운영체제를 제공하지 못하고, 고립성이 가상 머신보다 떨어진다. 가상 머신의 장점을 유지하면서 Docker보다 좋은 성능을 보이는 가상 머신을 소개하는 논문인 “My VM is Lighter (and Safer) than your Container”라는 논문이 위와 같은 생각을 뒤집게 만들었다. 기존 가상 머신은 Supervisor가 OS를 실행하고, OS에서 원하는 서비스 어플리케이션을 실행하는 방식으로 구현되어 있다. 하지만, 사용하지 않는 OS 및 라이브러리 코드도 메모리에 올라오기 때문에, 느리고, 무거운 단점이 있다. 본 논문은 사용자가 원하는 어플리케이션을 실행하는데 필요한 라이브러리 서비스 프로그램 등만 로드하여 사용하도록 하여, 가상 머신의 성능을 높였다. 하지만, 대부분의 서버 용도로 사용되는 가상 머신이라면, 상당한 라이브러리 및 코드가 메모리에 로드될 것이다. 그리고, 멀티 프로세스 서버라면, 자식 프로세스의 관리가 어려워질 수 있다. 이를 질문하려 했으나, 시간 관리를 잘하지 못하여 질문하지 못했다. 저자에게 메일로 질문하려고 한다.

IMG_20171029_110215

마지막 날인 31일에는 연구실의 주력 분야인 Storage System 세션이 진행되었다. 해당 세션에서는 “Strata: A Cross Media File System”이라는 논문이 발표되었다. 해당 논문은 어플리케이션의 I/O 성능을 NVM, SSD, HDD 스택을 이용하여 높이는 아이디어를 제안한 논문이다. 기존 Block I/O는 굉장히 비효율적이고, NVM과 같은 Byte-addressible 디바이스에 부적합하다. 그래서, 사용자 어플리케이션이 직접 NVM에 접근하여 write를 하도록 하고, NVM의 스와핑 디바이스로 SSD를, SSD의 스와핑 디바이스로 HDD를 사용하도록 하여 어플리케이션의 I/O 성능을 높였다. 해당 파일 시스템은 Atomic Write를 지원한다고 논문에 언급되어 있다. 해당 파일 시스템이 어떤 방식으로 Atomic Write를 지원하는지 저자에게 질문하였다. 저자는 해당 파일 시스템의 Implementation에 대해 자세히 설명해주면서 답변을 해주었다. 프로세스가 생성되면 NVM의 일정 부분을 생성된 프로세스에게 할당해준다. 프로세스는 할당받은 NVM에 write를 한다. 이 때, Atomic Write가 발생하면, 저널 영역처럼 commit mark를 통해 atomicity를 보장한다.

SOSP ‘17이 워낙 많은 분야를 다루기 때문에, 이해하기 힘든 논문도 있었다. 하지만, 자신의 분야를 깊게 이해하는 것도 중요하지만, 다른 분야에 대한 배경 지식도 갖고 있어야 여러가지 상황에 대처할 수 있다. 이번 학회 참석은 그런 관점에서 중요했다고 생각한다.