Linux

linux最高負載平均值似乎太高了

  • December 14, 2018

按照這個https://unix.stackexchange.com/a/279354/108702,我跑了;

lscpu | grep -E '^Thread|^Core|^Socket|^CPU\('
CPU(s):              8
Thread(s) per core:  2
Core(s) per socket:  4
Socket(s):           1

但是top

top - 01:06:47 up 51 days,  6:24,  2 users,  load average: 23.67, 22.50, 22.40
Tasks: 5989 total,   1 running, 5919 sleeping,   0 stopped,   0 zombie
%Cpu(s): 84.6 us,  2.7 sy,  0.0 ni, 12.3 id,  0.4 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem : 32799488 total,   940020 free, 18284088 used, 13575380 buff/cache
KiB Swap:        0 total,        0 free,        0 used. 14034316 avail Mem

我錯過了什麼?我期望最大負載為 2 * 4 * 1 = 8(在 100% 使用時)?(另外,是不是太高了?)

TL;DR,23 可能太高了。

考慮負載的最簡單方法是“隊列中使用 CPU 的程序數”。如果負載與 CPU 計數完全匹配,則需要 CPU 的程序數與可用 CPU 完全匹配,並且您具有理想的使用率。如果負載高於可用 CPU 的數量,則某些程序必須等待 CPU 可用,並且您沒有達到理想的吞吐量,因為您沒有足夠的資源。如果負載低於 CPU 計數,則某些 CPU 處於空閒狀態,您可能可以從此框獲得更多吞吐量。

它是 CPU 使用率的有用計數器,因為它告訴您您的超額訂閱情況;CPU 使用率會告訴你瞬時消耗,但如果你的所有核心都以 100% 執行,那實際上可能是理想的——這裡重要的是平均負載,它會告訴你隊列有多大。打個比方,麥當勞的員工可以 100% 地為顧客服務,重要的是有多少人在等待服務。這就是平均負載告訴你的。

當然,這是一種簡化,其中包含大量技術細節和細微之處,但對於我們 95% 的人來說,這是一個足夠好的規則來衡量系統需求並解釋平均負載告訴你什麼。

引用自:https://unix.stackexchange.com/questions/487890