QEMU的几个线程

2014-11-24 03:32:27 · 作者: · 浏览: 4

HOST将qemu当做一个普通的进程和其他进程统一调度,可以使用资源对qemu进行资源预留隔离(cpuset)和优先级提升(chrt)。qemu进程包含多个线程,分配给GUEST的每个vcpu都对应一个vcpu线程,另外qemu还有一个线程循环执行select专门处理I/O事件。
QEMU的主要线程:


qemu里有个主线程处于无限循环,会做如下操作


当文件描述符就绪,定期器到期或者BH被调度,相应的callback会被调用

qemu中还有一些worker threads。一些占用CPU较多的工作会明显增大主IO线程的IO处理延迟,这些工作可以放在专用的线程里,例如posix-aio-compat.c中实现了异步文件I/O,当有aio请求产生,该请求被置于队列,工作线程可以在qemu主线程之外处理这些请求。VNC就是这样一个例子,它用了一个专门的worker thread(ui/vnc-jobs.c)进行计算密集型的图像压缩和编码工作。


相关阅读: