l298n电机驱动模块使用方法_SPDK virtio 驱动模块介绍及使用

作者简介闫亮 Intel高级软件工程师专注于开源存储SPDK的测试和优化

简介

CONTENTS

SPDK  virtio模块介绍

SPDK  virtio 用户模式使用示例

SPDK  virtio PCI模式使用示例

总结

第一章

SPDK virtio模块介绍

众所周知,Virtio协议定义了两个块设备驱动,virtio-blk和virtio-scsi。SPDK Vhost target提供了VM中virtio-blk/scsi半虚拟化IO请求的加速器,相比较原来的QEMU virtio-blk方案以及kernel vhost-scsi方案极大的提高了性能,VM内置的内核半虚拟化驱动即可使用。

现在SPDK在使用相同的vhost target基础上,更进一步的提供了一个用户态的virtio bdev模块,有两个传输层:

 * PCI:在VM中使用,该模块提供了在VM中使用用户态驱动访问后端块设备的能力,用户需要卸载掉原内核的virtio-blk/scsi驱动,绑定virtio控制器到uio模块

 * Vhost-user模式:提供进程间使用virtio-blk/scsi协议访问vhost target的块设备驱动,可以直接集成到用户的独立进程中使用,例如container。

目前SPDK virtio驱动模块只实现了virtio 1.0 版本。

下图是SPDK virtio整体介绍:

0225562099a0f4e93599771192a4b687.png

第二章 

SPDK virtio 用户模式使用示例

SPDK virtio用户模式的使用场景可以参考下图:

b48e55b13c3e4ce78b53a3f5ff4e238f.png

如上图所示,SPDK vhost socket和使用virtio块设备的SPDK进程在同一台机器。

参考步骤如下:

在host机器中,使用如下命令配置和编译SPDK:

[root@]./configure --with-vhost --with-virtio && make启动vhost主进程:

[root@] ./app/vhost/vhost -i 0

创建vhost controller,以下是vhost blk示例:

[root@]./scripts/rpc.py bdev_malloc_create 128 512

[root@]./scripts/rpc.py vhost_create_blk_controller vhostblk0 Malloc0

启动spdk bdevperf进程:

[root@] ./test/bdev/bdevperf/bdevperf-q 128 -o 4096 -w randread -t 300 -z -r /var/tmp/newspdk.sock -m 0x2 -g

Vhost-user需要连续的内存,如果使用2MiB的hugepage时,注意要加-g参数,只创建一个hugetlbfs文件。因为是第二个进程,所以要加-r参数,创建新的rpc 监听地址。同时要采用和vhost进程不同的core。

接着是创建virtio bdev:

[root@]./scripts/rpc.py  -s  /var/tmp/newspdk.sock   bdev_virtio_attach_controller -t user -a /home/storage/spdk/vhostblk0 -d blk virtioblk0

这样,就创建了user模式的virtio块设备。

我们还可以运行bdevperf,测试一下virtio块设备的性能:

[root@]PYTHONPATH=$PYTHONPATH:./scripts/  test/bdev/bdevperf/bdevperf.py -s/var/tmp/newspdk.sock  -t 1000perform_tests

经过五分钟,bdevperf工具就会打印测试结果:

 Logical core: 1

 virtioblk0          : 1500453.10 IO/s    5861.14 MB/s

 =====================================================

 Total               : 1500453.10 IO/s    5861.14 MB/s

第三章

SPDK virtio PCI模式使用示例

PCI模式使用于虚拟机中。这种模式会避免QENU和虚拟机内核的中断和上下文切换开销,能够显著提高IO性能。经过验证, 标准的SPDK vhost 和kernel vhost scsi都可以通过SPDK virtio PCI模式加速。官方qemu仓库主分支代码实现的virtio-blk PCI设备也可以使用SPDK virtio PCI模块。

使用场景参考下图:

9d0aa4ab688a4f1b637a21cb6c9feead.png

示例步骤如下:

在host机器中,使用如下命令配置和编译SPDK:

[root@]./configure --with-vhost && make

启动vhost主进程:

[root@] ./app/vhost/vhost

创建vhost controller,以下是vhost blk示例:

[root@]./scripts/rpc.py bdev_malloc_create 128 512

[root@]./scripts/rpc.py vhost_create_blk_controller vhostblk0 Malloc0

运行如下命令启动QEMU:

[root@]/home/storage/qemu/build/x86_64-softmmu/qemu-system-x86_64 -cpu host -smp 8 -m 10240 -object memory-backend-file,id=mem,size=10G,mem-path=/dev/hugepages,share=on -numa node,memdev=mem -drive file=/home/storage/fedora.qcow2,if=none,id=disk -device ide-hd,drive=disk,bootindex=0 -net user,hostfwd=tcp::10021-:22 -net nic -chardev socket,id=char0,path=/home/storage/spdk/vhostblk0 -device vhost-user-blk-pci,chardev=char0,id=blk0 -vnc 0.0.0.0:3 --enable-kvm

运行ssh命令登录到虚拟机中:

