Cpu-Usage

2 個 CPU 上的 50% 負載與一個 CPU 上的 100% 負載相同嗎?

  • October 30, 2018

非常基本的疑問:我有一個應用程序在具有 2 個 vCPU 的 VM 上執行。兩個 CPU 的平均負載略低於 50%。

這是否意味著 1 個 CPU 足以滿足我的應用程序?還是更多 CPU 受益於並行執行的執行緒?

編輯:這是我係統的一個真實範例,它由 8CPU 組成,超過一個月。數據正規化為 100%=8CPU。我想知道這些資訊是否足以解決我的問題,基本上是系統是否過大。

CPU負載

CPU使用率

這不是那麼簡單。使用一個執行緒或程序盡可能多地消耗 CPU,在雙 CPU 系統上最多可以使用 50% 的 CPU。或者,某些系統會將其顯示為 100% CPU,因為此時最大值為 200% CPU。

如果你有兩個執行緒在一個核心的 50% CPU 上執行(所以它們不會最大化),也許它們在單個核心上執行的速度差不多,但是你會看到 100%。(這沒有考慮到機器還有其他事情要做,並且上下文切換會導致成本。)

例如,如果您有兩個執行緒在 50% 的時間內休眠併計算其他 50% 的時間,則一個 CPU 可以交替這兩個執行緒的休眠和計算,以便使用 100% 的 CPU。

編輯:

我想我會展示一些範例圖來說明它。

該伺服器執行 16 個高 CPU 程序,以及數百個低 CPU 程序。3 月份,我決定將它升級到 8 個 CPU/核心(因此躍升至 800%),主要是因為我不得不在它上面執行一段時間的額外軟體,你可以看到。

8 個 CPU

從 5 月到 7 月的大部分時間裡,4 個核心可能就足夠了。但是,我確實知道我的一些流程(進行批處理)會被延遲。

這是隨附的負載圖:

負載圖

它是相關的,但正如您所看到的,它不僅僅是百分比/100。

您希望此類圖表能夠做出明智的決定。

編輯 2,關於您的圖表:

有趣的。這些圖表是用什麼製作的?它們都以與我習慣相反的方式表示數據:系統中所有核心的 CPU 使用率似乎都達到了 100%,而不是像我的圖表那樣每個核心都達到 100%。你可以執行dd if=/dev/urandom of=/dev/null幾個小時來測試它;這將導致一個核心最大化,你會看到效果。

負載圖顯示每個核心的負載。我以前從未見過。uptime, htop, munin: 他們都只顯示load

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