This paper provides a user-level transactional file system for Persistent Memory (PM). Our system put hardware properties of PM into consideration. It provides a full ACID transaction while batching small IO and unaligned accesses to PM. We demonstrated with strong experimental results that manipulating IO requests under transaction abstraction leverages the full potential of PM. Our system outperforms them up to 4.25× in FIO, 1.2× in TPCC, and 3.5× in Mobibench compared to NOVA, SplitFS, and Libnvmmio respectively. It boosts Ext4 performance running on SSD to 22× in SQLite TPC-C by leveraging PM.
비휘발성 메모리가 나오면서 비휘발성 메모리의 낮은 지연 시간과 높은 대역폭은 기존 파일 시스템의 소프트웨어 오버헤드를 노출 시켰다. 비휘발성 메모리의 빠른 특성에 맞춰 소프트웨어 오버헤드를 최소화 하기 위해 많은 연구가 파일 시스템을 새롭게 디자인했다. 하지만 상용화된 인텔의 옵테인 메모리 같은 실제비휘발성 메모리는 기존의 연구자들이 놓친 성능에 영향을 직접 주는 고유한 특성들이 있다. 특히 작은 쓰기 (256바이트 미만), 정렬되지 않은 접근과 무작위 접근은 성능을 크게 저하시킨다. 이 연구에서는 유저 레벨에서 트랜잭션 파일 시스템을 제공한다. 비휘발성 메모리의 한계를 해결하기 위해 트랜잭션 내에서정렬되지 않은 쓰기를 디램 버퍼에 모아서 큰 하나의 순차적인 쓰기로 전환하여 비휘발성 메모리의 성능을 최대로 끌어낸다. 기존 비휘발성 메모리 파일 시스템인 노바, 스플릿에프에스, 리브엔비엠엠아이오 보다 각각 에프아이오에서 4.25배, 에스큐엘 라이트를 사용한 티피씨씨에서 1.2배, 모비벤치에서 3.5배의 성능 향상을 보여준다.