是誰動了我的CPU?

 您可能會留意到最近在Linux內核及某些工具如vmstat中,有一個新的CPU使用率的類別,名字叫stealing。這是什麼意思呢?爲什麼您的CPU會被盜用?難道是外星人在我們的服務器上工作,惡意偷竊了CPU?嗯,還是...

CPU被盜用是一個新概念,與虛擬化和雲計算有關。指的是當您的虛擬程序需要運行時,系統管理程序卻不給您分配CPU週期,所以,您的虛擬 CPU週期被偷走給了別人,通常是給了另一個虛擬程序。

爲什麼會發生這種事呢?

您可能知道,系統管理程序(Xen及 VMWare等)控制硬件設備,決定如何給虛擬程序分配服務器物理CPU內核的CPU週期。若機器負載低,那麼,只要不超過系統配置限制,每個虛擬程序都能獲得所需的CPU。

通常情況下VM內核並不知曉此過程,而且在該過程中計算程序複雜,因爲要涉及到虛擬 CPU的控制、限制和共享方式。但是,通常情況下,VM內核知道自己有多少個CPU核及其速度如何,以及什麼叫100%負荷。

儘管CPU被盜用的情況不容易被發現,但是您應該知道有這種事件,因爲它確實會使您受損失,可能您的CPU有50%的空閒資源而且處在一個較低的負荷均值上,但是可能實際上已經負載了,這是我們司空見慣的事情。此事發生時,服務器性能很差,用戶也會很不高興,所以,您應該知道有這回事,以及知道如何檢測及處理這種事。

CPU被盜用在大型繁忙系統中以及在雲中(有CPU上限,如AmazonEC2,尤其是當這些雲中有小型實例的時候)是經常發生的事,大型的私雲中也常發生此事。在此情況下,系統管理程序會挪走CPU週期。

但是在VM中,可能您會發現CPU使用率(user, nice, iowait)只有50%,還有50%是空閒的-看起來很好,是不是?尤其是當您使用一些過時的工具如top或者其它工具,因爲這些工具不知道有CPU被盜用這回事,所以,系統根本無法察覺,但是系統資源被盜用的情況確實存在,只是你不知道而已。您的服務器看起來還有50%的空閒資源,但實際上已經過載了,運行的很慢。

要想發現這種情況,得采用一些新發布的工具如vmstat,它可以幫助您發現問題。

當您的CPU使用率持續維持在100%時,或者有明顯的被盜用的跡象時(約大於10%),就表明您沒有空閒的CPU資源了。您的負載還會有所增加,但是請不要以爲您還沒有達到“高”負載均值。例如,假設您有4個虛擬CPU,高負載均值可能是8+,但是若您被盜用了50%,就是一半的CPU資源被盜用了,那麼負載均值如果是4的話,就已經是高負載了。

那麼,您該如何處理此事呢?首先,請檢查一下看您是否可以從管理程序/Dom0 這一層次上獲取更多的資源,這事在私雲中不難做到,但是在Amazon上就難以實現,除非您更新實例(做起來簡單,但是很燒錢)。如果上面的方法不能實現,那麼,您就得減少VM的負荷了,就是限制用戶數量以及更改配置等。如果,兩個方法都不行,那您就繼續忍受被盜的痛苦吧,只要您心裏有數,您的服務器事實上已經高負載了就行了。

從雲計算及虛擬化角度來看,CPU被盜用是一個新的概念。可能您還不知情,就已經被盜用了,所以,採取合理的監控並對其有合理的理解是很重要的。有時,您能搞定此事,有時未必能搞定,但至少得知道有這回事,這就邁出了第一步。

       (Authored by Steve Mushero / ChinaNetCloud CEO & CTO  本博客英文原文請點此查看

發佈了65 篇原創文章 · 獲贊 5 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章