原文地址:http://smilejay.com/2016/06/virtio-blk-data-plane-configuration/

virtio-blk-data-plane是qemu/kvm中的一种高性能的块设备I/O方式,它最初在qemu 1.4版本中被引入。virtio-blk-data-plane与传统virtio-blk相比,它为每个块设备单独分配一个线程用于I/O处理,virtio-blk-data-plane线程不需要与原qemu执行线程同步和竞争锁,而且它使用 ioeventfd/irqfd 机制,同时利用host linux上的AIO(异步I/O)来出来guest的I/O请求。所以效率上有一定的提升。

基本原理和机制,如下图所示:

在libvirt的guest xml配置中,可以使用如下配置来设置virtio-blk-data-plane:(和平常用的一个xml文件做了下diff)
https://github.com/smilejay/kvm-book/blob/master/conf/virtio-blk-data-plane-configure.diff

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

diff --git 1/kvm_guest.xml b/kvm_guest.xml

index 264947b..51bc324 100644

--- a/kvm_guest.xml

+++ b/kvm_guest.xml

@@ -1,4 +1,4 @@

-<domain type='kvm'>

+<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>

<name>GUESTNAME</name>

<uuid>UUID</uuid>

<memory unit='KiB'>MEMORY</memory>

@@ -27,7 +27,7 @@

<devices>

<emulator>/usr/bin/qemu-kvm</emulator>

<disk type='file' device='disk'>

-      <driver name='qemu' cache="none" type='IMAGEFORMAT'/>

+      <driver name='qemu' cache="none" type='IMAGEFORMAT' io='native'/>

<source file='DISKPATH'/>

<target dev='vda' bus='HDDRIVER'/>

</disk>

@@ -56,4 +56,17 @@

<memballoon model='virtio'>

</memballoon>

</devices>

+  <qemu:commandline>

+    <qemu:arg value='-set'/>

+    <qemu:arg value='device.virtio-disk0.scsi=off'/>

+  </qemu:commandline>

+  <!-- config-wce=off is not needed in RHEL 6.4 -->

+  <qemu:commandline>

+    <qemu:arg value='-set'/>

+    <qemu:arg value='device.virtio-disk0.config-wce=off'/>

+  </qemu:commandline>

+  <qemu:commandline>

+    <qemu:arg value='-set'/>

+    <qemu:arg value='device.virtio-disk0.x-data-plane=on'/>

+  </qemu:commandline>

</domain>

在qemu命令行中直接使用的参数示意:
qemu-kvm -drive if=none,id=drive0,cache=none,aio=native,format=raw,file= -device virtio-blk-pci,drive=drive0,scsi=off,x-data-plane=on

由于我没有用ssd,就随意用qemu-2.1配合kvm用FIO测试了一下,看到virtio-blk-data-plane比virtio-blk提升了10%~20%吧(这个数字未经严格测试哈)。同时,看到在直接使用 virtio-blk 时(只用了一个块设备),FIO测试压力较大时,qemu自己启动了几十个线程在做I/O,效率也不错的。

另外,看文档提到使用virtio-blk-data-plane后,storage migration, hot unplug, I/O throttling 等功能也许不可用了(我还没试过)。

参考文章:
http://blog.vmsplice.net/2013/03/new-in-qemu-14-high-performance-virtio.html
ftp://public.dhe.ibm.com/linux/pdfs/KVM_Virtualized_IO_Performance_Paper.pdf
http://blog.csdn.net/Memblaze_2011/article/details/48808147

