如果只使用 SPDK 的 vhost-user SCSI 特性,完全可以 revert 掉引入的 Unit Attention feature,因为不同的 Guest OS 对于 Unit Attention 是否能完美处理尚未得知,vhost-user 的 resize 机制更加独立。 对应的 patch 如下: diff --git a/lib/vhost/vhost_scsi.c b/lib/vhost/vhost_scsi.c index 6dc70940c....
跟vhost-user-blk 不同,因为 SCSI 有丰富的命令支持,获取大小可以通过 SCSI 命令来实现。 在 Linux kernel 的 virtio-scsi 实现中,通过SPDK_SBC_SAI_READ_CAPACITY_16命令来查询后端设备的大小。 我们先来看一下流程图: 对于vhost-user-blk,由于不具有这个能力,所以不得不实现新的 vhost-user 协议命令(GET_CO...
lun[3])&0x3FFF;SPDK_LOGDUMP(SPDK_LOG_VHOST_SCSI_QUEUE,"LUN",lun,8);/* First byte must be 1 and second is target */if(lun[0]!=1||lun[1]>=SPDK_VHOST_SCSI_CTRLR_MAX_DEVS){return-1;} lun[2]<<8)|lun[3])&0x3FFF;SPDK_LOGDUMP(SPDK_LOG_VHOST_SCSI_QUEUE,"LUN",lun,8);/...
作者:深耕行业的 SmartX 金融团队本文主要介绍使用 SPDK vhost-user 技术,来加速 KVM 虚拟机中 virtio-blk/virtio-scsi 存储设备的 I/O 性能,并结合架构场景展开说明,让读者对这项技术带来的特性提升有更直观的了解。首先我们先看看当前主流的 I/O 设备虚拟化方案:· QEMU 纯软件模拟,利用软件模拟 I/O ...
本文主要介绍使用 SPDK vhost-user 技术,来加速 KVM 虚拟机中 virtio-blk/virtio-scsi 存储设备的 I/O 性能,并结合架构场景展开说明,让读者对这项技术带来的特性提升有更直观的了解。 首先我们先看看当前主流的 I/O 设备虚拟化方案: QEMU 纯软件模拟,利用软件模拟 I/O 设备提供给虚拟机使用。
在QEMU 中,Virtio 设备是为 Guest 操作系统模拟的 PCI/PCIe 设备,遵循 PCI 规范,具有配置空间、中断配置等功能。Virtio 注册了 PCI 厂商 ID(0x1AF4)和设备 ID,不同的设备 ID 代表不同的设备类型,例如面向存储的 virtio-blk(0x1001)和 virtio-scsi 设备 ID(0x1004)。 Virtio 由三部分组成,前端是驱动层,位...
vhost-vdpa back-end设备的实现流程大体与vhost-net/vhost-blk/vhost-scsi一致。其主要差别在于:其一,支持vdpa的设备驱动通过rte_vdpa_register_device函数注册了rte_device和支持的功能接口到vdpa_device_list链表中,如此应用程序可以通过rte_vhost_driver_attach_vdpa_device将其赋给vhost_user_socket并最终与标识vhost...
有两种实现方式: 1、guest是server,dpdk vhost user是client 2、 guest是client,dpdk vhost user是server VHOST_SET_VRING_CALL 和 VHOST_SET_VRING_KICK的实现有两种: qemu vhost user:VhostOps user_ops dpdk : vhost_message_handler_tvhost_message_handlers[VHOST_USER_MAX] ...
目前主流的virtio front-end用户态驱动主要有:virtio-net、virtio-blk/virtio-scsi、virtio-user-net、virtio-user-blk/virtio-user-scsi这几种。 4.4.1.1 virtio-net的用户态驱动 virtio-net用户态驱动的实现代码在 “DPDK/drivers/net/virtio” 目录下,其主要处理对象是 “Virtio network device” 的pci ...
目前主流的virtio front-end用户态驱动主要有:virtio-net、virtio-blk/virtio-scsi、virtio-user-net、virtio-user-blk/virtio-user-scsi这几种。 4.4.1.1 virtio-net的用户态驱动 virtio-net用户态驱动的实现代码在 “DPDK/drivers/net/virtio” 目录下,其主要处理对象是 “Virtio network device” 的pci ...