황태호 군은, 스토리지와 파일시스템 관련 최근 동향 파악 및 역량 증진을 위하여 ATC 2017에 참석 하였다.
ATC는 USENIX에서 주관하는 국제학술대회로서 1년에 한번 씩 개최된다. ATC는 이론적인 내용 보다는 컴퓨터 시스템과 관련된 실질적인 연구 결과를 추구한다. ATC에서는 네트워크, 운영체제, 스토리지 시스템, 보안, 가상화 등 컴퓨터 시스템과 관련된 다양한 주제를 다룬다.
이번 출장을 통해 메이저 학회의 진행 과정 및 발표자의 발표 기술을 배우고, 유명 인사를 만나고, 학회장의 분위기 등 느낄 수 있었다. 학회 중간 쉬는 시간 및 포스터 세션에서 유명 인사와 마주한 것만으로도 동기부여가 되었다. 또한 발표자들의 발표자료를 보았을 때 청중을 위해서 형식보다는 내용을 알 기 쉽게 전달하기위해 발표자료를 만들려고 노력했다는 느낌을 받았다. 또한 일부 발표자의 경우 발표하는 속도를 보았을 때 너무 빨리 말하여 한국말로 말해도 이해 할 수 있을 까 하는 의구심이 들었지만, 그만 큼 자기 연구에 대한 이해가 완벽하기 때문에 빨리 말할 수도 있다는 생각이 들었다.
이번 학회에는 여러 편의 NVM 관련 논문이 발표되었다. 첫 번째로, HiKV 논문은 DRAM과 NVM이 같이 존재하는 하이브리드 메모리에 각각의 익덱스를 가지고 있는 키-밸류 스토어를 제안하였다. HiKV는 해시 인덱스와 B-btree 인덱스의 장담점을 고려하여, 해시 인덱스를 NVM에 위치시키고 B-tree를 DRAM에 위치시켰다. HiKV는 Put/Get/Update/Delete 연산의 경우 해시 인덱스를 통해서 처리하고, 인덱스가 갱신될 경우 해시 인덱스의 경우 동기적으로 B-tree의 경우 비동기적으로 갱신한다. 또한 HiKV는 Scan 연산의 경우 B-tree를 통해서 처리한다.
두 번째로, SoupFS는 캐시와 NVM 사이 간의 사용되는 캐시 플러시로 인한 응답시간 증가를 줄이기 위해 Soft update를 사용하는 파일시스템을 제시하였다. SoupFS는 다른 NVM기반의 파일시스템과 달리 dual view를 제공하고 dual view간에 갱신을 포인터 기반으로 수행 함으로써 캐시 플러시를 줄였다. SoupFS는 latest view와 consistent view를 모두 NVM에 위치시키고, persister 데몬을 통해서 latest view를 consistent view로 갱신한다. Latest veiw를 consistent veiw로 변경하는 과정에서 로깅 등을 사용하지 않기 위해서, SoupFS는 포인터들을 갱신하는 과정을 통해서 view를 갱신한다 (pointer-based dual views).
세 번째로, Octopus 파일시스템은 NVM 상에서 RDMA를 사용하는 분산 파일시스템을 제시하였다. Octopus는 데이터의 높은 처리량을 위해 shared persistent memory pool 을 제공하고, 작은 크기의 IO의 높은 처리량을 위해 client-active I/O를 제공한다. Shared persistent memory pool은 Server 상의 데이터를 Client로 보내기 위해서 RDMA-enabled NIC를 통하여 page cache, kernel message buffer 를 거치지 않고 데이터를 전송한다. Client-active data I/O는 서버의 CPU를 통하지 않고 NIC를 통하여 데이터 전송을 수행하는 방법이다. 서버는 서버상의 데이터의 위치만을 클라이언트로 전송하고 클라이언트는 해당 정보를 통해 RDMA 요청을 서버에 전송한다. 요청을 받은 서버의 NIC는 서버의 CPU 관여 없이 데이터를 클라이언트로 전송해준다.
이번 ATC의 포스터 세션은 ATC에서 발표된 논문을 제외하고 약 7편의 별도의 주제가 발표되었다. ATC에서 발표된 논문의 저자들을 만나볼 기회가 없어져서 관심있는 논문의 저자들에게 이메일로 문의를 하였다.
Q: [Soft update] 논문에 operation간의 dependency를 보장한다고 되어 있는데, 어떤 방법으로 보장하는가?
A: 우리는 단일 syscall을 대상으로 해당 syscall 내에서 발생하는 operation들의 dependency를 보장한다. 단일 syscall에서 발생하는 operation들을 논문에 나와있는 내용대로 순서대로 저장하고, 저장된 operation들을 순서대로 실행함으로써 dependency를 보장한다. 현재는 단일 syscall내에서 operation들의 dependency를 보장하지만, 서로 다른 inode를 대상으로 발생하는 syscall간에 depenecy를 보장하진 않는다.
Q: [Octopus] 논문의 그림 4에서 클라이언트의 message pool이 사용되고 있는데, 해당 message pool도 바이패스가 가능하지 않나?
A: 가능하다. 하지만, RDMA를 통해 데이터를 전송하기 위해서는 버퍼를 ‘등록’하는 과정이 필요하다. 해당 과정은 과부하가 크기 때문에, 사전에 RDMA를 위해 ‘등록’된 message pool을 사용한다.
Q: [HiKV] hash table 안에 signature가 있는데 hash table에 bucket이 할당되는 것은 hash 값 아닌가? siganture는 무엇을 위해서 사용되는가?
A: hash table에 bucket이 할당되는 것은 hash 값이 맞다. signature는 특정 slot의 여러 bucket 중에 찾고자하는 bucket을 찾을 때 빠른 탐색을 위해서 사용된다.
이번 ATC 2017 학회 참석을 통해서 NVM 관련 연구의 최신 동향을 파악할 수 있었다. NVM 관련 연구는 주로 키-밸류 스토어 및 파일시스템 내용을 많이 포함하고 있었다. ATC에서 발표된 논문들을 고려하여 연구 주제 방향을 결정하는데 많은 도움이 되었다고 생각한다.