虚拟化硬件加速-vdpa

以前提到过vdpa,只有mellanox connectx-5网卡,不支持vdpa,公司最近来了mellanox DPU,也就是bluefield-2,自带connectx-6网卡,硬件支持vdpa,再分析一下看怎么个搞法。

需求

虚拟机cpu加速有intel vt-x,memory加速有intel ept技术,剩下就是网络和存储io加速,io路径长,网络io路径是虚拟机virtio-ovs-vxlan-host内核协议栈出物理机,存储io是虚拟机virtio-qemu-host内核存储栈到ceph,io大量占用host上的cpu资源,而且性能低。

vdpa

vdpa是virtio控制面软件模拟,数据面硬件实现,控制面复杂用硬件实现难,数据面简单用硬件实现容易,厂商自己实现自己的驱动,数据是用dma mapping直接从虚拟机内存手动物理硬件上,硬件再vxlan处理或者对接ceph,听起来有点vfio-mdev的感觉,vfio只能处理pci通用结构和流程,vfio-mdev处理那些硬件实现不了sr-iov功能的设备,也就是硬件不能模拟出pci标准结构的哪些硬件,vfio-mdev给虚拟机假象以为自己独占硬件,虚拟机运行硬件驱动使用硬件,其实是在host的严密监视下共享硬件资源,由于硬件不同qemu中多多少少会有一些硬件相关的代码。vdpa基本virtio标准设备,肯定希望虚拟机中只运行中立的virtio驱动,qemu中只有vdpa厂商中立代码,厂商实现的vdpa驱动在技术栈最底层,所以说和vifo-mdev还是不一样。站在另一个角度考虑,vfio没有vhost中关于virtio的ioctl实现,vdpa两者都需要,如果qemu用了viommu,vhost也得支持viommu,vhost迟早得添加地址转换的ioctl,在这个基础上vhost再调用iommu实现硬件dma mapping的功能,所以vdpa复用vhost的ioctl和代码是最佳选择,以前看一些资料上写的vhost-vfio和vhost-mdev等,总之就是为把vhost和vfio ioctl结合在一起用的,都没能成功upstream代码。

vdpa厂商的驱动一种方式是运行在用户态,如dpdk中实现的vdpa驱动,另一方式运行在内核中,如intel的ifcvf和mellanox的ml

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值