Rearchitecting the TCP Stack for I/O-Offloaded Content Delivery

Authors: Taehyun Kim, Deondre Martin Ng, Juzhi Gong, Youngjin Kwon, Minlan Yu, KyoungSoo Park

Groups: KAIST, Havard University

Keywords: Content Delevery Server, I/O operations, TCP, SmartNIC, Offlaod

 

#1. Motivations

1-1. Backgrounds

  - 최근 하드웨어 스펙이 올라와도 content delivery server (DASH server)의 throughput이 여전히 낮음

  - 주 원인은 컨텐츠를 전달하기 위해 디스크 데이터가 메인 메모리에 있어야 한다는 것

  - 패킷을 보내기 위해 디스크 -> 메모리 -> NIC 순의 DMA가 발생

 

  - 300KB 파일을 전송하는 데에 CPU는 10Gbps bandwidth

       vs NVMe를 통해 disk 하나 당 20Gbps bandwidth

  - CPU bandwidth로 인해 전체 bandwidth가 제한됨 => CPU bottleneck

Figure 1. Throughputs on a single CPU core

 

  - 70% 이상의 CPU 사이클을 컨텐츠를 메모리에 올리기 위한 단순 I/O 연산에 사용 중 (sendfile(), open())

Table 1. CPU usage per data plan function in nginx

 

  - 싱글 코어를 100% 사용하여도 NVMe 디스크 I/O 연산을 포화시키지 못 함

  - Random 한 디스크 데이터 접근을 위한 메타데이터 접근에 CPU 사이클이 소모

Figure 2. CPU utilization with for varying number of NVMe disks

1-2. Sollutions

  - PCIe가 peer-to-peer DMA가 가능하다는 점을 이용하여 디스크 I/O 연산을 SmartNIC을 활용하여 오프로딩

  - 디스크 I/O 연산을 SmartNIC으로 옮김에 따라 페이로드가 SmartNIC에 있어 TCP 스택 또한 SmartNIC으로 오프로딩

 

  - 하지만 SmartNIC의 arm 코어 성능이 호스트의 싱글 코어보다 성능이 낮음

  - I/O 연산이 많은 어플리케이션에 대해 "control plane"은 CPU, "data plane"은 SmartNIC에서 프로세싱하는 구조 제안

  - CPU를 단순한 I/O 연산이 아닌 복잡한 연산을 계산 + disk I/O로 인한 CPU cache pollution 방지

#2 IO-TCP

2-1. Seperating TCP control and data planes

  - SmartNIC의 코어 성능이 떨어지기 때문에 SmartNIC은 단순한 연산 CPU는 복잡한 연산을 하도록 설계

  - 따라서 TCP 스택을 control plane과 data plane으로 나눔

  - Control plane은 handshake, reliable data transfer, congestion/flow control, error control과 같은 연산

  - Data plane은 data buffer 관리, data 세그멘팅, 체크섬 계산 등과 같은 연산

2-2. API functions

Table 2. IO-TCP offload API funtions

2-3. Host stack

Figure 3. Generation of data packets with offload_write()

 

asdf

2-4. NIC stack

 

'논문 > 네트워크 & 시스템' 카테고리의 다른 글

Junction - NSDI'24  (0) 2024.06.20
CC-NIC - ASPLOS'24  (0) 2024.04.26
Nu - NSDI'23  (0) 2024.04.03

+ Recent posts