[root@]ssh -p 10021 root@localhost

在虚拟机中克隆并配置spdk代码:

[root@]git clone https://github.com/spdk/spdk

[root@]cd spdk && git submodule update --init

[root@]./configure --with-virtio && make

配置SPDK运行环境:

[root@]./scripts/setup.sh

运行spdk target:

[root@]./app/spdk_tgt/spdk_tgt &

创建virtio PCI模式块设备:

[root@]./scripts/rpc.py   bdev_virtio_attach_controller -t pci -a 00:04.0 -d blk virtioblk0

00:04.0是SPDK vhost设备在VM中的PCI bus number, 可以根据实际情况变更。这样virtio块设备就创建成功了。我们就可以在虚拟机中使用这个virtio 块设备了。

我们还可以运行SPDK测试工具bdevperf直接测试virtio 块设备。步骤如下。

如果使用配置文件的方式的话, 首先要创建bdev.conf文件,内容如下:

[VirtioPci]

Enable Yes

运行bdevperf命令, 参考命令如下:

[root@] ./test/bdev/bdevperf/bdevperf -c bdev.conf -q 128 -o 4096 -w randread -t 300

命令结果如下:

 Logical core: 0

 VirtioBlk0          : 1438365.17 IO/s    5618.61 MB/s

 =====================================================

 Total               : 1438365.17 IO/s    5618.61 MB/s

作为对比,我们可以运行bdevperf测试内核驱动virtio设备。创建bdev.conf:

[AIO]

AIO /dev/vda AIO0

运行bdevperf命令,参考命令如下:

[root@]./test/bdev/bdevperf/bdevperf -c bdev.conf -q 128 -o 4096 -w randread -t 300

命令结果如下:

 Logical core: 0

 AIO0                :  254381.20 IO/s     993.68 MB/s

 =====================================================

 Total               :  254381.20 IO/s     993.68 MB/s

第四章 

总结

下面的表格是三种运行方式的结果对比:

Bdevperf运行方式

SPDK virtio 用户模式

SPDK virtio PCI模式

VM 内核AIO性能

随机读带宽

1500453.10 IO/s   

1438365.17 IO/s   

254381.20 IO/s    

上面章节运行bdevperf采用的SPDKcommit是1b6d1c80f96dab381db066c9c5f7852ea327eb75。

初步性能实验数据,仅供参考,更多官方数据,参考https://spdk.io/doc/相关性能测试报告。大家如果想深入了解SPDK virtio驱动,可以联系SPDK 社区。 

a69ffe7bc53cfe96ec3cf46e42fb2a59.gif

    转载须知   

DPDK与SPDK开源社区公众号文章转载声明

推荐阅读 

SPDK线程模型解析试试SPDK的trace

在虚拟机上部署SPDK NVME测试案例

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/543438.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【rman】list archivelog all与list backup of archivelog all

list archivelog all 是列出控制文件中记录的未被rman delete 命令删除的手工删除的日志文件,如果手工删除之后使用list命令对应的日志文件的status为标记为X!模拟删除日志yangdb_1_192_762800109.log oraclerac3:/opt/oracle/yangdb_arch>mv yangdb_…

ase支持 urp不_urp管线的自学hlsl之路 第一篇 序言

入坑unity学习已经有一年半了,shader很早就在用连连看学习和使用(lwrp hdrp的shadergraph和build in的ase)。但是随着对于画质和效果的追求和提高,使用手写shader已经变得非常有必要了。疫情期间正好打下了C#的编程基础,两个月前我开始学习CG…

oracle变量名,Oracle中的替换变量,变量名,变量名

替换变量(仅用于SQL *Plus或者用于原理和SQL *Plus相同的开发工具):临时存储值利用它可以达到创建通用脚本的目的利用它可以达到和用户交互,故在SQL *Plus中又称交互式命令替换变量的格式式在变量名称前加一个&,以便在运行SQL命令时提示用…

2 使用_索尼黑卡RX100M6的使用指南2

索尼黑卡RX100M6的使用指南2先说刚拿到黑卡怎么上手吧,每次就谈3个点。NO.1模式转盘如下图模式转盘HFR:拍摄慢动作(视频)的档位,黑卡最高拍摄40倍慢动作视频;SCN:情景模式,就是小白不知道什么题材设置什么参…

iOS中的UIScrollView(滑动视图)

2019独角兽企业重金招聘Python工程师标准>>> UIScrollView 可以滑动的视图 #import "ViewController.h"interface ViewController (){UIImageView *imgV;}endimplementation ViewController- (void)viewDidLoad {[super viewDidLoad];//新加一个UIScroll…

linux文件什么权限比较安全,linux文件安全与权限

文件文件类型创建文件改变权限位符号模式r w x:文件属主权限 这是前面三位r- x:同组用户权限 这是中间三位r- x:其他用户权限 这是最后三位chmod命令的一般格式为:chmod [who] operator [permission] filenamewho的含义是&#xf…

系统新模块增加需要哪些步骤_在1769系统里使用MVI69MCM的有福了

