1.Inflight机制存在的原因
在QEMU/KVM/SPDK/DPDK这种架构下,vhost相关进程会因为各种异常概率crash的,在DPDK这种网络架构下,最多是产生丢包效应,一旦vhost进程拉起重连后,DPDK网络架构仍可以正常工作,而对于SPDK则不可行,因为存储系统中丢失的任一块请求在文件系统中都可能表意元数据,导致文件系统异常,对于用...
之前耗了一段时间做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版本:htt...
在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 */ ...
代码:git://git.qemu-project.org/qemu.git v2.9.0
在QEMU doc描述的块设备cache参数:
cache is "none", "writeback", "unsafe", "directsync" or "writethrough" and controls how the host cache is used to access block data.
cache mode
cache.writeback
cache.direct
cache.no-flush
writeback ...
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 al...
QEMU下的内存结构体很多了,RAMBlock,MemoryRegion,AddressSpace,MemoryRegionSection,KVMSlot和kvm_userspace_memory_region,很多时候看代码时候都会被搅合成一坨,虽然很早时候在KVM源代码分析2:虚拟机的创建与运行和KVM源代码分析4:内存虚拟化都提到了内存虚拟化的过程,但实际上这几个结构体之间的关系并没有理...
下面是QEMU object Model(QOM)的树状图,使用bash脚本生成的
#!/bin/bash
INFO_FILE="$(pwd)/test.txt"
function catfile()
{ local dir dir="$1"
cat $INFO_FILE | grep "^$dir " | awk -F " -> " '{print $2}' | xargs mkdir
if [ $(ls * | wc -w) -eq 0 ];then return fi
for i in * d...
代码版本: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是网络设备初...
问题不是出在upstream的版本上,而是内部开发的一个产品。在KVM这个系统里面,很多时候牵一发动全身,某些改动貌似是正确的,其实则不然,内核的其他模块也是类似的系统化,Jike说的“正是内核的开发门槛很高才保证了内核当前的质量”也是有道理的。
进入正题,产品要求VCPU进入guest之前需要等待响应,当存在响应的时...
代码版本linux-3.16.37-git, qemu-v2.8-git
因为eventfd要与epoll配合使用,不清楚epoll的请参考epoll的linux内核工作机制。
一. Eventfd在QEMU下的使用
Eventfd在QEMU下的使用以这三个函数为基础:event_notifier_init和event_notifier_get_fd,以及event_notifier_set_handler。
在event_notifier_init中,初始化E...