[root@master mdev]# vi Makefile

# SPDX-License-Identifier: GPL-2.0-only

mdev-y := mdev_core.o mdev_sysfs.o mdev_driver.o

obj-$(CONFIG_VFIO_MDEV) += mdev.o
obj-$(CONFIG_VFIO_MDEV_DEVICE) += vfio_mdev.o

如上,查看drivers/vfio/mdev/Makefile可以发现,mdev(Mediated Device)实际上是由两个而不是一个模块构成。

他俩是怎么分工的?

[root@custom-16-126 mdev]# lsmod |grep -i mdev
vfio_mdev 12841 0
mdev 20336 1 vfio_mdev
vfio 32656 3 vfio_mdev,vfio_iommu_type1,vfio_pci

从上面的模块可以看出,mdev模块是通用模块,虽然目前只有vfio_mdev来跟他适配,但设计来说,mdev可以看成bus总线,

比如pci总线,后面会有很多不同类型的pci总线设备接入,而vfio_mdev可以看做vfio驱动针对mdev总线的一种适配, vfio_mdev 与 vfio_pci的地位是一样的。

vfio_mdev.ko则是定义了mdev总线上的一种Driver,用来实现和VFIO的对接。

mdev出现的背景:

mdev的文档可以参考vfio-mediated-device.txt,就是内核源码自带的,他主要解决的问题是,不支持sr-iov的设备,如何做到切分,也就是说,虽然物理上

不支持vf的切分,他通过mdev,可以时分复用的方式来实现虚拟化,这样就实现了多个用户态驱动“同时“ 操作一块物理设备的能力。

我们为什么需要VFIO?一个原因是虚拟机经常时用直接设备访问(“device assignment”)来获得尽可能高的IO性能,

从设备和host的角度,这其实就是把VM变成了一个用户态驱动,VM也因此获得了这个IO设备的低延迟、高带宽和全虚拟化原生(bare-metal)设备驱动的直接应用。

从gpu虚拟化的角度来看,我们怎么看待sr-iov的虚拟化与mdev-vfio的趋势哪家会发展更好呢?

分片虚拟化不需要IOMMU硬件的支持。其只需要VFIO模块添加type1 IOMMU的驱动,来通知host将要进行的DMA传输的GFN,VA等信息,并在Host端的mdev设备驱动层完成GFN到PFN的翻译处理。

这个翻译是通过pin_page然后建好映射的方式来实现的,可以理解为软件层面上的IOMMU操作。

而AMD SRIOV与GPU passthrough方式下,IOMMU是必备组件。尤其IOMMU硬件完成GFN到PFN的地址转换,分片虚拟化对于不具备sr-iov虚拟化的硬件是一个很好的解决方案,但是从里面的原理

可以看出,这样方便了闭源的驱动加入到linux的家庭继续存在,其中以英伟达为最,因为它只要实现了mdev驱动要求的几个回调函数就行。既然是软件层面实现的iommu,那么意味着速度上肯定会

比硬件上慢,其实sr-iov的硬件,现在出现更多在网卡侧,比如智能网卡的产品落地,amd自从推出7150的显卡支持sr-iov之后,几年没有见到新的产品来支持sr-iov,而反观英伟达,借助mdev,将虚拟化做得风生水起。

