1. 程式人生 > >NFVI特性之實時虛擬機()二

NFVI特性之實時虛擬機()二

openstack

接前文,之前講了openstack中實時虛擬機特性都作了那些特有的實現,這些代碼大部分在M版本中已經合入。但是關於qemu本身消耗的CPU時間,並沒有很好的處理。這塊的設計和代碼實現一直到P版本,也就是最近才合入到主幹代碼中。


我們知道,openstack中nova根據虛擬機的flavor給虛擬機分配CPU以及確定CPU的放置策略。


由於qemu本身也要消耗很多CPU實現,用於qemu本身的event loop/異步IO/遷移虛擬機/spice等業務。之前nova默認將qemu和vCPUs運行在相同的pCPU上。

大多數情況下,實時性要求不那麽高,這樣也沒有什麽問題。但是對實時性要求比較高的場景下,由於qemu偷取了部分vCPUs的時間,會導致實時性不符合要求。


在M版的實現裏,我們可以通過cpu_realtime_mask指定qemu和虛擬機的某幾個vCPUs共用pCPUs,虛擬機的其他vCPUs使用實時調度策略。從而保證這幾個vCPUs符合實時性要求。

由於虛擬機的vCPUs只有部分是實時性的,因此Linux系統可以使用,但是不能滿足某些實時操作系統的要求。


P版本中增加了配置hw:cpu_emulator_threads=isolate/share,用於設置emulator使用的cpu的分配策略。如果選用isolate,會從host上固定一個pCPU供emulator使用。(目前不能配置,只能是1個)。如果選用了share,和之前的行為一致。

NFVI特性之實時虛擬機()二