雲 端 運 算 (cloud computing)[1] 是 近 年 來 熱 門 的 研 究 議 題 。 透 過 虛 擬 化 (virtualization)的機制讓虛擬機器共享同一台實體機器(physical machine)上的硬 體資源而可以同時執行許多虛擬機器(virtual machine)和安裝不同的作業系統。同 時,平行執行於實體機器上的虛擬機器也提高了實體機器上的資源利用率。透過 雲端運算的服務,使用者不需要自己擁有大量的實體機器來運行應用服務,可以 依照自己需求透過租借雲端的服務來降低成本。近年來,包括了 Amazon[2], Google[3]以及 Microsoft[4]都紛紛提供了自己的雲端服務以及負載平衡等機制。
在沒有負載平衡的機制下,虛擬機器可能會集中於某些實體機器上執行。而 在同一台實體機器上執行的不同虛擬機器間,會因為共享硬體資源,例如對處理 器的競爭以及對網路頻寬之間的競爭等,而造成效能的下降[5]。特別是對於資 源量較低的機器所造成的競爭情形越是明顯。
負載平衡(load-balancing)主要是在解決系統中的機器負擔不平衡的現象。考 慮系統中現有的工作量,透過分配這些工作給不同的機器運行,來避免某些機器 執行過多的工作。藉此加快工作的完成時間,提高整體的工作產能以及系統中的 資源使用率。
在雲端的環境中,機器的資源量多寡(capacity)不盡相同,例如處理器速度、
記憶體大小等。能力較強的機器可以同時執行較多的虛擬機器甚至負擔需求較高 的虛擬機器的運算環境。然而在佈署虛擬機器時,去預測使用者所要求的虛擬機 器能力,進而將虛擬機器依照實體機器的能力去佈署是有難度的。當系統中某些 實體機器上的負擔過重,導致整體產能下降、硬體錯誤甚至當機的情形發生,要 如何有效率的去偵測並且修復,所要付出的代價甚高,這些代價包括了從機器不 能運作到被偵測到並且修復的這段時間,以及機器上所有虛擬機器程序皆必須重 新執行的時間。然而,透過負載平衡,將系統中不同的虛擬機器,考慮其上的資
2
源使用率,透過 live migration 的機制來達到實體機器上的負擔皆在管理者設定 的一個門檻值(threshold)之下,進而減少虛擬機器之間的資源競爭(resource contention),提高應用程式執行的效能、以及避免上述的硬體錯誤情形發生。因 此,我們提出了一個雲端運算上的負載平衡演算法,自動的監看系統中實體機器 的資源利用度,透過虛擬機器的 Live Migration 來讓系統中實體機器的利用度皆 低於我們設定的一個門檻值,進而使得實體機器中的不同虛擬機器間的資源競爭
4