浅析DPDK驱动管理:vhost

news2024/12/24 3:54:02

文章目录

    • 概述
    • DPDK vhost工作机制
      • DPDK vhost工作模式
    • DPDK vhost管理结构
    • DPDK vhost接口
      • 注册vhost驱动:rte_vhost_driver_register
      • 启动vhost:rte_vhost_driver_start
        • vhost消息处理
    • 相关参考

概述

DPDK提供了一套vhost库,用于加速virtio后端,对比于内核态的vhost方案,由于DPDK vhost是在用户态空间实现,因而也称作vhost-user。

DPDK vhost工作机制

DPDK vhost方案的核心是将数据面的处理放到用户空间中,而控制面的逻辑则通过Unix域套接字进行配置。DPDK vhost的整体框架如下:
在这里插入图片描述

DPDK应用程序作为单独的进程运行在宿主机上,通过Unix domain socket与QEMU完成设备控制信息的交互,包括设备属性、功能以及virtqueue配置等。virtio设备的模拟仍然由QEMU处理;在完成virtio设备的配置后,DPDK应用程序会以轮询的方式从VM的virtqueue中获得请求并进行处理。

DPDK vhost工作模式

DPDK vhost使用UNIX域套接字传输控制消息,根据vhost是作为server或client运行,vhost-user支持两种配置模式:

  • vhost-user:vhost-user作为服务端运行,创建Unix域套接字服务文件,并监听来自前端的连接。这是最初vhost-user支持的模式,但存在一旦DPDK业务进程挂掉,就会对所有VM造成影响;
  • vhost-user-client:vhost-user作为客户端运行,由DPDK业务进程负责发起对服务端的连接。

DPDK vhost管理结构

DPDK vhost核心数据结构关联如下:
在这里插入图片描述

其中:

  • vhost_user:vhost-user全局管理结构,维护所有vhost驱动
  • vhost_user_socket:对于每个vhost驱动,都维护着一个Unix domain socket,负责与外部应用进行通信;
  • vhost_user_connection:

DPDK vhost接口

DPDK本身提供的是一套vhost库接口,由上层应用通过调用对应的接口实现特定的vhost驱动,目前已有的实现包括DPDK自带的vhost-net驱动、SPDK基于DPDK vhost接口实现的vhost-blk和vhost-scsi驱动等。DPDK vhost提供的几个关键接口如下:

  • rte_vhost_driver_register:注册vhost驱动;
  • rte_vhost_driver_set_features:设置vhost驱动的feature信息;
  • rte_vhost_driver_callback_register:注册vhost驱动特定的回调,由vhost-user在合适的流程中进行调用;
  • rte_vhost_driver_start:启动vhost;
  • rte_vhost_enqueue_burst:从Host向Guest传输数据;
  • rte_vhost_dequeue_burst:从身体Guest接收数据。

注册vhost驱动:rte_vhost_driver_register

在这里插入图片描述

启动vhost:rte_vhost_driver_start

在这里插入图片描述

vhost消息处理

vhost_user_read_cb负责接收Unix domain socket的消息,并进行处理。
在这里插入图片描述

相关参考

  • Vhost Library

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

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

相关文章

EXTI外部中断

? 难点:中断向量表、看门狗、NVIC的优先级位?EXTI框图? ------------------------ 中断系统 中断:在主程序运行过程中,出现了特定的中断触发条件(中断源)--->例如:…

Unity设备分级策略

Unity设备分级策略 前言 之前自己做的设备分级策略,在此做一个简单的记录和思路分享。希望能给大家带来帮助。 分级策略 根据拟定的评分标准,预生成部分已知机型的分级信息,且保存在包内;如果设备没有被评级过,则优…

【大厂AI课学习笔记】【2.1 人工智能项目开发规划与目标】(1)发现与明确问题

抱歉,过春节这几天,没有更新。赶紧续上。 人就是这样,放假之前呢,想着趁着这个假期,把很多之前没有做好的事情,都梳理好,该补的也补上,结果一个假期就这样过去了,很多想…

【探索Linux】—— 强大的命令行工具 P.22(POSIX信号量)

阅读导航 引言一、POSIX信号量的基本概念二、信号量的相关操作1 . 初始化信号量sem_init ( )(1)原型(2)参数(3)返回值(4)示例代码 2 . 等待信号量(1)sem_wait…

OpenCV库及在ROS中使用

OpenCV库及在ROS中使用 依赖 cv_bridge image_transport roscpp rospy sensor_msgs std_msgsCMakeLists.txt添加 find_package(OpenCV REQUIRED) include_directories(${OpenCV_INCLUDE_DIRS}) target_link_libraries(pub_img_topic ${catkin_LIBRARIES} ${Opencv_LIBS}) C …

【PyQt】14-绘图-QPainter

文章目录 前言一、QPainter二、绘制文本-drawTextQt里面的文本对齐方式 运行结果 三、像素点总结 前言 1、学会画图方法 一、QPainter 通常可以绘制文本、各种图形(点、线、椭圆、弧、扇形、多边形等等)、图像。 必须在painrEvent事件方法中绘制各种元…

win32汇编获取系统信息

