262 0

다중 큐 기반 블록 계층에서의 쓰기 순서 보장 연구

Title
다중 큐 기반 블록 계층에서의 쓰기 순서 보장 연구
Other Titles
Enabling Barrier in Multi-Queue Block Layer
Author
김명선
Alternative Author(s)
Myeongseon Kim
Advisor(s)
박영준
Issue Date
2020-02
Publisher
한양대학교
Degree
Master
Abstract
현대 입출력 스택의 쓰기 순서보장 기법은 flush 연산에 의존한다. Flush로 인해 입출력 대기시간은 길어지며, 대기시간이 길어지는 만큼 입출력 성능이 감소하게 된다. ‘Barrier-Enabled I/O Stack’은 쓰기 순서를 보장하기 위해 flush에 의존하는 입출력 스택을 개선시킨 연구로, 캐시 배리어 명령어를 기준으로 앞과 뒤의 쓰기 요청들을 각각 ‘epoch’라는 집합의 단위로 묶어 epoch 간의 순서를 보장할 수 있다. 하지만 Barrier-Enabled I/O Stack은 NVMe 인터페이스를 지원하지 않으며, 단일 큐 기반으로 설계되었기 때문에 NVMe 인터페이스가 지원하는 다중 큐 기반의 블록 계층이 고려되지 않았다. 이로 인해 발생할 수 있는 문제점은 세 가지이다. 첫 번째로는 NVMe 디바이스가 초기화 될 때 epoch 메모리 풀이 생성되지 않으므로, 블록 계층에서 쓰기 요청이 발생하더라도 epoch가 생성되지 않는다. 두 번째로는 Barrier-Enabled I/O Stack은 단일 큐 기반으로 설계되었기 때문에 다중 큐 기반의 블록 계층을 적용하였을 때, 단일 epoch 내의 쓰기 요청들과 배리어 명령어가 다중 큐에 분산되어 의도한 순서와 다르게 NVMe 디바이스에 디스패치 될 수 있는 문제가 존재한다. 세 번째로는 서로 다른 프로세스에서 생성된 epoch들 사이에서 불필요하게 쓰기 순서보장이 강제된다는 점이다. 본 논문에서는 세 가지 문제점을 해결하기 위해 다중 큐 기반의 블록 계층에서의 쓰기 순서보장 방법으로 세 가지 해결책을 제안한다. 첫 번째로 NVMe 디바이스 드라이버가 초기화 될 때 epoch 구조체의 메모리 풀을 생성하는 방법을 제안한다. 두 번째로 각각의 쓰기 요청에 자신이 속한 epoch id를 명시하여 NVMe 컨트롤러가 동일한 epoch id를 갖는 쓰기 명령어들을 같은 epoch로 인식하여 처리할 수 있는 방법을 제안한다. 세 번째로 다른 서로 다른 프로세스에서 생성된 epoch들의 불필요한 순서보장을 막고 같은 프로세스에서 생성된 epoch들만 순차 처리될 수 있도록 쓰기 요청에 stream id를 명시하는 방법을 제안한다. 본 논문에서 제안하는 epoch id와 stream id의 검증을 위해 NVMe SSD 시뮬레이터인 VNSIM을 사용하였으며, 호스트의 블록 계층에서 생성된 epoch id와 stream id가 NVMe SSD까지 정확히 전달됨을 확인할 수 있었다.
URI
https://repository.hanyang.ac.kr/handle/20.500.11754/123836http://hanyang.dcollection.net/common/orgView/200000437275
Appears in Collections:
GRADUATE SCHOOL[S](대학원) > COMPUTER SCIENCE(컴퓨터·소프트웨어학과) > Theses (Master)
Files in This Item:
There are no files associated with this item.
Export
RIS (EndNote)
XLS (Excel)
XML


qrcode

Items in DSpace are protected by copyright, with all rights reserved, unless otherwise indicated.

BROWSE