The performance of the storage device has been growing rapidly over the last 20 years. As a result, storage software stack, not the latency of storage, become a performance bottleneck recently. For example, software latency of NVM access takes over 90% of total access. Some research works have been tackled the problem by proposing kernel bypass device access. SPDK, a famous user level storage library, reduces software overhead of kernel storage stack such as redundant memory copy and context switching overhead. However, their solutions still have inherent software inefficiencies such as message passing overhead or redundant memory copy which affect to I/O performance.
In this paper, we propose a SmartNIC based offloading techniques for high-performance storage server access in storage server. First, we minimize inter-thread communication overhead to increase core scalability of storage server by query distribution offloading on SmartNIC. Query offloading enables that SmartNIC parses query payload and routes to dedicated thread. So, each thread can run without message passing overhead. Second, we minimize CPU utilization by offloads block device access and packet generating which is called context passing. Our experimental result shows that query distribution offloads improves the scalability up to 2.2 times, and context passing shows 1.8x faster throughput and 6x lower tail latency compared to existing methods.
최근 20년간 스토리지 디바이스의 성능이 빠르게 증가하였다. 그 결과로, 최근에는 스토리지의 지연시간이 아닌 스토리지 소프트웨어 스택이 성능 병목이 되고 있다. 이러한 문제를 해결하기 위해 소프트웨어 스택을 우회하는 기법들이 많이 연구되고 있으나 여전히 비효율적인 측면이 존재한다.
본 논문에서는 스토리지 서버에서의 스마트 네트워크 카드 오프로딩을 통한 성능 향상 기법을 제시한다. 첫 번째로 네트워크 카드 안에 쿼리 분배를 오프로딩 함으로써 기존의 쓰레드간 커뮤니케이션으로 인해 발생하는 오버헤드를 없애 멀티코어에서의 성능을 향상시키고, 두 번째로 스토리지 디바이스 액세스와 패킷 생성 과정을 네트워크 카드에 오프로딩함으로써 디바이스 액세스에 사용되는 CPU 연산을 줄임으로써 스토리지 서버의 전체적인 성능을 높일 수 있게 하였다. 이 논문에서 제안한 기법을 활용하면, 쿼리 분배 오프로딩을 통해 멀티코어 성능을 최대 2.2배 향상시켰고, 디바이스 액세스 오프로딩을 통해 최대 1.8배의 속도 향상과 6배의 지연 시간 감소가 가능함을 확인하였다.