SSD 장치 내 NCQ 를 활용한 쓰기 버퍼 관리 기법 정보과학논문지 – Sang-Bok, Heo
2 Contents SSD 특징 관련연구 NCQ 를 활용한 버퍼 관리 기법 실험 결과 Criticism
3 SSD 특징 SSD 의 장단점 장점 : 낮은 데이터 접근 시간, 저전력, 무소음 단점 : 읽기 연산에 비해 상대적으로 느린 쓰기 연산, 제한된 삭제 연산 횟수 쓰기버퍼 활용 NAND 플래시 메모리에 실제로 쓰여지는 데이터양을 줄임으로써 쓰기 성능을 향상 및 SSD 의 수명 개선 일반적으로 공간이 제한되어 있음 - 효율적인 버퍼관리 기법 필요 - 관련연구 : 입출력 워크로드의 지역성과 NAND 플래시 메모리의 일부 특성만 고려함 SSD 내에 존재하는 NCQ 를 활용하는 버퍼 관리 기법을 제안
4 SSD 특징 NCQ(Native Command Queue) 큐에 보관된 명령들로부터 미래 참조 패턴 정보를 얻고 이를 버퍼 관리 정책에 활용 SATA 인터페이스를 사용하는 디스크에서 입출력 명령을 쌓아두고 스케줄링을 통해 입출력 처리 시간을 개선하기 위한 기법 SSD 에서도 여러 개의 입출력 명령들을 동시에 처리함으로써 호스트에서 느끼는 지연시간을 줄이기 위한 목적으로 활용
5 관련연구 버퍼 관리 기법 연구 워크로드 특성만을 고려하는 기법 - LRU(Least Recently Used), LFU(Least Frequently Used) 플래시 메모리의 특성만을 고려하는 기법 - FAB : 희생 블록으로 선정된 논리 블록의 모든 페이지를 한번에 교체 - BPLRU : LRU 기반으로 희생 블록을 선정 두 가지를 혼용하는 기법 - CLC : FAB + BPLRU - BPAC : 재참조율이 높은 데이터 리스트와 낮은 데이터 리스트를 분리 - ExLRU : FAB + BPLRU 과거 참조 패턴 정보와 SSD 내 아키텍쳐 중 일부분만을 고려하고 있는 한계를 가지고 있음 - NCQ 내의 정보를 활용한 연구는 전무
6 관련연구 SSD 내에서의 NCQ 큐 길이 (queue length) 에 따라 데이터의 동시처리가 가능하기 때문에 NCQ 지원여부에 따라 30% 이상의 성능차 - KingSpec, “How to obtain maximum performance from your SSD”, Company news, 표준화 규격 NCQ 최대 큐 길이는 32 큐 길이가 길수록 최대에 가까운 대역폭을 사용하게 됨
7 NCQ 를 활용한 버퍼 관리 기법 NCQ 에 보관 중인 명령의 양칸큼 미래 참조 패턴 정보를 획득 명령이 필요로 하는 데이터가 버퍼에 존재할 경우, 해당 데이터가 사용될 때까지 버퍼에서 교체되지 않도록 별도 관리 - Miss 가 발생하는 상황을 차단 LRU 기법에 적용하여 구현하였으며 QLRU(NCQ-aware LRU) 라고 함
8 NCQ 를 활용한 버퍼 관리 기법 QLRU NCQ 에 도착한 명령이 요구하는 데이터가 버퍼에 존재할 경우, 해당 데이터를 MRU 로 이동 가상 MRU 로 이동된 데이터는 해당 명령이 디스 패치 되기전 최대한 오랜 시간동안 버퍼 내에 유지 오버헤드가 적고, 추가적인 공간을 요구하지 않음 - 단순한 포인터 이동으로 구현
9 NCQ 를 활용한 버퍼 관리 기법 QLRU 와 LRU 비교
10 실험 실험환경 FTL 은 페이지 단위 주소 매핑을 사용 NAND 플래시 메모리와 버퍼는 비어 있는 환경 쓰기 명령만 사용하여 성능 측정 버퍼의 크기는 32MB ~ 512MB NCQ 의 최대 큐 길이는 32 ~ 512 개
11 실험 Iometer benchmark 각각의 워크로드를 수집 쓰기 명령 전달 시 운영체제의 버퍼 캐시를 거치지 않음
12 실험 버퍼 크기 및 최대 큐 길이에 따른 효과
13 실험 요청시간 간격에 따른 효과
14 실험 요청시간 간격에 따른 효과
15 실험 실제 워크로드 실험 OLTP 지역성은 높은 편이지만 요청 크기가 작음에 따라 NCQ 가 보유 할 수 있는 정보의 양이 매우 적음 Kernel compile 워크로드는 지역성은 낮지만 각 요청 크기가 상대적으로 커서 NCQ 보다 많은 정보를 보유 할 수 있었기 때문 NCQ 가 보유 할 수 있는 정보가 너무 적고, 히트율이 너무 낮으면 성능 향상을 기대하기 힘듦 LRUQLRU OLTP60.3%60.4% Kernel compile7.5%8.6%
16 결론 NCQ 를 고려한 쓰기 버퍼 관리 기법을 제안 과거 / 미래의 참조 패턴 정보로 버퍼의 히트율을 향상 LRQ 보다 QLRU 가 대부분의 환경에서 더 높은 성능 과거 / 미래의 참조 패턴 정보로 버퍼의 히트율을 향상 실제 워크로드에 낮은 성능 OLTP 및 kernel compile 성능향상 폭이 매우 낮음 지역성, 입출력 크기, 입출력 명령의 요청의 빈도와 수에 따른 제한적 환경 엔터프라이즈 급 시스템에 대한 연구 진행 다양한 버퍼 관리 기법과 함께 동작
17 Criticism
18 Criticism 실제 워크로드에 낮은 성능 히트 율 최대 7.3 상승 성능향상은 미약 할 듯