Virtio Block 성능 세부 분석

컴퓨터공부/가상화기술 2019.05.20 20:28 Posted by 아는 개발자

예전 포스트에서는 iozone을 이용해 Virtio block 드라이버의 성능을 간단하게 측정해봤다면  이번 글에는 범용적으로 사용되는 스토리지 벤치마크인 fio를 이용해 Virtio Block의 성능을 좀더 디테일하게 분석해보려고 한다.


실험의 큰 단위를 Sequential, Random으로 나누고 각각의 I/O size를 바꿔봤을 때 Host와 VM의 성능 차이가 어느 정도 나오는지를 분석 해봤다.


1. Seq 512K, Rand 4K


 

 Host

VM 

Ratio 

Random Read 

7705MB/s 

5184MB/s 

67% 

Random Write 

120MB/s 

69.9MB/s 

58% 

Sequential Read 

13.5GB/s 

12.4GB/s 

91% 

Sequential Write 

501MB/s 

346MB/s 

69% 


Sequential에는 512K의 io size를, Random인 경우에는 4K 단위로 io size를 줬다. 이 값들은 실제 스토리지 벤치마크에서 자주 사용되는 단위다. 


결과 값의 편차가 크기는 하지만 Sequential의 경우가 Random의 경우보다 성능이 더 잘 나오는 것으로 보인다. 그런데 random이 sequential 대비 성능이 이렇게 떨어지는 것은 이상해 보인다. 읽는 과정은 크게 차이가 없어 보이는데 말이다.


2. Random 512K 


 

 Host

VM 

Ratio 

 Random Read

13.3GB/s 

12.5GB/s 

93% 

 Random Write

524MB/s 

366MB/s 

70% 


Random Access가 원인이기 보다는 I/O size의 크기에 따라 성능이 달라지는 것 같아서 Random의 경우에도 Sequential과 동일하게 I/O 사이즈를 512K로 줬다. 그러자 Sequential 때와 거의 비슷한 수준으로 성능이 나타났다. I/O 사이즈에 따라서 성능이 들쭉날쭉한다. 


3. Virtio Block Process Sequence




간략하게 표현하면 Virtio Block 드라이버의 처리 루틴은 위와 같은 방식으로 이뤄진다. 실제 스토리지 장치에 접근하는 Block Driver는 Native와 똑같은 장치를 사용하고 있으니 이 지점에서는 Native와 Virtual Machine 모두 똑같은 원리로 동작해 성능 차이가 나지 않는다. 오버헤드가 발생할 수 있는 부분은 이 지점 이외의 부분, VM에서 Block 드라이버까지 요청이 전달 되는 화살표로 표현한 과정에서 발생한다. 화살표 요청의 횟수가 적을수록 Native에 비슷한 성능을 내고 많을수록 저조한 성능을 보인다.


4. I/O operations between 4K random and 512K random 


QEMU의 trace 기능을 이용해 4K일 때와 512K일 때 Virtio Block 함수를 호출하는 횟수를 측정 해봤다.


 

 4K

512K 

 4K / 512K

 Random Read

 279727

25733 

 10.87 : 1

 Random Write 

 3920485

141694 

 27.6687


Read의 경우에는 4K의 경우가 512K보다 10배 정도 더 Virtio Block 관련 함수를 호출하고 Write의 경우에는 27배 더 호출하고 있다. 호출 횟수와 실제 성능과 비교해보면 Random Read의 Host 대비 성능(67%)이 Random Write의 결과값(58%)보다 높게 나온 것으로 보아 Virtio Block 함수 호출 횟수와 어느정도 비례하고 있는 것을 알 수 있다. 


'컴퓨터공부 > 가상화기술' 카테고리의 다른 글

Virtio Block 성능 세부 분석  (0) 2019.05.20
Virtio Block 성능 벤치마크  (0) 2018.12.23
QEMU를 이용해 커널 이미지 바꿔서 부팅해보기  (0) 2018.12.20
kvm ioeventfd  (0) 2018.08.11
kvm irqfd  (0) 2018.08.11
vhost  (0) 2018.07.08
TAG , ,