歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

QEMU的幾個線程

HOST將qemu當做一個普通的進程和其他進程統一調度,可以使用資源對qemu進行資源預留隔離(cpuset)和優先級提升(chrt)。qemu進程包含多個線程,分配給GUEST的每個vcpu都對應一個vcpu線程,另外qemu還有一個線程循環執行select專門處理I/O事件。
QEMU的主要線程:

  • 主線程(main_loop),一個
  • vCPU線程,一個或者多個
  • I/O線程(aio),一個或者多個
  • worker thread(VNC/SPICE),一個

qemu裡有個主線程處於無限循環,會做如下操作

  • IO線程裡有個select函數,它阻塞在一個文件描述符(fd)集合上,等待其就緒。fd可以通過qemu_set_fd_handler()
  • 運行到期的定時器,定時器通過qemu_mod_timer添加
  • 運行BH(bottom-halves),BH通過qemu_bh_schedule添加

當文件描述符就緒,定期器到期或者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 的下載地址:請點這裡

Copyright © Linux教程網 All Rights Reserved