1. 程式人生 > >轉:理解CPU steal time

轉:理解CPU steal time

哪裡可以看到CPU Steal Time?

你可以使用Linux 的 TOP 命令來看到實時的一些效能指標。CPU相關的其中一行內容如下:
top
兩個你可能較為熟悉的是 %id(空閒 百分比) 和 %wa(I/O 等待 百分比)。 如果 %id 很低, 那麼說明CPU的工作負載很大並且沒有多少計算負載能力剩餘。 如果 %wa 很高,則說明瓶 CPU 處於等待計算的狀態,但是正在等待I/O活動的完成(類似 從資料庫中獲取儲存在 磁碟上 的一行資料)。

%st(percent steal time) 是CPU展示的最後一個性能指標。

CPU Steal Time - 類比售票廳

假設你打算買了若干張最新的好萊塢大片的電影票,且有兩條隊伍等待買票和一個售票口:

Movie Theater

如果我們把 CPU steal time 效能指標 類比成 售票的過程, 那麼過程就是如下:

  • 0% Steal Time - 現在是禮拜三下午場:售票口正在工作,先處理第一條隊伍的電影觀眾,然後處理第二條,然後第一條,然後第二條,輪流進行。處理的很快,且沒有人在等待。

  • 50% Steal Time - 現在是禮拜五晚上: 在隊伍中的一個人有一半的時間需要等待另一個在售票口的人完成賣票,而不能立刻買到票。賣票的時間更長了。

  • 100% Steal Time - 現在是禮拜五晚上並且 現金出納金 壞了:所有人都在等待。

為什麼高 Steal Time 會對web應用有更大的影響

如果有你在負載未滿的物理機器上面執行一個長時間的計算任務,那麼它可能會使用超過它額定的CPU切片 時間。過一段時間,可能其他的VMs可能也會需要超過它們額定量的CPU切片 時間,所以這個任務的執行會變慢。對於長時間計算任務而言之,這個情況可能並不是不能接受的:它可能是會晚點一完成或者也可能更快的完成(由於它能夠使用更多的資源)。

然後,這種情況能夠時代web應用停止響應。對於實時任務,類似快速響應許多的web請求,效能下降到1/4會對請求佇列執行對應備選邏輯—中斷請求。

Steal Time遠高於0的原因

這裡有兩種可能性:

  1. 你需要一個額定更多CPU資源的虛擬機器(你的虛擬機器是問題)

  2. 物理機已經超賣了並且多個虛擬機器之間在激烈的競爭資源(你的虛擬機器不是問題)

提示:你不能通過看當前被影響的虛擬機器例項的CPU效能指標來判斷你所遇到的場景。(1 or 2) 當你有很多的虛擬宿主機上分別都部署了相同職責的服務程式(可能作為叢集)時,就比較容易知道自己遇到的問題了。

資源圖片

  • 是否 %st(CPU Steal Time Percentage) 在所有機器上面都上漲了?

    這個意味著你的虛擬機器在使用更多的CPU資源。你需要為你的虛擬起增加更多的CPU資源的配額。

  • 是否%st(CPU Steal Time Percentage) 只在一部分機器上面陡峭增長?

    這個意味著物理機器被超賣了。把你自己的虛擬機器挪到另一個物理機器去吧。

所有,什麼時候你應該擔心?

一般的參考標準-如果steal time 超過了10%並且持續了20分鐘,那麼虛擬機器就可能效能下降了

當這種情況發生:

  1. 關閉虛擬機器並且挪到另一臺物理機器上面

  2. 如果steal time維持在很高的數值, 那麼增加CPU資源配額。

  3. 如果steal time維持在很高的數值, 聯絡你的虛擬機器提供商。你的虛擬機器提供商有可能在超賣物理機。