如果在AB的1769系统里需要走Modbus RTU通讯的话就需要Prosoft的1769系列的机架式产品,之前的项目用的是老型号MVI69-MCM,那么新项目就会用MVI69E-MBS这个型号。那么模块的通讯拓扑图如下所示:模块往下可以连接仪表,变频器&#xf…

大脑使用书全6册有用吗_常锻炼“人体第二大脑”的孩子,不仅智商高,记忆力也很强...

常锻炼“人体第二大脑”的孩子,不仅智商高,记忆力也很强父母都希望自己的孩子聪明、智商高,很多家长也会将精力投入到孩子大脑潜能开发中。也有一些家长会说,聪不聪明那是天生的,一些家庭明明对于孩子大脑开发的事情不…

Apache多站点配置详解

2019独角兽企业重金招聘Python工程师标准>>> 本人第一篇技术博客,主要是把我自己的笔记做一个整理,并对之前学习做一个回顾和总结,也分享给大家,共同提高,好了,闲话少说,进入正题吧。…

linux字符设备驱动在哪里设置,从点一个灯开始学写Linux字符设备驱动!

原标题:从点一个灯开始学写Linux字符设备驱动![导读] 前一篇文章,介绍了如何将一个hello word模块编译进内核或者编译为动态加载内核模块,本篇来介绍一下如何利用Linux驱动模型来完成一个LED灯设备驱动。点一个灯有什么好谈呢&…

ipv6 ospf配置方法_【思唯网络学院】网络故障大全及处理原理和方法

第一章 故障处理方法一、网络的复杂性   一般网络包括路由、拨号、交换、视频、WAN(ISDN、帧中继、ATM、…)、LAN、VLAN、… 二、故障处理模型   1、 界定问题(Define the Problem)   详细而精确地描述故障的症状和潜在的原因   2、 收集详细信息(Gather Facts)R>信…

怎么让模糊的数字变清楚_一键模糊图像变清晰,好家伙!这款神器插件你值得拥有...

让我们结伴,走进设计好家伙,最近有设计师朋友给我反映很多问题!其中吐槽最多的就是甲方给图不够清晰整个模特,产品都有种朦胧美我擦嘞,导入到软件作图放大后,像素啥都看不清有木有~!!找老板要清…

服务器安全问题处理

linux 安全加固设置 今天收到阿里云的邮件,一台linux服务器在荷兰被登录了。9.23分。我赶紧进去修改了下密码, 由于本公司又没专门的安全工程师,运维都是副业,主业都是开发,所以有些无可赖何,我进去把平常看…

vscode php插件_JS之 提高开发效率的Visual Studio Code插件

阅读本文约需要9分钟大家好,我是你们的导师,我每天都会在这里给大家分享一些干货内容(当然了,周末也要允许老师休息一下哈)。上次老师跟大家分享了JS之 小技巧的知识,今天跟大家分享下JS之 提高开发效率的Visual Studio Code插件的…

linux 声明消息函数,linux消息队列函数--解析

#include www.2cto.com---------------------------------------------------------------------1、系统建立IPC通讯(如消息队列、共享内存时)必须指定一个ID值。通常情况下,该id值通过ftok函数得到。ftok原型如下:key_t ftok( char * fname, int id )fn…

vs自拉软件全名_vs全新操作软件说明书

VS2010全新操作软件说明书———功能更强大与操作简单并无冲突欢迎使用VS2010全新操作软件,目前该软件支持得控制卡型号有VSA系列、VSD卡、VS-mini卡、VSC卡,暂时不支持VSB卡,请勿在VSB卡上更新VS2010软件。在VSA系列得控制卡中,也…

[android] 手机卫士手机定位的原理

手机定位的三种方式:网络定位,基站定位,GPS定位 网络定位,手机连上wifi 2g 3g的时候,手机会有一个ip,误差很大 基站定位,精确度与基站的多少有关,几十米到几公里的误差 GPS定位&…

antd table设置表格一个单元格的字体颜色_alireacttable:高性能 React 表格组件

点击上方蓝字关注我们简介在前端开发中,表格一直都是最复杂的组件之一。表格不仅要支持丰富的操作(排序、过滤、搜索、分页、自定义列等),还要有非常好的性能以展示大量数据。很多组件库(例如 fusion design,ant design)提供了功能丰富的表格…

t580 thinkpad_聊聊ThinkPad T580:除了大屏,还有什么

我曾在 IBM 就职过一段时间,当时办公室内清一色的都是 ThinkPad 笔记本和 ThinkStation 台式机,给我配备的就是一台 ThinkPad T430,它稳定的表现和扎实的做工一度让我印象深刻,而这也是我与 ThinkPad 的前端次接触。数年之后&…

linux修改arena大小,Resolume Arena怎么设置大屏幕 调整画面屏幕的方法

如果你想要制作VJ视频,那么Resolume Arena绝对可以满足你的所有需求,小编近期了解到很多用户不知道怎么设置大屏幕,如果你还不知道具体的操作方法,就赶快来看看下面的教程吧!操作步骤如下:1、如果你在使用R…