VIRTIO-BLK-DATA-PLANE的配置使用
原文地址: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的配置使用相关推荐
- virtio网络Data Plane卸载原理——vhost-net master
文章目录 接口用法 libvirt qemu 数据结构 配置信息 vhost_vring_addr vhost_memory vhost_vring_file vhost网卡 Netdev Netde ...
- virtio网络Data Plane卸载原理——vhost protocol
文章目录 背景 原理 vhost protocol vhost-net 数据结构 VhostBackendType ioctl cmd VhostOps 背景 virtio协议基于虚机和主机可以共享内 ...
- virtio网络Data Plane卸载原理 —— vhost协议协商流程
文章目录 基本原理 网卡初始化 网卡使能 数据结构 VhostUserMsg NetVhostUserState vhost_dev vhost_net 协商流程 初始化流程 chardev netd ...
- DPDK(Data Plane Development Kit)快速处理数据包 开发平台及接口 简介
一.网络IO的处境和趋势 从我们用户的使用就可以感受到网速一直在提升,而网络技术的发展也从1GE/10GE/25GE/40GE/100GE的演变,从中可以得出单机的网络IO能力必须跟上时代的发展. 1 ...
- springmvc jpa_使用JavaConfig的SpringMVC4 + Spring Data JPA + SpringSecurity配置
springmvc jpa 在本文中,我们将看到如何使用JavaConfig配置和集成SpringMVC4,带有Hibernate的Spring Data JPA和SpringSecurity. 1. ...
- 使用JavaConfig的SpringMVC4 + Spring Data JPA + SpringSecurity配置
在本文中,我们将看到如何使用JavaConfig配置和集成SpringMVC4,带有Hibernate的Spring Data JPA和SpringSecurity. 1.首先让我们在pom.xml中 ...
- 【计算机网络-自顶向下】4—Network Layer: Data Plane网络层:数据平面(概述、路由器工作原理、IPv4、DHCP、IPv6)
4 Network Layer:Data Plane网络层:数据平面 ⭐⭐⭐⭐⭐⭐ Github主页
- CYQ.Data.ProjectTool 项目配置工具发布(包源码)
2019独角兽企业重金招聘Python工程师标准>>> 前言: 一直被网友催,说要更新下 CYQ.Data 的枚举生成器,这工具自从V4.5版本之后,就没再发布过新版本,事实上,我 ...
- elasticsearch负载均衡节点——客户端节点 node.master: false node.data: false 其他配置和master 数据节点一样...
elasticSearch的配置文件中有2个参数:node.master和node.data.这两个参 数搭配使用时,能够帮助提供服务器性能. 数据节点node.master: false node. ...
- Spring Data之MongoDB配置
一.重写基类扩展功能 package com.mk.mongodb.repository;import org.springframework.data.mongodb.core.MongoOpera ...
最新文章
- 系列文章|OKR与敏捷(二):实现全栈敏捷
- R语言dplyr包all_equal函数检查多个dataframe是否相同实战
- 编写程序,输入某年某月,求该月有多少天
- jq 切换功能toggle
- 博为峰Java技术文章 ——JavaSE Swing列表框选取事件的处理
- 启动mysql的innodb monitor功能
- miui微博html5版关闭,MIUI10迎来最后一波开发版推送 可关闭广告消息
- 精简jdk包_具有JDK 12精简数字格式的自定义精简数字模式
- 测试驱动开发 测试前移_为什么测试驱动的开发有用?
- 安装XDS110驱动时系统找不到指定文件
- js未知数加已知数的结果数,三者的每个数字不重复
- asp.net问题点集合
- 与体育行业有关的e–r图_国家体育产业统计分类
- 【软考系统架构设计师】2016下系统架构师案例分析历年真题
- QAC静态代码测试工具试用介绍_c/c++
- 【项目管理/PMP/PMBOK第六版/新考纲】纯干货!商业论证/效益管理计划/项目运行环境/组织过程资产/环境事业因素/组织系统,系列笔记建议收藏!
- 【控制篇 / 应用】(6.0) ❀ 01. 只允许使用 QQ 和微信 (上) ❀ FortiGate 防火墙
- 周末愉快——程序猿的浪漫css画玫瑰礼盒
- 腾讯云直播SDK接入指南
- 万物心选—新生代妈妈创业的优质之选
热门文章
- java毕业设计——基于java+JSP+MySQL的健身俱乐部会员管理系统设计与实现(毕业论文+程序源码)——健身俱乐部会员管理系统
- byte 16进制 2进制理解
- python按条件删除行_python – 根据条件删除行组
- Eclipse下载不了,无法访问此网页,不要慌,2步解决问题5.20
- 张孝祥张老师一路走好!
- medusa详细使用教程
- MySQL之按日期查询表数据
- [brew]切换brew源
- 机械秒表的使用方法_秒表、机械秒表、504秒表,505无暂停机械秒表
- K核苷酸频率(KNF,k-nucleotide frequencies)或K-mer频率