如果只使用 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....
作者:深耕行业的 SmartX 金融团队本文主要介绍使用 SPDK vhost-user 技术,来加速 KVM 虚拟机中 virtio-blk/virtio-scsi 存储设备的 I/O 性能,并结合架构场景展开说明,让读者对这项技术带来的特性提升有更直观的了解。首先我们先看看当前主流的 I/O 设备虚拟化方案:· QEMU 纯软件模拟,利用软件模拟 I/O 设...
目前在DPDK/SPDK代码中所存在的virtio-user驱动的实现主要是两类,其一是DPDK中的virtio-net-user驱动,其二是SPDK中的virtio-blk-user/virtio-scsi-user驱动。 virtio-user模式的front-end驱动主要是通过unix socket来与back-end 的设备进行控制信息的协商和交互,并且作为client的角色。通信初始时会根据与vhost侧约定的...
在QEMU 中,Virtio 设备是为 Guest 操作系统模拟的 PCI/PCIe 设备,遵循 PCI 规范,具有配置空间、中断配置等功能。Virtio 注册了 PCI 厂商 ID(0x1AF4)和设备 ID,不同的设备 ID 代表不同的设备类型,例如面向存储的 virtio-blk(0x1001)和 virtio-scsi 设备 ID(0x1004)。 Virtio 由三部分组成,前端是驱动层,位...
目前主流的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 ...
ret=vhost_scsi_ctrlr_start(ctrlr,&devs[0],g_num_ctrlr_devs); if(ret!=0){ fprintf(stderr,"Failed to start vhost SCSI controller\n"); close(tun_fd); returnNULL; } /* Run the vhost loop */ vhost_user_start(vhost_fd);
scsi=off,bus=pci.0,addr=0x4,drive=drive-virtio-disk0,id=virtio-disk0,bootindex=1 -chardev socket,id=charnet0,path=/var/run/openvswitch/vhuc26fd3c6-4b -netdev vhost-user,chardev=charnet0,queues=8,id=hostnet0 \ -device virtio-net-pci,mq=on,vectors=18,netdev=hostnet0,id=net0,...
内核提供一个通用的 virtio-pci 驱动程序,供实际的 Virtio 传输设备(例如 virtio-net 或 virtio-scsi)使用。 2)virtqueues 规范 virtqueue 是在 virtio 设备上进行批量数据传输的实现机制。每个设备可以有零个或多个 virtqueue。它由 Guest 分配的缓冲区队列组成,Host 通过读取或写入缓冲区与之交互。此外,virtio 规...
SPDK vhost-user-scsi方案消除了这两方面的影响,后端的I/O处理线程在轮询所有的virtqueue,因此不需要Guest在添加新的请求到virtqueue后更新PCI的配置空间。SPDK vhost-user-scsi的后端I/O处理模块轮询机制加上零拷贝技术基本解决了前面我们提到的阻碍QEMU virtio-scsi性能提升的两个关键点。