客戶經常詢問關於 CPU 竊取時間(CPU steal time)的問題。特別是那些重度使用 CPU 且這’是其關鍵效能指標的客戶。在實體與虛擬環境之間,CPU 和核心的設定與行為存在相當多的差異。甚至在不同的雲端服務商之間,設定上的差異也使得表面上的同類對比變得困難。因此,我們認為為客戶簡要介紹我們的設定和 CPU 分配邏輯,並解釋 CPU 竊取時間最常見的來源,會非常有用。
首先,對於不熟悉這個概念的人來說,CPU 竊取時間是指當虛擬化管理程序(hypervisor)忙於將實體 CPU 用於其他用途(例如其他虛擬機器/雲端伺服器)時,您雲端伺服器內的虛擬 CPU 必須等待真實實體 CPU 的時間。這是一篇關於 CPU 竊取時間的優秀文章,這’非常值得一讀。
關於我們 CPU 設定的簡要資訊
首先需要了解的是,這與我們在託管您運算服務的每個實體運算節點上,如何在虛擬機器之間分配核心的方式有關。在 CloudSigma,CPU 及其核心是共享的。換句話說,我們不會將客戶的雲端伺服器綁定到特定的核心。CPU 時間是由實體運算節點的排程器動態分配的,所有資源都是共享的。我們相信,這允許運算節點即時進行合理的分配調整以平衡負載,從而在整體上提供更可靠的效能,並帶來許多好處。
結合這一點,我們使用 控制群組(簡稱 cgroups),以根據您透過伺服器規格設定的資源,確保每個雲端伺服器都有足夠的 CPU 時間。最後,排程器會決定如何處理任何剩餘的資源和 cgroups。同樣值得注意的’是,我們保留了一組特定的核心,使其不屬於客戶運算工作負載的分配範圍。我們使用這些核心來運行實體主機的作業系統。特別是,我們保留了額外的核心來處理網路和儲存操作。所有這些都旨在提高整部機器的穩定性。此外,這有助於為您(作為客戶)提供長期穩定的效能水準,且不受其他客戶’負載的影響。
虛擬化環境中 CPU 竊取時間的來源
與實體環境不同,在虛擬化環境中,有多種來源和情況可能會讓您遇到 CPU 竊取時間。這是原因在多租戶虛擬化環境中,情況更為複雜。並非所有情況都代表您沒有獲得應得的 CPU 時間,事實上,在許多情況下,您通常可以吸收超出分配大小的空閒 CPU 週期,但那’並不是您會看到 CPU 竊取時間的情況。以下將更詳細地介紹三種最常見的情況。
您的雲端伺服器過載
這種情況時有發生!每個人都希望盡可能充分利用所付費的容量,然而,如果分配給您虛擬雲端伺服器的 CPU 不足以處理工作負載,隨著工作在虛擬 CPU 內積壓和排隊,您可能會看到 CPU 竊取時間。如果這是 CPU 竊取時間的根本原因,那麼解決方案就是調整雲端伺服器的規格。如果這只是暫時的過載,您可以安全地保持現狀。當您的負載下降時,您’會看到 CPU 竊取時間消失。
託管您雲端伺服器的實體伺服器過載
如果主機過載,在這種情況下,這屬於我們方面的故障。這’很罕見,但確實可能發生。在這種情況下,我們使用即時遷移(live migration)在不中斷的情況下將虛擬機器遷移到其他實體運算節點,從而將負載水平降回正常水平。通常,我們將主機維持在遠低於滿載的狀態。因此,如果您在較長時間內持續觀察到此情況,請與我們聯絡。我們免費的 24/7 技術支援可以檢查您所在的實體主機。如果沒有過載,那麼這不太可能’是您 CPU 竊取時間的根本原因。
您正在使用較小的虛擬核心大小
在 CloudSigma,我們讓您能夠定義虛擬核心大小,以便在任何雲端伺服器規格下,利用例如更多 CPU 執行緒或更多較小的虛擬核心。作業系統內的雲端伺服器將始終將核心大小視為完整的實體大小。
如果實體核心為 2.6GHz,但您的 VM 為 4GHz 且有兩個核心,則每個虛擬核心將為 2GHz。因此您將始終看到竊取時間。事實上,這是因為由於虛擬核心尺寸較小,您收到的是總核心的按比例分配量,而不是完整大小。因此,如果您確實在使用較小的虛擬核心大小,則應始終調整 CPU 竊取時間的任何計算以考慮到這一點。為了避免這種情況,您可以為每個核心使用完整的核心大小。您可以透過將虛擬核心大小擴展到完整的 CPU 核心大小(例如 Intel v4 2.6GHz)來做到這一點。
結論
雲端中的 CPU 竊取時間比傳統的單租戶實體環境稍微複雜一些。然而,它確實仍然存在。然而,作業系統對 CPU 竊取時間的報告並未針對不同的情況進行調整。這意味著您可能會遇到誤報。當您發現 CPU 竊取時間時,通常意味著正在發生資源限制。我們希望這篇文章能幫助您快速找出根本原因,並確保持續順暢的運作。
祝您運算愉快!
Robert
留言
目前尚無留言。成為第一個留言的人吧。