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)進行計算密集型的圖像壓縮和編碼工作。
QEMU 的詳細介紹:請點這裡
QEMU 的下載地址:請點這裡