您可能會留意到最近在Linux內核及某些工具如vmstat中,有一個新的CPU使用率的類別,名字叫stealing。這是什麼意思呢?爲何您的CPU會被盜用?難道是外星人在咱們的服務器上工做,惡意偷竊了CPU?嗯,仍是...服務器
CPU被盜用是一個新概念,與虛擬化和雲計算有關。指的是當您的虛擬程序須要運行時,系統管理程序卻不給您分配CPU週期,因此,您的虛擬 CPU週期被偷走給了別人,一般是給了另外一個虛擬程序。ide
爲何會發生這種事呢?工具
您可能知道,系統管理程序(Xen及 VMWare等)控制硬件設備,決定如何給虛擬程序分配服務器物理CPU內核的CPU週期。若機器負載低,那麼,只要不超過系統配置限制,每一個虛擬程序都能得到所需的CPU。性能
一般狀況下VM內核並不知曉此過程,並且在該過程當中計算程序複雜,由於要涉及到虛擬 CPU的控制、限制和共享方式。可是,一般狀況下,VM內核知道本身有多少個CPU核及其速度如何,以及什麼叫100%負荷。雲計算
儘管CPU被盜用的狀況不容易被發現,可是您應該知道有這種事件,由於它確實會使您受損失,可能您的CPU有50%的空閒資源並且處在一個較低的負荷均值上,可是可能實際上已經負載了,這是司空見慣的事情。此事發生時,服務器性能不好,用戶也會很不高興,因此,你們應該知道有這回事,以及知道如何檢測及處理這種事。spa
CPU被盜用在大型繁忙系統中以及在雲中(有CPU上限,如AmazonEC2,尤爲是當這些雲中有小型實例的時候)是常常發生的事,大型的私雲中也常發生此事。在此狀況下,系統管理程序會挪走CPU週期。blog
可是在VM中,可能您會發現CPU使用率(user, nice, iowait)只有50%,還有50%是空閒的-看起來很好,是否是?尤爲是當您使用一些過期的工具如top或者其它工具,由於這些工具不知道有CPU被盜用這回事,因此,系統根本沒法察覺,可是系統資源被盜用的狀況確實存在,只是你不知道而已。您的服務器看起來還有50%的空閒資源,但實際上已通過載了,運行的很慢。事件
要想發現這種狀況,得采用一些新發布的工具如vmstat,它能夠幫助您發現問題。資源
當您的CPU使用率持續維持在100%時,或者有明顯的被盜用的跡象時(約大於10%),就代表您沒有空閒的CPU資源了。您的負載還會有所增長,可是請不要覺得您尚未達到「高」負載均值。例如,假設您有4個虛擬CPU,高負載均值多是8+,可是若您被盜用了50%,就是一半的CPU資源被盜用了,那麼負載均值若是是4的話,就已是高負載了。get
那麼,您該如何處理此事呢?首先,請檢查一下看您是否能夠從管理程序/Dom0 這一層次上獲取更多的資源,這事在私雲中不難作到,可是在Amazon上就難以實現,除非您更新實例(作起來簡單,可是很燒錢)。若是上面的方法不能實現,那麼,您就得減小VM的負荷了,就是限制用戶數量以及更改配置等。若是,兩個方法都不行,那您就繼續忍受被盜的痛苦吧,只要您內心有數,您的服務器事實上已經高負載了就好了。
從雲計算及虛擬化角度來看,CPU被盜用是一個新的概念。可能還不知情,就已經被盜用了,因此,採起合理的監控並對其有合理的理解是很重要的。有時,能搞定此事,有時未必能搞定,但至少得知道有這回事,這就邁出了第一步。
(Authored by Steve Mushero / ChinaNetCloud CEO & CTO 本博客英文原文請點此查看)