1.Inflight机制存在的原因 在QEMU/KVM/SPDK/DPDK这种架构下,vhost相关进程会因为各种异常概率crash的,在DPDK这种网络架构下,最多是产生丢包效应,一旦vhost进程拉起重连后,DPDK网络架构仍可以正常工作,而对于SPDK则不可行,因为存储系统中丢失的任一块请求在文件系统中都可能表意元数据,导致文件系统异常,对于用...

在做KVM模块热升级的过程中碰到了这个坑,通读代码时本来以为msr在vcpu load和vcpu exit中进行切换,便忽略了kvm_shared_msr_cpu_online,没想到它能直接重置了host,连投胎的过程都没有,直接没办法debug,还是要多亏这个问题在某种情况下不必现,chengwei才更快找到原因,顺便看了一下kvm_shared_msrs机制,理清楚了问...

 之前耗了一段时间做SPDK下的vhost-user-nvme的开发,就是让VM内使用NVME存储。涉及到vhost-user-nvme设备的QEMU live迁移或者热升级的开发,碰到一个有意思的问题,值得写一下。 QEMU版本:https://github.com/spdk/qemu.git 最好用https://review.gerrithub.io/#/c/spdk/qemu/+/406011/ SPDK版本:https://gith...

在libvirt下这两个函数配对使用,负责对任务建立队列关系 qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) qemuDomainObjEndJob(driver, vm) 看qemuDomainObjBeginJob的入参,qemuDomainJob: typedef enum {     QEMU_JOB_NONE = 0,  /* Always set to 0 for easy if (jobActive) conditions */     QEMU_JOB...

http://git.qemu.org/git/qemu.git v2.8.0 https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git 4.4.70 1.VRing的初始化 QEMU下的VRing typedef struct VRing {//vring中最多有多少各request unsigned int num; unsigned int num_default; //数据对齐比例尺 unsigned int align; //VRingDe...

QEMU下的内存结构体很多了,RAMBlock,MemoryRegion,AddressSpace,MemoryRegionSection,KVMSlot和kvm_userspace_memory_region,很多时候看代码时候都会被搅合成一坨,虽然很早时候在KVM源代码分析2:虚拟机的创建与运行和KVM源代码分析4:内存虚拟化都提到了内存虚拟化的过程,但实际上这几个结构体之间的关系并没有理...

KVM tree commit id:2868b2513aa732a99ea4a0a6bf10dc93c1f3dac2 v4.11.0 kvm_mmu_free_page释放MMU page, kvm_mmu_commit_zap_page负责具体的任务,需要被释放的MMU page都挂在invalid_list链表上,而invalid_list生成方式主要有这几种:kvm_sync_page, kvm_sync_pages,kvm_mmu_prepare_zap_page,prepare_zap_oldest...

代码版本:QEMU git release v2.8 x86_64-softmmu/qemu-system-x86_64 -enable-kvm -M q35  -m 256 -smp 1 -drive file=/workspace/kvm_auto_test/kvm_test.qcow2,format=qcow2 -netdev tap,fd=26,id=hostnet0 -device e1000,netdev=hostnet0,id=net0,mac=52:54:00:f1:ec:ba,bus=pcie.0 e1000_class_init是网络设备初始...