我试图了解通过vhost-user接口与VM通信的ovs-dpdk(在主机上运行)中的数据包生命周期:
在dpdk-ovs分配的大页面上将DMA传输到mempools - 在用户空间中。
ovs-dpdk将此数据包复制到关联guest虚拟机的共享vring(在ovs-dpdk用户空间进程和guest虚拟机之间共享)
guest虚拟机中不再有副本 - 即当guest虚拟机上运行的任何应用程序想要使用该数据包时 - shared-vring和guest应用程序之间没有副本。
这是对的吗?第4部分是如何实施的?这是来宾中的操作系统和来宾中的应用程序之间的通信,那么如何使用零拷贝实现这一点?
答案 0 :(得分:0)
guest虚拟机中不再有副本 - 即当guest虚拟机上运行的任何应用程序想要使用该数据包时 - shared-vring和guest应用程序之间没有副本。 这是对的吗?
不是真的。如果您在来宾中运行DPDK应用程序,这是正确的。但是,如果在guest虚拟机中运行普通内核,则guest虚拟机内核和guest用户空间之间将存在另一个副本。
第4部分是如何实施的?
见上文。这仅适用于DPDK应用程序。