ISSN 2383-630X(Print) / ISSN 2383-6296(Online) Journal of KIISE, Vol. 43, No. 1, pp. 27-33, 2016. 1 http://dx.doi.org/10.5626/jok.2016.43.1.27 다중큐 SSD 기반 I/O 가상화프레임워크의성능향상기법 (Improving Performance of I/O Virtualization Framework based on Multi-queue SSD) 김태용 강동현 엄영익 (Tae Yong Kim) (Dong Hyun Kang) (Young Ik Eom) 요약오늘날가상화기술은가장유용하게사용되는컴퓨팅기술중하나이며모든컴퓨팅환경에서널리활용되고있다. 그러나가상화환경의 I/O 계층들은호스트머신의 I/O 동작방식을인지하지못하도록설계되어있기때문에 I/O 확장성문제는여전히해결해야할문제로남아있다. 특히, 다중큐 SSD 가보조기억장치로사용될경우, 증가한잠금경쟁과제한된 I/O 병렬화문제로가상머신은다중큐 SSD 의공인된성능을활용하지못하는문제가발생한다. 이러한성능문제를해결하기위해본논문에서는가상 CPU 마다전용큐와 I/O 스레드를할당하는새로운기법을제안한다. 제안기법은성능저하의주요한원인중하나인잠금경쟁을효율적으로분산시키고또다른원인인 Virtio-blk-data-plane 의병렬화문제를해소한다. 제안기법을평가한결과최신 QEMU 보다 IOPS 가최대 155% 향상되는것을확인하였다. 키워드 : 다중큐, 솔리드스테이트드라이브, non-volatile memory express, 가상화, quick emulator Abstract Virtualization has become one of the most helpful techniques in computing systems, and today it is prevalent in several computing environments including desktops, data-centers, and enterprises. However, since I/O layers are implemented to be oblivious to the I/O behaviors on virtual machines (VM), there still exists an I/O scalability issue in virtualized systems. In particular, when a multi-queue solid state drive (SSD) is used as a secondary storage, each system reveals a semantic gap that degrades the overall performance of the VM. This is due to two key problems, accelerated lock contentions and the I/O parallelism issue. In this paper, we propose a novel approach, including the design of virtual CPU (vcpu)-dedicated queues and I/O threads, which efficiently distributes the lock contentions and addresses the parallelism issue of Virtio-blk-data-plane in virtualized environments. Our approach is based on the above principle, which allocates a dedicated queue and an I/O thread for each vcpu to reduce the semantic gap. Our experimental results with various I/O traces clearly show that our design improves the I/O operations per second (IOPS) in virtualized environments by up to 155% over existing QEMU-based systems. Keywords: multi-queue, solid state drive, non-volatile memory express, virtualization, quick emulator 이논문은 2015년도정부 ( 미래창조과학부 ) 의재원으로정보통신기술진흥센터의지원을받아수행된연구임 (No.R0126-15-1082, (ICBMS- 총괄 ) ICBMS(IoT, 클라우드, 빅데이터, 모바일, 정보보호 ) 핵심기술개발사업총괄및엑사스케일급클라우드스토리지기술개발 ) 이논문은 2015 한국컴퓨터종합학술대회에서 멀티큐 SSD 기반 IO 가상화프레임워크의성능향상기법 의제목으로발표된논문을확장한것임 논문접수 : 2015년 7월 22일 (Received 22 July 2015) 논문수정 : 2015년 9월 7일 (Revised 7 September 2015) 심사완료 : 2015년 9월 22일 (Accepted 22 September 2015) 학생회원 : 성균관대학교정보통신대학 CopyrightC2016 한국정보과학회ː 개인목적이나교육목적인경우, 이저작물 taeyongkim@skku.edu 의전체또는일부에대한복사본혹은디지털사본의제작을허가합니다. 이때, kkangsu@skku.edu 사본은상업적수단으로사용할수없으며첫페이지에본문구와출처를반드시 종신회원 : 성균관대학교정보통신대학교수 (Sungkyunkwan Univ.) 명시해야합니다. 이외의목적으로복제, 배포, 출판, 전송등모든유형의사용행위 yieom@skku.edu 를하는경우에대하여는사전에허가를얻고비용을지불해야합니다. (Corresponding author 임 ) 정보과학회논문지제43권제1호 (2016. 1)
28 정보과학회논문지제 43 권제 1 호 (2016. 1) 1. 서론 오늘날가상화기술은전과달리효율적인최적화기술들을통해가장유용한기술중에하나가되었다. 하지만가상화환경에서 I/O 성능문제는아직까지발전시켜야만하는문제로남아있으며, 따라서산업계와학계에서는하드웨어기반접근법과하드웨어적인제약사항을뛰어넘는소프트웨어적인방법을통해최적화를시도해오고있다. 몇몇반도체제조사들은하드웨어에서가상화를지원하기위해 Virtualization Technology (VT)[1], Virtualization Extensions(VEs)[2], Single Root I/O Virtualization(SR-IOV)[3] 그리고 I/O Memory Management Unit(IOMMU)[4] 등다양한기술과인터페이스를제공한다. 이러한하드웨어적인접근방법은성능적인측면에있어서비가상화에서의성능에근접할수있지만그를위한특별한하드웨어가반드시필요하기때문에모든가상화환경에적용하기어렵다. 예를들어 SR-IOV와 IOMMU는호스트머신의장치를가상머신에직접할당함으로써가상머신의이송 (VM Migration)[5,6] 과같은가상화의장점을저해한다. 따라서이러한하드웨어적인접근방법의제약사항을극복하기위해많은연구가진행되어왔으며, 몇몇연구자들은게스트머신과호스트머신사이의통신시발생하는 Exit과중복된 I/O 계층으로인한 I/O 문맥교환를문제점으로지적하였다. 그리고그해결방법으로 Virtio [7], Kernel-based Virtual Machine(KVM)[8] 그리고반가상화 I/O 시스템인 ELVIS[9] 를제안하였다. Non-volatile Memory Express(NVMe) 솔리드스테이트드라이브 (SSD) 와같은 PCI 익스프레스 (PCIe)[10] 기반다중큐 (Multi-queue) SSD는그내부적인병렬성을최대한활용하여보조기억장치로써 I/O 성능을극적으로향상시킨다. 하지만처음에는다중큐 SSD를운영체제에적용시켰을경우성능적인이점이거의나타나지않았으며, 그이유는운영체제의블록계층에서 I/O 요청을처리할때마다단일요청큐 (Request Queue) 에서발생하는잠금경쟁 (Lock Contention) 문제때문이었다 [11]. 이와유사하게 Quick Emulator(QEMU)[12] 기반가상화환경에서다중큐 SSD를사용할경우가상머신 (Virtual Machine) 의 I/O 성능에미치는영향을확인하기위해 FIO 벤치마크 [13] 를통해 4KB 랜덤읽기 IOPS를직접측정한결과, 그림 1에서보는바와같이단일큐기반 SSD는 I/O를발생시키는프로세스의수를증가시킬경우가상화환경과비가상화환경간의성능차이가거의없는반면에다중큐기반 SSD인 NVMe SSD는비가상화환경에서의성능대비최대 74% 의성 그림 1 가상화와비가상화환경에서 SATA SSD와 NVMe SSD의성능비교 Fig. 1 Performance comparison in a virtualized and a non-virtualized environment with a SATA SSD and an NVMe SSD through FIO 능저하가나타났다. 그원인은 QEMU 내부의잠금경쟁문제와병렬화문제때문이며, 이를해결하기위해가상 CPU당하나의전용큐와하나의전용 I/O 스레드 (Thread) 를할당하는새로운구조를제안한다. 본논문은다음과같이구성된다. 2장에서는새로운구조를제안하고, 3장에서는제안한구조를대상으로성능에대한실험결과를확인하며, 마지막으로 4장에서는결론을맺는다. 2. 구조및구현 2.1 가상 CPU 전용큐 QEMU는 I/O 성능향상을위해 Virtio-blk-dataplane[14] 이라는기법을사용한다. 이기술을분석해본결과, 한가상 CPU는기본적으로공유메모리인요청큐에접근할때반드시단일전역뮤텍스 (Mutex) 에락 (Lock) 을걸어야만한다. 이상황에서동일한큐를제어하려고하는다른가상 CPU들은지속적으로락이해제되기를기다린다. 이러한동작은가상 CPU들간의심각한잠금경쟁을유발하며, 이로인해내부적으로불필요한 CPU 스케쥴링 (Scheduling) 이야기된다. 따라서우리는기존 QEMU에가상 CPU마다전용요청큐를할당하는것을제안한다. 이방법은가장큰장점은잠금경쟁을최소화하여가상 CPU의병렬성을높일수있다는것이다. 그림 2(a) 와그림 2(b) 는 QEMU 를통해 4개의가상 CPU들을할당한가상머신을단순화시켜가상 CPU 전용큐의적용전후를나타낸것인데, 주로주요스레드들과데이터구조들을묘사하였다. 두개의구조의가장큰차이점은요청큐들의수이다. 이전연구들 [14,15] 에서는가상머신이다수의가상 CPU를사용함에도불구하고하나혹은소수의요청큐들을할당하여사용했었다. 멀티코어시스템에서가상
다중큐 SSD 기반 I/O 가상화프레임워크의성능향상기법 29 그림 2 Virtio-blk-data-plane과가상 CPU 전용큐및 I/O 스레드를가진구조의비교 Fig. 2 Comparison of the architecture of virtio-blk-dataplane and vcpu-dedicated queue with I/O thread 머신의전체성능을향상시키기위해가상머신은요청큐들의수보다많은가상 CPU를할당하게된다면이전연구들이제시했던구조는또다시잠금경쟁에시달릴가능성이높다. 따라서이잠금경쟁을지속적으로줄이기위해요청큐들의수는가상 CPU의수와일치해야한다. 결과적으로, I/O를지속적으로발생하는프로세스들의수가가상 CPU들의수와같을때락을획득하기위해기다리는시간이 50 마이크로세컨드에서 10 마이크로세컨드로약 80% 감소하였다. 그러나가상 CPU 전용큐뿐만아니라다음에소개할가상 CPU 전용 I/O 스레드역시 I/O의병렬성향상을위해절대적으로필요하다. 2.2 가상 CPU 전용 I/O 스레드가상 CPU 전용큐가전체적인 I/O 병렬성문제를부분적으로해결하지만그근본적인원인은단일 I/O 스레드와관계가깊다. 리눅스커널 (Linux Kernel) 은일반적으로 I/O 병렬성을위해 CPU 코어당소프트웨어큐와장치에의존적인다수의하드웨어큐를가지고있다. 또한 I/O 요청이들어올때해당 I/O를수행하는 CPU의번호에따라 I/O 요청이삽입되는소프트웨어큐의위치가결정된다. 하지만각각의가상 CPU가 I/O 수행을요청함에도불구하고호스트운영체제는어떠한가상 CPU가해당 I/O를요청하였는지인식하지못한다. 왜냐하면가상 CPU가아닌별도의단일 I/O 스레드가실질적으로모든 I/O 요청을처리하기때문이다. 이러한이유로가상머신이단일 I/O 스레드를가진경우모든 I/O 요청들은호스트블록계층의단하나의 큐에삽입되어처리된다. 결과적으로그단일 I/O 스레드는비효율적으로호스트의소프트웨어큐들을사용하게되며, 이는 I/O의병렬성향상에치명적이다. 다중큐 SSD는호스트의소프트웨어큐를전부활용할경우에그성능최대화할수있기때문에단일 I/O 스레드의경우다중큐 SSD의성능은소프트웨어큐들의이용률에의해제한된다. 또한그단일 I/O 스레드는수많은양의 I/O 완료동작을수행해야하기때문에필연적으로심각한병목현상을초래하게된다. 따라서우리는가상 CPU의개수만큼 I/O 스레드를할당하는가상 CPU 전용스레드구조를제안한다. 그리고각각의 I/O 스레드는가상 CPU 전용요청큐를가상 CPU와공유한다. 가상 CPU 전용 I/O 스레드기법은최종적으로다중큐 SSD의하드웨어큐들을최대한활용함으로써병렬성을향상시킬수있는데, 이는각각의 I/O 스레드가일반적으로중복되지않는 CPU 코어에서수행되기때문이다. 단일스레드기반 I/O 구조와가상 CPU 전용 I/O 스레드구조의차이점은그림 2(b) 와그림 2(c) 에서확인할수있다. 몇몇연구자들 [14,15] 은소수의 I/O 스레드들을통해 SSD에잠재된모든성능을활용할수있다고주장하였지만가상장치를이용하여직접성능을측정해본결과그것은사실과달랐다. 물론 I/O 집중적인 4개의프로세스들을이용할경우 750K IOPS 성능을가진최신 NVMe SSD의전체능력을사용할수있지만, SSD의성능은 SSD 병렬화구조와인터페이스기술의발전으로인하여지속적으로현재의성능한계를넘어서고있기때문에현재성능을만족시키는소수의 I/O 스레드를이용한구조는근시안적이다 [16]. 따라서단일 I/O 스레드로인해발생한근본적인성능제약사항을해결하기위해가상 CPU 전용 I/O 스레드를 QEMU에적용시켜야한다. 가상 CPU 전용큐와 I/O 스레드적용시불필요해진단일전역뮤텍스를모두제거하였으며, 각각의 I/O 스레드에 CPU 선호도 (Affinity) 를설정하여 I/O 처리완료 (I/O Completion) 시불필요한문맥교환 (Context Switch) 를감소시키고중복된 I/O Path를단축하였다. 3. 실험및평가 3.1 실험비교군우리는제안한구조를다음과같이다른두개의기법과비교하여평가하였다. 우선 Baseline은수정되지않은 QEMU 2.1.2이며, Virtio-blk-data-plane 기법을이용하였다. Baseline은 I/O 확장성문제를야기했던단일요청큐와단일 I/O 스레드구조이다. MQ는이전연구자 [15] 가제안한구조를가지고있으며, 소수의요청큐와단일 I/O 스레드를가지고있다. 우리는연구자의소
30 정보과학회논문지제 43 권제 1 호 (2016. 1) 스코드를수정없이사용하였으며, 실험에서는생성된가상 CPU의개수와동일하게 8개의요청큐를할당하였다. 마지막으로 MT는 Baseline과동일한 QEMU를기반으로가상 CPU 전용큐와 I/O 스레드를적용하였다. 3.2 평가환경모든실험은 Intel i7-2600 3.40GHz 쿼드코어 CPU와 16GB RAM이장착된시스템에서수행되었으며, 실물장치없이다중큐동작을시뮬레이션하는널블록장치 (Null Block Device)[17] 를대상으로측정하였다. 이것은리눅스널장치 (Null Device) 와내부적인 I/O 동작은유사하지만다중큐의특성을가지고있다. 또한실물장치가현재까지도달하지못하는성능범위까지검증이가능하다. 예를들어널블록장치는 8개의 I/O 프로세스를통해 1200K IOPS를달성할수있다. 실험시스템에하나의가상머신을생성하며, 가상머신은 8 개의가상 CPU와 14GB RAM을할당한다. 실험에사용된 CPU는쿼드코어 (Quad-core) 이지만하이퍼스레딩 (Hyper Threading) 을통해 8개스레드가동작할때최대성능을보이기때문에가상머신에서 8개의가상 CPU를할당한다. 추가로가상 CPU의개수가물리적인 CPU 코어수를넘어가는경우의실험도진행한다. 3.3 FIO 벤치마크모든 I/O 작업은요청 I/O 유형, 데이터크기, 큐의깊이, I/O 엔진, 캐쉬 (Cache) 방식그리고 I/O 발생프로세스의수등상세한환경설정을통해실험결과를명확히할수있는 FIO를통해생성된다. 기본적으로 4가지유형의 I/O 작업 (4KB 랜덤읽기, 4KB 랜덤쓰기, 32KB 순차읽기, 32KB 순차쓰기 ) 을통해평가하며, I/O 엔진은 Libaio, I/O 깊이는 32로설정하고캐쉬는사용하지않는다. I/O 확장성을검증하기위해 I/O를발생시키는프로세스의수는 1개부터 8개까지달리하였으며, 각 I/O 프로세스는총 1 GBytes의데이터를전송한다. 3.4 성능분석우리는제안한새로운구조의성능을평가하기이전 에효과를분석하기위해 FIO를이용하여 4KB 랜덤읽기를통해 IOPS와지연시간 (Latency) 그리고문맥교환의발생횟수를측정하였다. 첫번째로그림 3(a) 에서보는바와같이우리가제안한구조는 IOPS를효과적으로향상시켰다. 특히 MT 는다수의 I/O 스레드를통해서문맥교환의오버헤드 (Overhead) 를줄임으로써 Baseline과비교하여 IOPS를약 167% 향상시켰다. 그림 3(b) 를보면, 모든지연속도는 I/O 프로세스들의수에비례하여증가하는것을확인할수있다. Baseline, MQ, MT 사이에특이사항은없지만 Baseline이 MQ와 MT와비교하여 I/O 프로세스들의수가증가할수록가파르게지연속도가증가하는것을이실험을통해확인하였다. 예상했던것과같이 MT는지연속도를 Baseline과비교하여약 59% 감소시켰다. 마지막으로그림 3(c) 에서보는것과같이단위시간당문맥교환의발생횟수를측정해본결과, Baseline의경우문맥교환의발생횟수가다른것과비교하여 I/O 프로세스들의수가증가할수록급격하게증가하는것을확인할수있다. 반면에 MT의문맥교환발생횟수는 Baseline 대비약 10% 수준이었다. 이측정결과는단일요청큐와단일 I/O 스레드로인한과도한문맥교환의발생이성능저하의주요원인이었음을증명한다. 가상화의성능에대한선행연구에서가상머신의성능을저하시키는요인으로 Exit의오버헤드에초점을맞춰왔다. 일반적으로가상머신이동작하는게스트모드에서운영체제의커널이동작하는호스트모드로전환될때이 Exit이발생한다. 따라서우리는가상화환경에서 I/O 작업을처리하는동안발생하는 Exit의횟수와모든 Exit 이벤트를처리하는시간의총합을측정하였으며, 그결과물과성능의상관관계를분석하였다. 그림 4는성능카운터 (Performance Counter) 를측정하는리눅스표준툴인 PERF[18] 를이용하여측정된 Exit의종류별발생횟수와측정중발생한 Exit의총 그림 3 Baseline, MQ 그리고 MT 간의 IOPS, 지연시간, 문맥교환발생횟수의비교 Fig. 3 Comparison of IOPS, latency, and the number of context switches among Baseline, MQ, and MT
다중큐 SSD 기반 I/O 가상화프레임워크의성능향상기법 31 그림 4 Exit의종류및발생횟수그리고 Exit의처리시간의총합 Fig. 4 Measurement of the number of Exits and the total time for handling events 수행시간을나타낸결과이다. 우선 MT의경우 Baseline과비교하여 Exit의발생횟수가약 45% 감소하였다. 이는주로 MSR_WRITE(Model Specific Register Write), EXT_INT(External Interrupt) 그리고 HLT (Halt) 의감소로인한것이며특히 MSR_WRITE의경우약 95% 이상제거됨을확인하였다. 반면에 IO_INST (I/O Instruction) 는다소증가하는것을확인할수있 는데그이유는가상 CPU 전용큐와 I/O 스레드로인해 I/O 병렬성이향상되었기때문이다. Baseline과 MT 만을비교해보았을때 Exit 이벤트처리시간은 Exit의발생횟수에비례하는것처럼보인다. 하지만 MQ의경우 Exit의발생횟수가 MT보다약 65% 정도현저히적게발생했지만 Exit 이벤트처리시간과 IOPS 성능은 MT보다높지않다. 그이유는 MQ의경우 I/O가발생할때마다 Exit을발생시키지않고일정시간동안 I/O 를모아두었다가한번에처리하기때문이다. 이결과로보아일반적으로 Exit의발생횟수는 I/O 성능에중요한영향을미치지만절대적인것은아니며, 내부적인 I/O 병렬화또한 I/O 성능에중요한역할을한다는것을알수있다. 3.5 널블록장치에서의성능우리는세가지다른구조인 Baseline, MQ 그리고 MT를널블록장치를이용하여성능을측정하고비교하였으며, 성능측정시 I/O를발생시키는프로세스의수는 1개부터 16개까지증가시켰다. I/O 프로세스의수가가상 CPU와가상 CPU 전용큐의수를넘는경우도검증하기위해프로세스의수를 16개까지확인했다. 성능은 3.3. FIO 벤치마크에서언급한 4가지유형의 I/O 작업에대해 IOPS와데이터처리량의단위로측정하였다. 우선그림 5에서와같이 Baseline의경우 I/O 프로 그림 5 4 가지유형의 I/O 작업에대한성능측정결과 Fig. 5 Performance comparison of four types of I/O workloads among Baseline, MQ, and MIOT using a null block device
32 정보과학회논문지제 43 권제 1 호 (2016. 1) 세스의수를증가시킴에도불구하고성능이점차감소하였지만, 반면에 MQ와 MT는점차증가하였다. 특히 MT의랜덤읽기 IOPS( 그림 5(a)) 는 Baseline과비교했을때최대 2.55배, 그리고 MQ 대비해서는 32% 향상되었다. 그리고다른 I/O 작업유형에대한성능역시그림 5(b), 그림 5(c), 그림 5(d) 에서보는것과 Baseline 대비각각 128%, 210% 그리고 73% 증가하였다. 우리가제안한구조는뛰어난성능향상을보여주었지만 I/O 프로세스의수가 8개를넘어갈경우더이상성능이크게향상되지않은현상이관찰되었다. 이것은기본적으로내재된가상화계층의오버헤드로인해발생한것이다. 우리는옥타코어 (Octa-core) CPU가장착된시스템에서동일한실험을진행한결과쿼드코어 CPU에서실험한결과와거의동일한결과를얻을수있었다. 아쉽게도오늘날까지소프트웨어기반 I/O 가상화에서기본적인오버헤드를완벽하게제거하는것은불가능하다. 결과적으로우리가제안한구조는랜덤읽기에서 413K IOPS, 랜덤쓰기에서 358K IOPS, 순차읽기는 10.5 GB/s, 순차쓰기의경우 10.1 GB/s의성능이나타났다. 이실험결과는 Baseline과비교할때랜덤읽기를기준으로최대 155% 개선된수치이다. 지금까지물리적인 CPU 코어의개수가가상머신의가상 CPU 수와동일한경우에대한실험만을진행하였으나가상 CPU 그리고가상 CPU 전용큐및 I/O 스레드의수가물리적인 CPU 코어의개수보다많은경우어떠한성능을보이는지랜덤읽기성능측정을통해검증해보았다. 그림 6은가상머신의가상 CPU를 16개생성한후랜덤읽기에대한성능평가결과이며, 그수치를보면 Baseline은 8개의 I/O 프로세스이후급격하게 I/O 성능이하락하는것을확인할수있었다. MQ의경우도 7개에서 8개의 I/O 프로세스로동작할때최고 성능을보여주고그후그성능을유지하거나일부하락하였다. 반면에 MT는물리적인 CPU 코어의개수를넘는일부구간에서성능을유지하거나다수의구간에서약 4% 에서 9% 향상된성능이나타났으며, 그결과 I/O 프로세스가 15개일때약 393K IOPS인최대성능을보여주었다. 결과적으로다른두개의기법과는달리우리가제안한기법은물리적인 CPU 코어를넘는 I/O 확장시성능하락없이지속적으로성능을유지함을확인하였다. 4. 결론및향후연구우리는최근가상화환경에서다중큐 SSD를보조기억장치로사용하였을경우가상머신에서실질적인다중큐 SSD의성능을충분히활용하지못하고있음을관찰하였다. 그이유는 I/O 가상화프레임워크에서다중큐 SSD로 I/O를요청할때가상머신에서발생하는심각한잠금경쟁때문이다. 게다가가상머신들은호스트에존재하는다수의 I/O 큐를효율적으로사용하지못하는병렬성문제를가지고있다. 이러한문제들을해결하기위해우리는가상 CPU 전용큐와 I/O 스레드로구성된새로운구조를제안하였다. 또한우리가제안한구조를널블록장치를대상으로다양한종류의 I/O 작업들을통해성능을측정하였으며, 그결과최신 I/O 가상화기술인 Virtio-blk-data-plane과비교하여 IOPS 성능의경우최대약 2.55배성능이향상되었고, 데이터처리량은최대약 210% 많아졌다. 모든실험은널블록장치를대상으로진행되었으며널블록장치가 NVMe의동작을거의유사하게모사하도록설계되었지만실제 NVMe SSD를대상으로동일한실험을진행할경우본논문과같은결과가나올지확인이필요하다. 또한멀티코어를넘어매니코어 (Manycore) 환경에서어느정도의성능이나타나고또다른문제점이존재하지는않는지추후연구를진행할계획이다. References 그림 6 가상 CPU의수가물리적인 CPU 코어의수를넘는경우에서의성능측정 Fig. 6 IOPS when the number of vcpus exceeds the number of CPU cores [1] D. Abramson, "Intel virtualization technology for directed I/O," Journal of Intel Technology Journal, Vol. 10, No. 3, pp. 179-191, 2006. [2] R. Mijat and A. Nightingale, "Virtualization is coming to a platform near you," ARM White Paper, 2011. [3] Y. Dong, X. Yang, J. Li, G. Liao, K. Tian, and H. Guan, "High performance network virtualization with SR-IOV," Journal of Parallel Distributed. Computing, Vol. 72, No. 1, pp. 1471-1480, 2012. [4] AMD I/O virtualization technology (IOMMU) specification [Online]. Available: http://developer.amd.
다중큐 SSD 기반 I/O 가상화프레임워크의성능향상기법 33 com/wordpress/media/2012/10/488821.pdf (downloaded 2015, Sep. 6) [5] KVM live migration [Online]. Available: http:// www.linux-kvm.org/images/5/5a/kvmforum2007$ Kvm_Live_Migration_Forum_2007.pdf (downloaded 2015, Sep. 6) [6] C. Clark, K. Fraser, S. Hand, J. G. Hansen, E. Jul, C. Limpach, and A. Warfield, "Live migration of virtual machines," Proc. of 2nd Symposium on Networked System Design & Implementation, pp. 273-286, 2005. [7] R. Russell, "VIRTIO: towards a de-facto standard for virtual I/O devices," ACM SIGOPS Operating Syst. Review, Vol. 42, No. 5, pp. 95-103, 2008. [8] A. Kivity, Y. Kamay, D. Laor, UY. Lublin, and A. Liguori, "KVM: the linux virtual machine monitor," Proc. of Linux Symposium, pp. 225-230, 2007. [9] N. Har'El, A. Gordon, A. Landau, M. Ben-Yehuda, A. Traeger, and R. Ladelsky, "Efficient and scalable paravirtual I/O system," Proc. of USENIX Annual Technical Conference, pp. 231-242, 2013. [10] NVM Express specification 1.2 [Online]. Available: http://www.nvmexpress.org/wp-content/uploads/n VM-Express-1_2-Gold-20141209.pdf (downloaded 2015, Sep. 6) [11] M. Bjorling, J. Axboe, D. Nellans, and P. Bonnet, "Linux block IO: Introducing multi-queue SSD access on multi-core system," Proc. of the 6th International Systems and Storage Conference, pp.22:1-22:10, 2013. [12] F. Bellard, "QEMU, a fast and portable dynamic translator," Proc. of USENIX Annual Technical Conference, pp. 41-46, 2005. [13] J. Axboe. Fio-Fexible IO Tester [Online]. Available: http://freecode.com/projects/fio (downloaded 2015, Sep. 6) [14] K. Huynh, A. Theurer, and S. Hajnoczi. KVM virtualized I/O performance [Online]. Available: ftp:// public.dhe.ibm.com/linux/pdfs/kvm_virtualized_io Performance_Paper.pdf (downloaded 2015, Sep. 6) [15] M. Lei. Virtio Blk multi-queue conversion [Online]. Available: http://www.linux-kvm.org/wiki/images/ 6/63/02x06a-VirtioBlk.pdf (downloaded 2015, Sep. 6) [16] K. Eshghi and R. Micheloni, "SSD architecture and PCI Express interface," Inside Solid State Drives (SSDs), pp. 19-45, 2013. [17] Null block device driver [Online]. Available: https:// www.kernel.org/doc/documentation/block/null _blk. txt (downloaded 2015, Sep. 6) [18] Perf: linux profiling with performance counters [Online]. Available: https://perf.wiki.kernel.org (downloaded 2015, Sep. 6) 김태용 2008 년동국대학교컴퓨터공학과학사 2014 년성균관대학교 DMC 공학과석사관심분야는운영체제, 스토리지시스템, 가상화기술 강동현 2007년한국산업기술대학교컴퓨터공학과학사. 2010년성균관대학교전자전기컴퓨터공학과석사. 2013년~현재성균관대학교전자전기컴퓨터공학과박사과정관심분야는스토리지시스템, 운영체제 엄영익 1983년서울대학교계산통계학과학사 1985년서울대학교전산과학과석사 1991년서울대학교전산과학과박사 1993년~현재성균관대학교정보통신대학교수. 관심분야는시스템소프트웨어, 운영체제, 가상화, 파일시스템