[qemu] 在前端驱动使用virtio的情况下,如何让后端使用vhost-user [未解决]

首先,如果你更关心原理和知识,请读读这个 http://chuansong.me/n/2186528 (值得细细的逐字读)。

在<<深入浅出dpdk>>中提到,vhost-user(用户态驱动)配合前端virtio(这就是传说中的半虚拟化)性能最佳。

我们的目标是:qemu如何使用vhost-user

一,man qemu

其中涉及到的一个名称MSIX(https://en.wikipedia.org/wiki/Message_Signaled_Interrupts)(没细看,简单的说就是PCIE很牛逼的中断 特性/技术)。

二,在man中,我们找到了这个例子

 qemu -m 512 -object memory-backend-file,id=mem,size=512M,mem-path=/hugetlbfs,share=on                    -numa node,memdev=mem                    -chardev socket,path=/path/to/socket                    -netdev type=vhost-user,id=net0,chardev=chr0                    -device virtio-net-pci,netdev=net0

根据以上的例子猜测这个原理是这样的:host有一个net0,然后通过pci设备把net0注册给了guest里的pci网卡设备。他们在host的操作系统层面上是通过socket也就是chr0进行进程间通讯的(通讯的两个进程分别是qemu程序和用户态网卡驱动)。除了通讯呢,还与数据交换,这个交换通过hugepage完成,这个hugepage实际上是host层面上的,所以需要在host里设置hugepage然后给guest使用。

基于猜测,可以分成,内存和网卡两个部分分别对这个想法进行印证。

三,网卡部分

我们已dpdk虚拟机作为实验的对象(又是他,倒霉的虚拟机小d  - -!)

[[email protected] dpdk]$ qemu-system-x86_64 -chardev socket,id=chr0,path=./sock,server
QEMU waiting for connection on: disconnected:unix:./sock,server
qemu-system-x86_64 -enable-kvm         -m 2G -cpu Nehalem -smp cores=2,threads=2,sockets=2         -numa node,mem=1G,cpus=0-3,nodeid=0         -numa node,mem=1G,cpus=4-7,nodeid=1         -drive file=disk.img,if=virtio         -chardev socket,id=chr0,path=./sock         -netdev vhost-user,id=net0,chardev=chr0         -device virtio-net-pci,netdev=net0          &

命令都不对,始终不能成功,本地socket要等待链接才能继续。最终想了办法如上操作,结果第一个命令的qemu启动了,第二个却没有启动。

悬而未决,现不弄了。。。

时间: 2024-11-04 10:47:07

[qemu] 在前端驱动使用virtio的情况下,如何让后端使用vhost-user [未解决]的相关文章

破解windows下MySQL服务启动不了的情况下不能对其进行全然卸载的解决方式

下面的文章主要介绍的是在MySQL服务启动不了的情况下,不能对其进行全然卸载的实际解决的方法的描写叙述,下面就是对解决MySQL服务启动不了的情况下详细方案的描写叙述,希望在你今后的学习中会对你有所帮助. MySQL 5.1 安装过程中报apply security setting错误的解决的方法 1, 卸载MySQL 2, 删除文件夹 C:\Documents and Settings\All Users\Application Data\MySQL 3, 又一次安装MySQL 就 OK 啦

在UITableViewStylePlain情况下sectionHeader可以与tableview一起滑动的解决方法

-(void)scrollViewDidScroll:(UIScrollView *)scrollView { CGFloat sectionHeaderHeight = 20; if (scrollView.contentOffset.y <= sectionHeaderHeight&&scrollView.contentOffset.y > 0) { scrollView.contentInset = UIEdgeInsetsMake(-scrollView.content

多种字符集并存情况下sqoop从MySQL导入HBase中文乱码解决

最近在做binlog日志采集同步到数据平台的事.刚开始需要借助sqoop将从库数据表数据初始化到hbase中,整个过程都需要自动化进行,尽量减少人为干预.但是,由于历史原因,线上存在两种字符集格式的数据库(表),而导入到hbase的数据我们需要统一采用utf-8格式存储.sqoop直接导入的话,没法控制中文字符转码工作.所以需要对sqoop源码进行简单改动支持这种方式. 大体思路是,通过定义一个接口可以从InformationSchema库的tables中获取某个表的table-collatio

virtio前端驱动详解

2016-11-08 前段时间大致整理了下virtIO后端驱动的工作模式以及原理,今天就从前端驱动的角度描述下目前Linux内核代码中的virtIO驱动是如何配合后端进行工作的. 注:本节代码参考Linux 内核3.11.1代码 virtIO驱动从架构上来讲可以分为两部分,一个是其作为PCI设备本身的驱动,此驱动需要提供一些基本的操作PCI设备本身的函数比如PCI设备的探测.删除.配置空间的设置和寄存器空间的读写等.而另一个就是其virtIO设备本身实现的功能驱动例如网络驱动.块设备驱动.con

DeskMini无传统机械键盘与鼠标接口的情况下使用U盘安装系统经验总结

总结安装纯净版Win7旗舰版系统安装过程所解决的问题要点: 1:UEFI引导启动的实现. 2:使用Dism++实现系统的安装. 3:使用Dism++解决新主板在安装系统过程中不能使用USB键盘和鼠标的问题. 解决过程: 准备工作: 去MSDN网站下载Win7SP1纯净版的ISO文件.(Windows 7 Ultimate with Service Pack 1 (x64) - DVD (Chinese-Simplified) : ed2k://|file|cn_windows_7_ultimat

端口限制情况下php+xdebug环境配置

PHP程序在开发的时候调试是比较方便的,大体情况下,输出,打log是可以解决几乎所有问题. 但是还不够,有些问题,用打log的形式定位问题是相当痛苦的事情,有些时候测试环境没配好的话,你可能需要做许多的准备,才能跑一次调试,然后各种log看的头晕. Xdebug是一个可以用于PHP断点调试的强大工具,可以大大缩短定位问题的时间,而且一步步的调试,更容易发现一些,你很难注意到的潜在问题. 背景: 1.公司内网,动态ip,有很多的接口权限都是需要对应的网络策略的,代码框架并没有很好的支持生产环境和测

XmlReader在未知元素的名称和属性的名称的情况下读取属性

经过昨天到今天的努力以及博问上好心人的帮助,终于解决了XmlReader在未知元素的名称和属性的名称的情况下读取属性的方法. 在没有解决前,我的代码如下: 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Xml; 6 7 namespace ReadAttribute 8 { 9 class Program 10 { 11 st

在两种情况下设备与驱动会发生匹配

在两种情况下设备与驱动会发生匹配:(基于linux内核3.0) 当设备插入系统时,设备挂接到总线上,与总线上的所有驱动进行匹配(bus_type.match进行匹配), 如果匹配成功,则调用bus_type.probe或者driver.probe初始化该设备,挂接到总线上,如果匹配失败,则只是将该设备挂接到总线上. 当驱动注册到系统时,驱动挂接到总线上,与总线上的所有设备进行匹配(用bus_type.match进行匹配),如果匹配成功,则调用bus_type.probe或者driver.prob

如何在设备驱动冲突导致蓝屏的情况下强制删除该设备驱动

小梅哥编写,未经允许,不得用于任何商业用途. 插上设备,在设备管理器中选择要卸载的设备驱动,卸载其驱动,大家都会,但是万一设备一插上电脑就蓝屏,连设备管理器打开的机会都不给你咋办呢?这里找到了解决办法.该办法还可以帮忙清理一大堆无用的驱动哦. 这两天,玩儿了下CrazyBingo的那个USB Camera.他那个Camera是用USB2.0芯片CY7C68013做的,该芯片默认驱动不支持win764位.需要关闭windows强制签名.我就关了这个驱动签名,关闭之后成功的安装了驱动并捕获到了图像.