Netflix 很關注CPU的Steal Time。他們的策略是:若是是當前虛擬機的Steal Time 超過了大家設置的 閾值,他們會關閉這臺虛擬機而且在另一臺物理機上面重啓。web
若是你想要部署虛擬環境(例如:Amazon EC2), steal time就是你想要關注的性能指標之一。 若是這個指標的數值很高,那麼說明機器狀態很是糟糕。什麼是steal time?什麼會引起高steal time?多少纔是警惕值(你須要作什麼)?數據庫
From ibm:性能
Steal time is the percentage of time a virtual CPU waits for a real CPU while the hypervisor is servicing another virtual processor.
你的虛擬機(VM)會與虛擬環境的宿主機上的多個虛擬機實例共享物理資源。其中之一共享的就是CPU時間切片。若是你的VM的物理機虛擬比是1/4, 那麼它的CPU使用率不會限制於25%的CPU時間切片-它可以使用超過它設置的虛擬比。(有別於內存的使用,內存大小是嚴格控制的)。ui
你可使用Linux 的 TOP 命令來看到實時的一些性能指標。CPU相關的其中一行內容以下:spa
code
%st(percent steal time) 是CPU展現的最後一個性能指標。blog
假設你打算買了若干張最新的好萊塢大片的電影票,且有兩條隊伍等待買票和一個售票口:隊列
若是咱們把 CPU steal time 性能指標 類比成 售票的過程, 那麼過程就是以下:內存
0% Steal Time - 如今是禮拜三下午場:售票口正在工做,先處理第一條隊伍的電影觀衆,而後處理第二條,而後第一條,而後第二條,輪流進行。處理的很快,且沒有人在等待。ci
50% Steal Time - 如今是禮拜五晚上: 在隊伍中的一我的有一半的時間須要等待另外一個在售票口的人完成賣票,而不能馬上買到票。賣票的時間更長了。
100% Steal Time - 如今是禮拜五晚上而且 現金出納金 壞了:全部人都在等待。
若是有你在負載未滿的物理機器上面運行一個長時間的計算任務,那麼它可能會使用超過它額定的CPU切片 時間。過一段時間,可能其餘的VMs可能也會須要超過它們額定量的CPU切片 時間,因此這個任務的執行會變慢。對於長時間計算任務而言之,這個狀況可能並非不能接受的:它多是會晚點一完成或者也可能更快的完成(因爲它可以使用更多的資源)。
而後,這種狀況可以時代web應用中止響應。對於實時任務,相似快速響應許多的web請求,性能降低到1/4會對請求隊列執行對應備選邏輯—中斷請求。
這裏有兩種可能性:
你須要一個額定更多CPU資源的虛擬機(你的虛擬機是問題)
物理機已經超賣了而且多個虛擬機之間在激烈的競爭資源(你的虛擬機不是問題)
提示:你不能經過看當前被影響的虛擬機實例的CPU性能指標來判斷你所遇到的場景。(1 or 2) 當你有不少的虛擬宿主機上分別都部署了相同職責的服務程序(可能做爲集羣)時,就比較容易知道本身遇到的問題了。
是否 %st(CPU Steal Time Percentage) 在全部機器上面都上漲了?
這個意味着你的虛擬機在使用更多的CPU資源。你須要爲你的虛擬起增長更多的CPU資源的配額。
是否%st(CPU Steal Time Percentage) 只在一部分機器上面陡峭增加?
這個意味着物理機器被超賣了。把你本身的虛擬機挪到另外一個物理機器去吧。
通常的參考標準-若是steal time 超過了10%而且持續了20分鐘,那麼虛擬機就可能性能降低了
當這種狀況發生:
關閉虛擬機而且挪到另外一臺物理機器上面
若是steal time維持在很高的數值, 那麼增長CPU資源配額。
若是steal time維持在很高的數值, 聯繫你的虛擬機提供商。你的虛擬機提供商有可能在超賣物理機。