虚拟化之mdev-vfio笔记的更多相关文章

  1. 虚拟化 模板制作 rhev笔记

    查看主机是否支持RHEV:一要支持vt-x, 一定是64位操作系统 cat /proc/cpuinfo 查看是否有lm(64位) 是否有, vmx(or svm)(vt-x) 虚拟化中制作Linux模 ...

  2. 美团网 KVM虚拟化公开课学习笔记

    KVM优化技术,美团开放平台--邱剑 基于KVM现有选项做一些优化.视频地址:http://www.osforce.cn/course/77/learn#lesson/80 CPU调优: 1.Cont ...

  3. KVM虚拟化知识的一些笔记

    一.KVM介绍 KVM:运行在内核空间,提供CPU 和内存的虚级化,以及客户机的 I/O 拦截.Guest 的 I/O 被 KVM 拦截后,交给 QEMU 处理. QEMU:修改过的为 KVM 虚机使 ...

  4. VMware workstation运维实践系列博客导航

    第一章:VMware workstation虚拟化1.1 VMware workstation计算网络存储介绍1.2 VMware workstation其他功能特性介绍1.3 VMware work ...

  5. KVM虚拟化学习笔记系列文章列表(转)

    Kernel-based Virtual Machine KVM虚拟化学习笔记系列文章列表----------------------------------------kvm虚拟化学习笔记(一)之k ...

  6. kvm虚拟化学习笔记(四)之kvm虚拟机日常管理与配置

    KVM虚拟化学习笔记系列文章列表----------------------------------------kvm虚拟化学习笔记(一)之kvm虚拟化环境安装http://koumm.blog.51 ...

  7. kvm虚拟化学习笔记(三)之windows kvm虚拟机安装

    KVM虚拟化学习笔记系列文章列表----------------------------------------kvm虚拟化学习笔记(一)之kvm虚拟化环境安装http://koumm.blog.51 ...

  8. kvm虚拟化学习笔记(二)之linux kvm虚拟机安装

    KVM虚拟化学习笔记系列文章列表----------------------------------------kvm虚拟化学习笔记(一)之kvm虚拟化环境安装http://koumm.blog.51 ...

  9. kvm虚拟化学习笔记(一)之kvm虚拟化环境安装

    平时一直玩RHEL/CentOS/OEL系列的操作,玩虚拟化也是采这一类系统,kvm在RHEL6系列操作系统支持比较好,本文采用采用OEL6.3操作系统,网上所有文章都说KVM比xen简单,我怎么感觉 ...

随机推荐

  1. 硬件开发笔记(四):硬件开发基本流程,制作一个USB转RS232的模块(三):设计原理图

    前者   前面建立好的基础的元器件,下面开始设计原理图.   需求 USB转RS232,输出RS232 可以选择性输出5V的TTL 可以选择性输出3.3V的TTL   设计原理图 步骤一:CH340G ...

  2. .Net CLR GC动态获取函数头地址,C++的骚操作(慎入)

    前言: 太懒了,从没有在这里正儿八经的写过文章.看到一些人的高产,真是惭愧.决定稍微变得不那么懒.如有疏漏,请指正. .net的GC都谈的很多了,本篇主要是剑走偏锋,聊聊一些个人认为较为核心的细节方面 ...

  3. redis相关知识点

    redis 的相关知识点 启动 启动代码 redis-cli -a 密码 通用命令 expire: 设置有效期 expire name 10 key key * 相关数据类型 String set:添 ...

  4. MySQL 8.0 新特性梳理汇总

    一 历史版本发布回顾 从上图可以看出,基本遵循 5+3+3 模式 5---GA发布后,5年 就停止通用常规的更新了(功能不再更新了): 3---企业版的,+3年功能不再更新了: 3 ---完全停止更新 ...

  5. 02 java包装类型的缓存机制

    02 java包装类型的缓存机制 Java 基本数据类型的包装类型的大部分都用到了缓存机制来提升性能. Byte,Short,Integer,Long 这 4 种包装类默认创建了数值 [-128,12 ...

  6. Linux文本三剑客-grep

    Global search REgular expression and Print out the line 全局搜索正则表达式并打印行 作用: 对标准输入的行进行分析,过滤指定的行. 模式: 格式 ...

  7. windows如何结束某个端口的进程

    netstat -ano | findstr 端口号 (查询端口号被哪个进程占用) tasklist | findstr 进程PID (根据PID找到进程名称) taskkill -PID 进程PID ...

  8. C++ 练气期之指针所指何处

    1. 指针 指针是一种C++数据类型,用来描述内存地址. 什么是内存地址? 内存中的每一个存储单元格都有自己的地址,地址是使用二进制进行编码.地址从形态上看是一个整型数据类型.但是,它的数据含义并不表 ...

  9. Linux操作系统(4):磁盘分区、挂载

    Outline: ① lsblk :查看所有设备挂载情况 ② df -h :查询系统整体磁盘使用情况 ③ du -h /目录 :查询指定目录的磁盘占用情况 ④ mount :查询系统中已经挂载的设备 ...

  10. 【docker专栏5】详解docker镜像管理命令

    一.国内Docker镜像仓库 由于大家都知道的原因,从国外的docker 仓库中pull镜像的下载速度实际上是很慢的.国内的一些一线厂商以及docker官方都在国内免费提供了一些docker镜像仓库, ...