发布时间:2019-10-13 22:27:40
qemu内存管理之内存分配——lvyilong316这篇文章主要根据qemu2.10版本代码分析一下qemu内存分配的流程。这里说的qemu内存分配实际上是指qemu为guset分配内存,其根本原理就是调用mmap去分配一块内存给guset使用。但是根据不同的需要,mmap的调用方式不同,比如是private的mmap还是share的mmap,是匿名的mmap,还.........【阅读全文】
发布时间:2018-07-08 21:42:48
qemu-kvm 中的那些feature——lvyilong3161.整体介绍我们知道,启动虚拟机时,前后端网络会进行feature的协商,通常我们说的前端就是guest内部的驱动,而后端就是dpdk的vhost-user。但是guest驱动是不能直接和vhost_user进行协商的,中间需要通过qemu这个中介。 所以应该是图1这个样子。图1.........【阅读全文】
发布时间:2018-06-24 21:39:48
qemu和vhost-user前后端协商过程这篇文章主要从qemu的角度分析虚拟机启动前后端的协商过程。虚拟机当后端使用dpdk vhost-user时整个前后端过程可以分为三个阶段:qemu启动阶段,前端驱动加载写VIRTIO_PCI_GUEST_FEATURES寄存器,前端驱动加载完成写VIRTIO_PCI_STATUS寄存器。我们 我们这.........【阅读全文】
发布时间:2018-04-07 22:29:14
qemu对象模型——QOM实现分析——lvyilong316QEMU提供了一套面向对象编程的模型——QOM,即QEMU Object Module,几乎所有的设备如CPU、内存、总线等都是利用这一面向对象的模型来实现的。QOM模型的实现代码位于qom/文件夹下的文件中。那么qemu为什么要引入QOM这个概念呢?首先,qemu作为一个纯软件虚拟化的虚.........【阅读全文】
发布时间:2018-04-01 20:03:24
qemu函数调用关系—module_call_init机制——lvyilong316(说明:以下代码来自qemu 2.4)在分析qemu代码前,首先要清楚代码的大概调用路径。这里对几个重要的初始化调用路径分析一下,为以后阅读代码打下基础。首先,从main函数开始分析(vl.c),其中我们看到有几处module_call_init的调用,依次是:m.........【阅读全文】
zf8292024-11-13 13:41
zf829:您好,请教大神一个问题,设备直通给VM时,中断到底会不会导致VM_EXIT吗,如果会,那VIRTIO直通时还会导致IO性能下降吧?“当透传设备产生中断时,vfio_msihandler ISR执行,该函数不做实际的服务程序处理,仅仅通过eventfd_signal激活irqfd_inject,然后最终调用deliver_posted_interrupt向虚机注入中断,中断号即为虚机配置透传设备时的中断号。” 这段描述在代码上我也仔细看了,逻辑肯定是对的,但另一方面我还是不确定中断到底会不会导致VM_EXIT
这里的中断主要是指数据包收发的中断
回复 | 举报lemon222024-10-09 22:34
你好,有个关于实现方面的问题:当协议栈收到来自app的数据(如ping)时,会发给tun设备,然后又被发送给vpn程序,程序对其进行加密或者一些处理之后,要发送出去,这里是通过什么方式发送出去的呢?我看你关于itun/tap的文章中写的是通过socket发送给协议栈,然后自动给物理网卡后发送出去,实现来说,就是直接用socket与下一跳建立连接,然后代码用socket发送吗?那这样是不是不会再次经过TUN设备了?因为我看好像有的原理写的是再次写入到tun设备,然后tun设备给协议栈,最后再发送。
这里有点不太清楚如何具体的实现发送的
lvyilong3162023-06-06 15:06
zhangtongjian12:你好,请教下,“qemu和vhost-user前后端协商过程”中讲到的初始化多队列时,多队列初始化时,对应的kvm中断机制中irqfd和ioeventfd是和队列数目对应的吗?还是一个虚拟机就一个irqfd和ioeventfd?
和队列对应
回复 | 举报zhangtongjian122023-06-02 10:29
你好,请教下,“qemu和vhost-user前后端协商过程”中讲到的初始化多队列时,多队列初始化时,对应的kvm中断机制中irqfd和ioeventfd是和队列数目对应的吗?还是一个虚拟机就一个irqfd和ioeventfd?