博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
虚拟主机网络设备iotlb
阅读量:2031 次
发布时间:2019-04-28

本文共 2346 字,大约阅读时间需要 7 分钟。

目录


 

概述

此页面提供有关用于vhost-net的Device IOTLB设计的信息,以为来宾中的dpdk类程序提供安全有效的环境。

设计目标

  • 与体系结构无关:该实现应与当前Qemu的IOMMU体系结构兼容,然后应与体系结构无关,然后易于移植到各种平台/ IOMMU实现。
  • 对于像dpdk这样的程序有效:最终用户在guest虚拟机中使用像dpdk这样的程序时,应该不会出现明显的性能下降。该设计针对类似dpdk的程序进行了优化,这些程序在guest虚拟机中使用固定映射。
  • 兼容:该实现应与当前的vhost-net内存区域API兼容,以支持未启用DMAR的VM。

 

设计

  • Vhost-net可以通过ioctl查询从来宾io虚拟地址到主机虚拟地址的地址映射。
  • 可以将上述翻译结果缓存在特定于vhost设备的IOTLB中一段时间​​,以加快将来的翻译速度。
  • Qemu可以使通过ioctl由vhost缓存的一个或多个映射无效。
  • Qemu可以通过ioctl启动或停止DMAR

  • 上图显示了用于vhost-net的设备IOTLB的设计:
    • 启动:
      • 当访客IOMMU驱动程序启用DMAR时,qemu将通知vhost启动设备IOTLB。设备IOTLB将在不缓存任何条目的情况下启动。
    • DMA仿真:
      • 当vhost尝试模拟DMA时,它将首先尝试通过设备IOTLB将来宾iova转换为hva。
      • 如果vhost找不到这样的翻译,它将暂停并请求qemu的协助进行翻译。
      • Qemu会收到通知,并将向IOMMU查询翻译。
      • 翻译完成后,qemu会将结果发送给vhost。
      • 然后,Vhost将重新启动DMA。
    • TLB无效:
      • Vhost将监听qemu模拟的TLB无效。
      • 如果特定的TLB无效与vhost模拟其DMA的设备有关,则将通知vhost,并清除vhost缓存的TLB条目。

实施(RFC)

  • 内核方面:
    • 引入了四个新的ioctl:
      • VHOST_SET_VRING_IIOTLB_REQUEST:设置每个Iotlb请求的虚拟地址。当虚拟主机中出现IOTLB丢失时,每个虚拟队列都会将翻译请求填充到该地址。
      • VHOST_SET_VRING_IOTLB_CALL:设置每个虚拟队列eventfd来通知qemu正在进行翻译请求。
      • VHOST_UPDATE_IOTLB:更新或使IOTLB映射无效。
      • VHOST_RUN_IOTLB:启动或停止IOTLB。
/* vhost kernel ioctls 摘自dpdk-20.08 */#define VHOST_VIRTIO 0xAF#define VHOST_GET_FEATURES _IOR(VHOST_VIRTIO, 0x00, __u64)#define VHOST_SET_FEATURES _IOW(VHOST_VIRTIO, 0x00, __u64)#define VHOST_SET_OWNER _IO(VHOST_VIRTIO, 0x01)#define VHOST_RESET_OWNER _IO(VHOST_VIRTIO, 0x02)#define VHOST_SET_MEM_TABLE _IOW(VHOST_VIRTIO, 0x03, struct vhost_memory_kernel)#define VHOST_SET_LOG_BASE _IOW(VHOST_VIRTIO, 0x04, __u64)#define VHOST_SET_LOG_FD _IOW(VHOST_VIRTIO, 0x07, int)#define VHOST_SET_VRING_NUM _IOW(VHOST_VIRTIO, 0x10, struct vhost_vring_state)#define VHOST_SET_VRING_ADDR _IOW(VHOST_VIRTIO, 0x11, struct vhost_vring_addr)#define VHOST_SET_VRING_BASE _IOW(VHOST_VIRTIO, 0x12, struct vhost_vring_state)#define VHOST_GET_VRING_BASE _IOWR(VHOST_VIRTIO, 0x12, struct vhost_vring_state)#define VHOST_SET_VRING_KICK _IOW(VHOST_VIRTIO, 0x20, struct vhost_vring_file)#define VHOST_SET_VRING_CALL _IOW(VHOST_VIRTIO, 0x21, struct vhost_vring_file)#define VHOST_SET_VRING_ERR _IOW(VHOST_VIRTIO, 0x22, struct vhost_vring_file)#define VHOST_NET_SET_BACKEND _IOW(VHOST_VIRTIO, 0x30, struct vhost_vring_file)

 

    • 将预排序数组转换为间隔树:
      • 轻松检测地图的交集
      • 缩放成千上万的地图
  • Qemu端(首先选择了vtd和pci)
    • 转换virtio以使用DMA helper / DMA地址空间
    • 转换虚拟主机以使用DMA地址空间
    • 介绍TLB侦听器,该侦听器侦听TLB无效
    • 大型支持
    • 来宾感知设备IOTLB合作所需的PCI ATS支持(可能)

地位

  • 进行中,大部分完成(ATS除外)。
  • 基准测试显示使用时的命中率100%(intel_iommu = strict)。使用ATS,我们可能可以获得默认模式的100%命中率。

 

 

 

转载地址:http://mjvaf.baihongyu.com/

你可能感兴趣的文章
网站架构探索(1)---序言
查看>>
大型网站调试工具之一(php性能优化分析工具XDebug)
查看>>
软件开发的葵花宝典
查看>>
什么是解决问题的思路:超级客服实战
查看>>
BINDENG(Gcoge) 技术内幕--Bindeng(Gcoge) 的特色---无以伦比,统领全球!
查看>>
产品管理系列(一)---优秀的产品经理所具有的素质
查看>>
架构师之路(5)---IoC框架
查看>>
[招贤纳士 ]Gcoge.Com(Bindeng.Com) 使命是整合全球信息,人人从中受益。
查看>>
JAVA实现网页快照,存为图片格式
查看>>
技术高手的十三个原则
查看>>
ExtJS 实现的Web文件管理系统
查看>>
管理的秘诀是诚实
查看>>
思科首席技术官解析:统一计算及战略
查看>>
SOA的十大技术理论体系
查看>>
SOA如何使开发人员受益
查看>>
SOA架构师注意的问题
查看>>
Facebook首席技术官将离职
查看>>
最佳拍档:首席市场官与首席技术官
查看>>
Sun首席技术官:世界只需要5台计算机
查看>>
软件专业人才应具备四种素质
查看>>