虛擬機器(xen)中credit排程演算法分析----xen的credit排程器
杭州電子科技大學網格與服務計算實驗室 周峰
上面我已經介紹了schedule.c檔案中排程部分的**,那麼接下來正式進入主題,說說sched_credit.c檔案中的主要涉及排程的資料結構與函式。
首先我們說說xen的credit排程器:管理員為每個domain分配weight值來決定credit值,xen按照credit值公平排程各個domain。domain中vcpu有兩種狀態,under和over。over表示domain中vcpu的credit值已用完,under表示credit值還有剩餘。在進行排程時,排程器只關心vcpu所處的狀態,而不會進一步關心其剩餘的credit值,處於under狀態的vcpu總是優先於over狀態的vcpu被排程,只有當under狀態的vcpu都無法執行時才會排程到over狀態的vcpu,所以,只有當處理器空閒時才允許破壞credit的公平性排程策略。處於相同狀態的vcpu按照先進先出的方式執行,當處於佇列首部的虛擬機器被排程到時,在其credit值足夠的情況下,允許其執行三個排程時長,即30ms。系統每隔10ms觸發一次排程中斷,當前正在執行的vcpu會被減掉100個credit,當所有vcpu的credit值總和變為負值時,為所有vcpu重新分配credit。
當事件被傳送到domain的vcpu時,如果vcpu處於空閒狀態,xen就會會將其喚醒,然後,排程器會被立即執行,重新計算排程順序,如果新被喚醒的虛擬機器具有較高的優先順序(這裡指的是boost狀態,不是boost的話,應該直接被放入到under狀態的最後乙個),則之前正在執行的虛擬機會被搶占排程。在credit最初的設計中,接收到事件的vcpu總是被放在排程佇列的尾部,雖然排程器會立即重新計算排程順序,但它必須等待排在其前面的所有vcpu都執行完才會被排程到。
ps:在響應敏感類應用中,事件響應延遲與其所處的佇列位置密切相關,響應延遲普遍較長且波動明顯。為了解決響應延遲時間過長的問題,credit排程演算法新加入了乙個boost狀態,處於boost態的虛擬機器具有最高的優先順序。空閒的虛擬機器在通過事件通道接收到乙個事件時會進入boost態,因為boost態優先順序最高,如果允許排程器立即重新排程,則該虛擬機會被立即排程到。經實驗證明,加入boost態的credit演算法可以大大降低響應延遲的平均值,但如果有多台虛擬機器同時進行i/o操作,則他們都會被boost,從而無法體現boost態優先順序高的優勢,等待處理的事件仍有可能長時間得不到響應,所以,對波動現象改進很少。boost對i/o的頻寬也有明顯改進。
我在下面舉個簡單的計算credit的例子:
Xen虛擬機器
虛擬化技術是雲計算實現彈性計算的核心技術。在構建雲計算平台中,虛擬機器的安裝是基礎。常用的虛擬機器工具很多,如vmware xen kvm virtual pc等,這些工具使得使用者可以在單台物理pc上 稱為宿主機 虛擬出多個虛擬機器vm virtual machine 由於在每個vm上可以安裝與宿...
Xen虛擬機器檢測
應用程式如何獲知自己是否工作在xen 虛擬機器中呢?使用cpuid指令可以完成該任務。uint32 t eax,ebx,ecx,edx,pages,msr,i char signature 13 cpuid 0x40000000,eax,ebx,ecx,edx uint32 t signature ...
Xen虛擬機器VNC輸出
摘要 有時需要通過主機hvc0登入到虛擬機器中,有時需要借助vnc登入虛擬機器進行管理,這樣就需要有相應的配置保證兩者都能正常輸出。具體的配置如下文。hvc是xen虛擬化技術引入的對虛擬機器進行控制的虛擬console,在虛擬機器的配置中自動完成 vnc顯示vga硬體輸出,可以完成對虛擬機器的管理。...