메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

Selective On-Device Execution of Data-Dependent Read I/Os

noriwiki


Chanyoung Park, Minu Chung, and Hyungon Moon
23rd USENIX Conference on File and Storage Technologies

개요

On-device와 In-kernel Near-storage processing의 장점을 모두 살릴 수 있는 새로운 디자인인 SODE를 제시함. SODE는 동적으로 현재 On-device core의 busniess에 따라서 Resubmission logic이 Kernel과 Storage에 적절히 Scheduling할 수 있도록 설계함. 이를 통해서 기존 SOTA였던 XRP보다 향상된 성능을 보여줌.

Motivation & Importance

최근 연구들은 디바이스 내(on-device) 및 커널 내(in-kernel) 저장 기능을 활용하는 것의 이점을 입증해왔다. 디바이스 내 기능은 주로 저장 장치 내부에서 데이터를 전처리하는 데 사용되며, 이를 통해 I/O 양을 효과적으로 줄일 수 있다. 반면 커널 내 기능은 데이터 의존적인 읽기(read) I/O 요청의 연속 처리를 가속화하기 위해 제안되었으며, 이는 특히 디스크 상의 데이터 구조를 탐색하는 애플리케이션에 유용하다.

그러나 기존 연구들은 데이터 의존적인 읽기가 많은 워크로드들을 On-device로 오프로딩하는 것의 가능성을 탐색하지는 않았다. 따라서 Read-only workload들에 대해서 디바이스 내부로 Offloading하는 것의 가능성을 탐구하는 것이 중요하다.

이 연구의 목적인 Key-value store의 Resubmission task (즉, pointer를 계속 추적하는 Task들을 말한다. Linked-list와 같은 테스크들이 있을 수 있다.)를 가속화 시키는 것이다. 본 연구에서는 Throughput, Latency, 그리고 Tail latency를 모두 고려하여 최적의 장소에서 Resubmission Logic을 돌릴 수 있는 매커니즘과 알고리즘을 설계하고자 한다.

Challenge

  1. On-device 환경은 Data와 제일 가깝지만, Core의 성능이 좋지 않아, 오히려 성능 하락이 있을 수 있음
  2. In-kernel path는 Core의 성능이 제일 좋지만, On-device보다는 Data와 거리가 있음

이러한 조건에서 최적의 장소를 찾아 Resubmission logic을 돌릴 수 있을까?

Design

  1. 우선 file offset에서 logical block address를 알아낸다.
  2. NVMe SODE command를 날린다.
  3. NVMe SODE command에는 first read position, digest of mapping, storage function이 정의되어 있다.
  4. On-device runtime은 command에 있는대로 명령을 수행하거나,
  5. 혹은 Application에 응답을 보낸다.
  6. On-device processor가 너무 바쁘면(busy), SODE는 In-kernel resubmission path를 취한다.
Hybrid Resubmission
만약 On-device core가 너무 바쁘면, On-deivce가 Host kernel에 요청을 보내는 Resubmission로직이 가능하도록 하였다. 만약 Device가 처리해야할 Queue에 등록되어 있는 Job의 개수가 일정 개수를 초과하면, 그 이후에 들어온 Task들을 다시 On-device가 Idle상태에 놓일때까지 kernel에서 실행되도록 하였다. 외의 수행로직은 OSDI XRP논문의 Implementation을 참고 하였다.
Optimistic Resubmission with Cached Metadata
Metadata로부터 File offset to block address를 가져오는 overhead를 줄이기 위해서 낙관적으로 변경사항이 없다고 간주하고 Resubmission logic을 수행하도록 하였다. 후에 수행이 완료되면, Metadat변경이 있는지 확인하고, 차이가 없을 경우에만 Application에 최종 결과를 전달하였다. 만약 있으면 Abort되도록 하였다. 주된 목적이 Read-only file에 대한 Resubmission logic을 처리하는 것이기 때문에, Optimistic한 본 처리방식은 대부분의 경우, 문제가 되지 않는다고 주장한다. 이 Optismistic한 Resubmission은 On-device와 In-kernel filesyste의 Metadata mismatch를 해결하기 위한 것이다.
Support for Parallel Resubmission Tasks
On-device의 부담을 줄이기 위해서 여러 Resubmission Task가 병렬화 가능하게 하는 API를 제공하였다. 만약 병렬 처리 가능한 Application Logic이 있다면, Application은 해당하는 병렬처리를 작성한후 특수한 API를 통해서 부르고, 이를 통해서 SODE는 내부적으로 병렬처리가 나능하도록 하였다.

Result

결과적으로 SODE는 XRP와 비교하였을때, 더 좋은 성능을 얻을 수 있었음.

Conclusion

SODE는 XRP, Lambda-IO에서 제시하지 못한 새로운 Near-storage processing의 가능성을 찾았다는 점에서 의의가 있음. 또한 XRP의 매커니즘을 재사용하여, Practical한 Implementation을 제시하였다는 점에서 장점을 찾을 수 있음. 구체적이고 긍정적인 Evaluation결과는 SODE의 디자인을 Support하기에 충분해 보임.

논문에 제시된 단점을 정리하자면, 새로운 시스템 콜이 필요하다는 점과 (Transparent하지 않음), NVMeVirt위에 Frequency Scaling을 통해서 Wimpy core를 Emulation하였지만, 기본적으로 Instruction set과 가용한 Optimization이 다르기 때문에, 실제 Wimpy core에서의 성능분석이 필요해 보이는 점을 고려할 수 있을 것임.