Skip to the content.

Level 1 : stop continue

基本使用

代码流程

savevm 中 load_snapshotsave_snapshot 可以和 migration 共用

[ ] 为什么 savevm 和 postcopy 有关系哇

似乎主要是 postcopy 的一些通信的操作

细节分析

inflight block io 和网络 io 都是如何暂停的

如果 io engine 在 QEMU 内部,例如普通的 virtio-blk ,需要等 host 的 io 返回吗?

如果 io engine 在 QEMU 外部,例如 SPDK 的,如何处理的

下发暂停命令之后,vCPU thread 如何结束的

当重新启动虚拟机,那些 vCPU thread 是如何启动的?

hmp 命令都是 hmp_ 开头的,容易找到:

没想到啊,居然用的是这个方法:

    int err = pthread_kill(cpu->thread->thread, SIG_IPI);

当 vCPU 停住的时候,代码的结构在这里:

暂停和启动就是普通的 flag 就可以解决:

void cpu_pause(CPUState *cpu)
{
    if (qemu_cpu_is_self(cpu)) {
        qemu_cpu_stop(cpu, true);
    } else {
        cpu->stop = true;
        qemu_cpu_kick(cpu);
    }
}

void cpu_resume(CPUState *cpu)
{
    cpu->stop = false;
    cpu->stopped = false;
    qemu_cpu_kick(cpu);
}

本站所有文章转发 CSDN 将按侵权追究法律责任,其它情况随意。