.data fmt db "页尺寸&#xff1a;%d",0 db "" lpsystem SYSTEM_INFO <?> szbuf db 200 dup(0) .const szCaption db 系统信息,0 .code start: invoke GetSystemInfo,addr lpsystem …

php 函数(方法)、日期函数

php 函数、日期函数 1. php函数2. 日期函数 1. php函数 <?php// 创建一个函数 function hello($who) {echo $who.Hello World!; }hello("老张");给参数一个默认值&#xff0c;当然自己有变量走自己的 2. 日期函数 <?php/** date(Y-m-d H:i:s)返回的时间是…

anaconda安装路径默认在D盘,但安装环境的envs路径跑到C盘,修改为D盘

安装的anaconda环境&#xff0c;路径是在anaconda安装目录下的envs中&#xff08;D:\APPFile\Anaconda3\envs&#xff09;&#xff0c;然而&#xff0c;这次创建的却是在 C:\Users\xxx.conda\envs 中。 首先&#xff0c;找到用户目录下的.condarc文件&#xff08;C:\Users\use…

MOSFET栅极应用电路分析汇总(驱动、加速、保护、自举等等)

概述 MOSFET是一种常见的电压型控制器件&#xff0c;具有开关速度快、高频性能、输入阻抗高、噪声小、驱动功率小、动态范围大、安全工作区域(SOA)宽等一系列的优点&#xff0c;因此被广泛的应用于开关电源、电机控制、电动工具等各行各业。栅极做为MOSFET本身较薄弱的环节&am…

Android安卓架构MVC、MVP、MVVM模式的概念与区别

目录 MVC框架 MVP框架 MVVM框架 MVVM与MVP区别 MVVM与MVC区别 MVC、MVP、MVVM模式哪个要好一些 MVC&#xff08;Model-View-Controller&#xff09;、MVP&#xff08;Model-View-Presenter&#xff09;、MVVM&#xff08;Model-View-ViewModel&#xff09;是三种常见的软…

数据库第五次实验

目录 1 创建数据表 2 创建多个用户 ​​​​​​​3 用户的授权 ​​​​​​​4 用户权限的回收 ​​​​​​​5 角色的创建与授权 ​​​​​​​6 回收角色的权利 ​​​​​​​7 审计的设置 1 创建数据表 SQL语句&#xff1a; use experimentfive; create table…

游戏安全组件运行时发生异常1-0-0

可能是这个服务&#xff0c;可能被禁用了。 如果是文件缺少直接修复游戏

鸿蒙应用开发工程师招聘多吗?工资有多少呢?

随着鸿蒙操作系统的快速普及&#xff0c;越来越多的企业开始重视鸿蒙应用开发人才的培养和引进。那么&#xff0c;目前市场上鸿蒙应用开发工程师招聘多吗&#xff1f;工资有多少呢&#xff1f; 首先&#xff0c;我们来了解一下鸿蒙应用开发工程师的招聘情况。随着鸿蒙操作系统…

【头歌·计组·自己动手画CPU】四、控制器设计(理论版) 【计算机硬件系统设计】

&#x1f57a;作者&#xff1a; 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux &#x1f618;欢迎 ❤️关注 &#x1f44d;点赞 &#x1f64c;收藏 ✍️留言 文章目录 一、课程设计目的二、课程设计内容三、课程设计步骤四、课程设计总结 一、课程设计目的 掌握 CPU …

每日一题 429.N叉树的层序遍历

429. N 叉树的层序遍历 描述&#xff1a; 给定一个 N 叉树&#xff0c;返回其节点值的层序遍历。&#xff08;即从左到右&#xff0c;逐层遍历&#xff09;。 树的序列化输入是用层序遍历&#xff0c;每组子节点都由 null 值分隔&#xff08;参见示例&#xff09;。 示例 1…

Jetson下的i2c、spi、gpio、can、uart、485代码示例使用说明

适用于刚接触新设备的同学参考。 UART 演示代码 目前&#xff0c;这是一个简单的 Python 3 脚本&#xff0c;用于与 NVIDIA Jetson Nano 开发套件的 J41 头上的 UART 进行交互。当然只要是jetson都可以用&#xff0c;改一下程序里面的设备节点就行 JetsonHacks 上的原始文章&…

一起学量化之Aroon指标

Aroon指标是由Tushar Chande于1995年开发的技术分析工具,旨在识别股票是否处于趋势中及趋势的强度。它通过分析股票价格在一定周期内创下的新高和新低来预测趋势的变化,这基于一种观念:强势趋势通常伴随着频繁的新高或新低。 1. Aroon指标的组成 Aroon指标由两个部分组成:…

Manifest merger failed with multiple errors, see logs

问题 Manifest merger failed with multiple errors, see logs详细问题 笔者进行Android 项目开发&#xff0c;修改AndroidManifest.xml代码后&#xff0c;控制台报错 AndroidManifest.xml报错核心代码 <manifest><uses-permission android:name"android.perm…

问题:在额定电压500V以下的电路中,使用的各种用电设备,一般称为(_ _ _)用电设备 #媒体#媒体#媒体

问题&#xff1a;在额定电压500V以下的电路中,使用的各种用电设备,一般称为&#xff08;_ _ _)用电设备 参考答案如图所示