DockerSSD: 인-스토리지 프로세싱 모델

도건우·2025년 10월 25일

논문 리뷰 

목록 보기
11/13

DockerSSD

DockerSSD는 카이스트에서 2022년에 발표한 연구이다. 인-스토리지 프로세싱이라는 모델에 대한 연구이다. 인-스토리지 프로세싱은 스토리지 내에서 데이터를 처리하는 모델로 대규모 데이터셋 처리할 때 에너지 효율적인 해법으로 알려졌다. 그러나 이와 같은 시도는 저장장치 수준의 제한된 처리능력과 취약점이 존재한다.

이 논문은 소스코드 수정없이 다양한 애플리케이션을 실행할 수있는 런타임을 제시하는 인-스토리지 프로세싱 모델을 제시하는 것이 주 컨트리뷰션이다.

Docker 이미지를 재사용하여 스토리지 내부에 자율 실행 객체로 컨테이너를 생성하고 이를 처리하는 것 인데, 이를 위해 1. 새로운 통신 방식2. 가상 펌웨어를 설계하였고, 일부분을 하드웨어로 오프로딩하여 실행 지연을 줄였다.

인스토리지 프로세싱 모델

이 연구를 이해하기 위해서는 이러한 개념을 알아야 하는데, 인-스토리지 프로세싱은 연산을 구현하는 것도 문제이지만, 가장 어려운 문제는 런타임 환경의 부재다. 지능형 스토리지 시스템을 구현하기 어려운 점은 응용의 구현과 요구가 지속적으로 변하기 때문에 어려우며, 기존 응용을 오프로딩할 때도 상당한 수정이 필요하다.

플래시 근처에서 데이터 처리를 하면서 동시에 블록 디바이스 자체의 I/O 요청을 관리해야 한다. 이러면 서비스에 취약점이 생긴다. 그래서 ISP는 연산 자체는 FPGA같은 하드웨어에서 처리하는 방식으로 구현되고 있지만, 여전히 특정 데이터 처리 응용에 활용되는 수준이다.

이 논문의 서론 논리 구조 방식은
1. ISP 설명
2. ISP의 핵심 과제 설명, 거의 1페이지 정도 할당해서 설명한다.
3. 본 논문의 컨트리뷰션 설명
4. 구현 중 Docker 응용의 핵심 과제 언급
5. 앞에서 언급한 1. 새로운 통신 방식 언급
6. 컨트리뷰션 설명하면서 2. 가상 펌웨어 스택 설계 언급
7. 실험결과 설명함

고성능 SSDs

그림을 통해 SSD 핵심 아키텍처 모듈과 내부 펌웨어 스택을 살펴보자. 현대 SSD는 프런트엔드 복합체와 백엔드 스토리지 두 부분으루 구성된다. 프런트엔드는 임베디드 프로세서와 내부 디램을 포함하여 고속 인터커넥트를 통해 PCIE 엔드포인트와 백엔드를 연결한다.

반면 백엔드는 채널이라는 복수의 I/O 버스를 통합하여 플래시 메모리 컨트롤러를 통해 플래시 패키지를 연결한다.

최근 수년간 프런트엔드(코어)는 역량이 발전하여 데이터 처리가 가능해졌다고 한다.

  • 질문1. 그러면 이 연구에서는 FPGA와 같은 별도의 하드웨어 연산을 사용하지 않았다는 것인가?

OS 수준 가상화

기존 지식(나와 교수님의 의견)에서는 스토리지에 OS 수준의 가상화를 제공하면 이것은 블록 장치가 아니라 컴퓨터 간의 통신이라고 설명했었다.
그러나 이 연구에서는 cgruops라는 개념과 namespace를 설명하는데, 이 환경을 활용하여 격리된 실행 환경을 생성할 수 있다고 한다. 이 런타임을 지원하기 위해 OCI(Open Container Initiaitive)라는 런타임을 제공한다고 하는데, 좀 더 살펴볼 필요가 있을 것 같다.

후속 설명에서는 cgroups와 namespace는 OS 커널 기능이라고 언급한다. 따라서 OS 수준 가상화라고 설명하는 듯 하다.

파일 레이아웃의 부재

대부분 애플리케이션은 파일시스템을 통해 스토리지 관련 데이터를 관리하지만, 펌웨어는 파일 데이터 레이아웃에 대한 지식이 없다. 사용자는 파일 오프셋에 연결된 LBA 집합을 얻어서, 이 LBA 집합을 오프로딩된 ISP 커널에 전달해야 한다.

성능 영향 평가

프로그래머블-ISP 모델을 대상으로 시스템 콜 or 파일 접근에 대한 벤치마크를 제시한다. 이 데이터를 제시하는 이유는 ISP의 문제점을 보이는 것 같다. 이 데이터는 P.ISP는 스토리지 지연을 호스트 대비 평균 50%감소시키기 때문에 데이터 이동 절감 효과는 분명하다고 증명한다. 그러나 엔드 투 엔드 지연이 오히려 증가했다고 하는데, 이는 컨텍스트 스위칭과 직렬화/역직렬화 비용이 누적되어서 스토리지 지연을 줄여서 얻은 이득을 상쇄한 것이다.

제안

이 모든 분석을 토대로 DockerSSD를 제안한다.
호스트 독립적으로 컨테이너 단위 실행을 자율 관리하고, "커널 단위 왕복"을 줄이는 것을 목표로 한다.
또한 표준 도커 이미지 재사용으로 소스 수정/교차 컴파일을 제거하고 장치 의존성을 내리는 것이다.

내 연구에서 참고할 만한 부분

직렬화/역직렬화 부분은 내 연구에서도 사용된다. 정확히 스토리지 서버에서 전처리하고 호스트로 보내줄 때, 직렬화/역직렬화를 사용하는데, 내 후속연구에서는 이러한 부분을 참고하여 데이터화가 필요할 듯 하다.

0개의 댓글