FAST는 USENIX에서 주관하는 국제학술대회로서 1년에 한번 씩 개최된다. FAST는 컴퓨터 시스템과 관련하여 운영체제, 스토리지 시스템, 보안, 가상화 등 컴퓨터 시스템과 관련된 다양한 주제를 다룬다. 이번 출장을 통해 메이저 학회의 진행 과정 및 발표자의 발표 기술을 배우고, 유명 인사를 만나고, 학회장의 분위기를 느낄 수 있었다. 이번 학회에서는 NVM과 관련된 주제의 논문이 많이 발표되었다. NVM과 관련된 주제에 관심이 많아서 그런지, 학회에 참석하는 동안 많은 동기부여를 받았다.

이번 학회에서 발표된 논문 중에서 가장 크게 관심이 갔던 세 편의 논문이 있었다. 첫 번째로, uDepot 논문은 DRAM 기반 KVS와 Storage 기반 KVS의 단점을 보완한 NVM 디바이스용 KVS를 제안하였다. DRAM 기반의 key-value store (KVS) 연구가 많이 진행되고 있다. 하지만, 해당 기법은 많은 DRAM을 필요로 하기 때문에 많은 비용을 필요로 한다. 또한, 해당 기법은 RDMA와 같은 기술을 사용하지만 해당 기술은 아직 많이 보급되지 않았다. 반면, 스토리지 기반의 KVS는 blocking system call 등을 사용하기 때문에 Optane SSD, Z-SSD와 같이 낮은 latency를 보장하는 NVM 디바이스의 성능을 활용하지 못하고 있다. NVM 디바이스는 DRAM 기반 KVS와 Storage 기반 KVS의 단점을 보완할 수 있다. 본 논문에서 제안하는 uDepot는 NVM 디바이스의 space management를 위해서 log-structured 방식을 사용하고, 키-밸류 레코드는 로그에 append 되면서 저장된다. uDepot는 키 값에서 키-밸류 레코드를 맵핑하기 위해서 two-level directory와 hashing을 사용한다. uDepot는 성능을 위해서 맵핑 정보를 DRAM상에서만 관리하고, 정상적인 shutdown 시에는 NVM에 checksum과 함께 저장한다. 비정상적인 종료로 인해 맵핑 정보가 유효하지 않을 경우 로그에 저장된 데이터를 통해서 맵핑 정보를 복구한다. uDepot은 NVM 디바이스를 접근하기 위해서 기본적으로 페이지 캐시를 거치지 않고 입출력을 진행하며, Linux AIO, Intel SPDK 등을 통해서 NVM 디바이스를 접근한다.
두 번째로, referencing counting 관련 논문인 paygo 논문이 있었다. 해당 논문은 per-core cache에서 발생할 수 있는 table overflow를 제거하여, counting overhead를 제거하였다. Table overflow를 제거하기 위해서 overflow list를 두었고, migration을 고려하여 anchor counting을 사용하였다. Migration 되더라도 anchor 된 core에서 anchor counter를 증가시키도록 하였다. 해당 방식을 통해서 모든 로컬 카운터를 확인 시 처음으로 0이 아닌 카운터를 만나면 로컬 카운터 값을 확인하는 과정을 중지한다. refcache는 epoch 단위로 로컬 카운터를 글로벌 카운터로 flush 하고, 2 epoch이 지나야 실제 ref count의 값이 0임을 보장할 수 있다. paygo는 실제 ref count 값을 확인하기 위해서 epoch 에 상관 없이 로컬 카운터 들을 바로 순회한다.
세 번째로, EncFS++논문은 GPU를 사용하여 암호화 연산의 일부를 병렬로 수행하는 WAES 라이브러리를 Cryptographic file system (CFS)인 EncFS에 적용한 파일시스템을 제안하였다. WAES는 cipher block 간에 의존성이 없는 CTR 모드를 대상으로 한다. 기존 EncFS는 CBC 모드를 사용하고 있고, CBC 모드는 cipher block 간에 의존성이 있기 때문에 cipher block들에 대한 연산들이 병렬로 처리될 수 없다. 따라서, 본 논문은 CBC 모드가 아닌 CTR 모드를 CFS에 적용하였다. CTR 모드는 카운터를 키로 암호화 한 다음 평문과의 xor 연산을 통해서 최종 암호문을 생성한다. 하나의 cipher block에서 암호화에 사용되는 카운터는 nonce로 불리고, 키를 통해 암호화된 nonce는 encrypted mask로 불린다. Nonce의 uniqueness를 위해 본 논문은 single global counter를 두고, write 연산이 발생할 때마다 해당 카운터를 증가시키고, nonce는 해당 카운터를 기반으로 생성된다. 암호화에 사용된 nonce는 복호화 시에도 필요하기 때문에, 본 논문은 암호화에 사용된 nonce를 storage에 파일로 저장한다. 본 논문은 하나의 파일에 nonce들을 저장하기 위해서 64KB 만큼의 파일 데이터를 위해서 사용된 nonce들을 하나의 파일에 저장한다. 64KB보다 큰 파일 데이터에 사용된 nonce 들은 별도의 파일에 저장된다. WAES library는 encryption mask를 생성하기 위해 필요한 정보들을 encryption context로 부른다. Encryption context에는 암호화에 필요한 nonce가 포함된다. Encryption mask를 사전에 미리 생성해 두기 위해서 본 논문은 encryption context들을 grouping 한 pool을 관리한다. 또한, 암호화 시 파일 별로 서로 다른 pool을 유지하지 않고 본 논문은 single pool of context를 사용한다. 복호화 시에는 암호화에 사용되었던 동일한 nonce를 사용하기 위해 파일 별로 다수의 pool을 유지한다.
이번 FAST 학회 참석을 통해서 NVM 및 컴퓨터시스템 관련 연구의 최신 동향을 파악할 수 있었다. 발표된 논문들을 고려하여 연구 주제 방향을 결정하는데 많은 도움이 되었다고 생각한다.