VIRTIO-BLK-DATA-PLANE的配置使用相关推荐

  1. virtio网络Data Plane卸载原理——vhost-net master

    文章目录 接口用法 libvirt qemu 数据结构 配置信息 vhost_vring_addr vhost_memory vhost_vring_file vhost网卡 Netdev Netde ...

  2. virtio网络Data Plane卸载原理——vhost protocol

    文章目录 背景 原理 vhost protocol vhost-net 数据结构 VhostBackendType ioctl cmd VhostOps 背景 virtio协议基于虚机和主机可以共享内 ...

  3. virtio网络Data Plane卸载原理 —— vhost协议协商流程

    文章目录 基本原理 网卡初始化 网卡使能 数据结构 VhostUserMsg NetVhostUserState vhost_dev vhost_net 协商流程 初始化流程 chardev netd ...

  4. DPDK(Data Plane Development Kit)快速处理数据包 开发平台及接口 简介

    一.网络IO的处境和趋势 从我们用户的使用就可以感受到网速一直在提升,而网络技术的发展也从1GE/10GE/25GE/40GE/100GE的演变,从中可以得出单机的网络IO能力必须跟上时代的发展. 1 ...

  5. springmvc jpa_使用JavaConfig的SpringMVC4 + Spring Data JPA + SpringSecurity配置

    springmvc jpa 在本文中,我们将看到如何使用JavaConfig配置和集成SpringMVC4,带有Hibernate的Spring Data JPA和SpringSecurity. 1. ...

  6. 使用JavaConfig的SpringMVC4 + Spring Data JPA + SpringSecurity配置

    在本文中,我们将看到如何使用JavaConfig配置和集成SpringMVC4,带有Hibernate的Spring Data JPA和SpringSecurity. 1.首先让我们在pom.xml中 ...

  7. 【计算机网络-自顶向下】4—Network Layer: Data Plane网络层:数据平面(概述、路由器工作原理、IPv4、DHCP、IPv6)

    4 Network Layer:Data Plane网络层:数据平面 ⭐⭐⭐⭐⭐⭐ Github主页

  8. CYQ.Data.ProjectTool 项目配置工具发布(包源码)

    2019独角兽企业重金招聘Python工程师标准>>> 前言: 一直被网友催,说要更新下  CYQ.Data 的枚举生成器,这工具自从V4.5版本之后,就没再发布过新版本,事实上,我 ...

  9. elasticsearch负载均衡节点——客户端节点 node.master: false node.data: false 其他配置和master 数据节点一样...

    elasticSearch的配置文件中有2个参数:node.master和node.data.这两个参 数搭配使用时,能够帮助提供服务器性能. 数据节点node.master: false node. ...

  10. Spring Data之MongoDB配置

    一.重写基类扩展功能 package com.mk.mongodb.repository;import org.springframework.data.mongodb.core.MongoOpera ...

最新文章

  1. 系列文章|OKR与敏捷(二):实现全栈敏捷
  2. R语言dplyr包all_equal函数检查多个dataframe是否相同实战
  3. 编写程序,输入某年某月,求该月有多少天
  4. jq 切换功能toggle
  5. 博为峰Java技术文章 ——JavaSE Swing列表框选取事件的处理
  6. 启动mysql的innodb monitor功能
  7. miui微博html5版关闭,MIUI10迎来最后一波开发版推送 可关闭广告消息
  8. 精简jdk包_具有JDK 12精简数字格式的自定义精简数字模式
  9. 测试驱动开发 测试前移_为什么测试驱动的开发有用?
  10. 安装XDS110驱动时系统找不到指定文件
  11. js未知数加已知数的结果数,三者的每个数字不重复
  12. asp.net问题点集合
  13. 与体育行业有关的e–r图_国家体育产业统计分类
  14. 【软考系统架构设计师】2016下系统架构师案例分析历年真题
  15. QAC静态代码测试工具试用介绍_c/c++
  16. 【项目管理/PMP/PMBOK第六版/新考纲】纯干货!商业论证/效益管理计划/项目运行环境/组织过程资产/环境事业因素/组织系统,系列笔记建议收藏!
  17. 【控制篇 / 应用】(6.0) ❀ 01. 只允许使用 QQ 和微信 (上) ❀ FortiGate 防火墙
  18. 周末愉快——程序猿的浪漫css画玫瑰礼盒
  19. 腾讯云直播SDK接入指南
  20. 万物心选—新生代妈妈创业的优质之选

热门文章

  1. java毕业设计——基于java+JSP+MySQL的健身俱乐部会员管理系统设计与实现(毕业论文+程序源码)——健身俱乐部会员管理系统
  2. byte 16进制 2进制理解
  3. python按条件删除行_python – 根据条件删除行组
  4. Eclipse下载不了,无法访问此网页,不要慌,2步解决问题5.20
  5. 张孝祥张老师一路走好!
  6. medusa详细使用教程
  7. MySQL之按日期查询表数据
  8. [brew]切换brew源
  9. 机械秒表的使用方法_秒表、机械秒表、504秒表,505无暂停机械秒表
  10. K核苷酸频率(KNF,k-nucleotide frequencies)或K-mer频率