Amazon-Ec2

儘管負載很高,但 EC2 實例上的高 %idle

  • November 26, 2012

我喜歡完全載入我們的計算硬體以減少浪費的 CPU 時間,而在典型的內部硬體上,這相當容易:載入具有與核心一樣多的可執行執行緒的機器,空閒時間將歸零。

這是一個範例應用程序:

public class Looper
{
   public static void main(String[] args)
   {
       while (true) { new java.util.Random().nextBytes(new byte[4096]); }
   }
}

在我們內部的 8 核硬體上,我可以執行其中的 8 個,並且空閒時間(由mpstatand報告top)歸零。我什至可以添加第 9 個、第 10 個等程序,並且空閒時間非常接近於零。

然而,在 EC2(c1.xlarge 實例)上,空閒時間比我預期的要長得多。8 個程序時,空閒時間徘徊在 %1 左右,而 9、10 等程序時,空閒時間可以增加到 2%-3% 或更高。對於更複雜的程序(不是上面的範例),空閒時間可能會更長。

誰能解釋一下?這是最近的亞馬遜核心,不包括被盜的 CPU 時間,我希望在 EC2 上看到。這是 EC2 特有的問題,還是 Xen 普遍存在的問題?有已知的解決方法嗎?

通常在 EC2 中,空閒和竊取值看起來比在裸機上看到的要高。由於虛擬化的工作方式,這在 EC2 上是正常的。在這種情況下,您可能不會失去可用的 CPU 時間,因為它只是系統執行方式的產物。確保在檢查 CPU 使用率時,您使用的是支持 Xen 的工具版本,該版本了解如何辨識基於 Xen 的 VM 上的 CPU 時間。

引用自:https://serverfault.com/questions/179717