Ubuntu

CPU 核心使用率不均

  • December 19, 2012

tl; dr:第一個 CPU 核心始終處於飽和狀態,所有其他核心始終處於負載不足的狀態。

一個虛擬機,在基於 Ubuntu 的 Xen XCP 中:

$ unname -a
Linux MYHOST 2.6.38-15-virtual #59-Ubuntu SMP Fri Apr 27 16:40:18 UTC 2012 i686 i686 i386 GNU/Linux

$ lsb_release -a
沒有可用的 LSB 模組。
經銷商編號:Ubuntu
說明:Ubuntu 11.04
發佈時間:11.04
代號:納蒂

該 VM 有 8 個 CPU 核心。

該虛擬機上執行著 10 個單執行緒工作程序,它們通過 FCGI 介面連接到 nginx 伺服器(偵聽本地網路埠)。

在 AB 的合成負載下,只有第一個 8 個核心被載入到 100%(如從圖 中看到的htop)。它或多或少地始終處於非常高的負載下,並且所有其他核心的負載從 0% 到 100%,或多或少是隨機的(並且這些核心的 CPU 負載正在跳躍)。

這是我通常在負載下看到的內容htop


1 [|||||||||||||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||||||99.3%] 任務:70, 35 thr; 11 執行
2 [||||||||||||||| 15.0%] 平均負載:3.86 1.05 0.39
3 [|||||||||||||||||||||||||||||||||| 36.7%] 正常執行時間:22 天,06:31:57
4 [|||||||||||||||| 15.7%]
5 [||||||||||||||||||||| 22.4%]
6 [||||||||||||||||||| 19.9%]
7 [|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 71.2%]
8 [|||||||||||||||||||||||||||||| 31.3%]
記憶體[|||||||||||||||||||||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||394/4028MB]
交換[0/5362MB]

PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ 命令
26213 www-data 20 0 49748 26952 2448 R 29.0 0.7 10: 42.61 / usr / bin / luajit2
26227 www-data 20 0 50172 27412 2452 R 27.0 0.7 10: 43.53 / usr / bin / luajit2
26221 www-data 20 0 50736 27948 2452 R 27.0 0.7 10: 39.02 / usr / bin / luajit2
26234 www-data 20 0 50128 27232 2452 R 27.0 0.7 10: 36.36 / usr / bin / luajit2
26218 www-data 20 0 50232 27376 2452 R 26.0 0.7 10: 39.32 / usr / bin / luajit2
26214 www-data 20 0 51268 28496 2452 R 26.0 0.7 10: 58.15 / usr / bin / luajit2
26232 www-data 20 0 50420 27588 2452 R 25.0 0.7 10: 39.21 / usr / bin / luajit2
26217 www-data 20 0 50236 27348 2452 R 25.0 0.7 10: 34.44 / usr / bin / luajit2
26219 www-data 20 0 50748 27960 2448 R 23.0 0.7 10: 45.30 / usr / bin / luajit2
26239 www-data 20 0 49772 27188 2452 R 22.0 0.7 10: 39.39 / usr / bin / luajit2
26368 www-data 20 0 10856 3796 968 S 15.0 0.1 1:12.62 nginx:工作程序
26369 www-data 20 0 10652 3504 968 S 2.0 0.1 1:12.75 nginx:工作程序
26372 www-data 20 0 10520 3504 968 S 0.0 0.1 1:18.64 nginx:工作程序
...

在負載測試期間,所有工作程序都在R,負載測試執行大約 10-15 分鐘(性能約為 700-900 次點擊/秒)。當然,流量是由外部機器產生的。

看起來這種 CPU 核心負載不平衡是主要的性能瓶頸,如果所有核心負載均勻,性能可能會更高。

有關如何解決此問題的任何線索?

請告訴我是否可以提供更多資訊。

看起來 CPU0 接收到每個 eth1 中斷,而且數量很多。

$ cat /proc/中斷
CPU0 CPU1 CPU2 CPU3 CPU4 CPU5 CPU6 CPU7 
283: 113720624 0 0 0 0 0 0 0 xen-dyn-event eth1
284:1 0 0 0 0 0 0 0 xen-dyn-event eth0
285:2254 0 0 3873799 0 0 0 0 xen-dyn-event blkif
286:23 0 0 0 0 0 0 0 xen-dyn-事件 hvc_console
287:492 42 0 0 0 0 0 295324 xen-dyn-event xenbus
288:0 0 0 0 0 0 0 222294 xen-percpu-ipi callfuncsingle7
289:0 0 0 0 0 0 0 0 xen-percpu-virq 調試7
290:0 0 0 0 0 0 0 151302 xen-percpu-ipi callfunc7
291:0 0 0 0 0 0 0 3236015 xen-percpu-ipi resched7
292:0 0 0 0 0 0 0 60064 xen-percpu-ipi 自旋鎖7
293:0 0 0 0 0 0 0 12355510 xen-percpu-virq timer7
294:0 0 0 0 0 0 803174 0 xen-percpu-ipi callfuncsingle6
295:0 0 0 0 0 0 0 0 xen-percpu-virq 調試6
296:0 0 0 0 0 0 60027 0 xen-percpu-ipi callfunc6
297:0 0 0 0 0 0 5374762 0 xen-percpu-ipi resched6
298:0 0 0 0 0 0 64976 0 xen-percpu-ipi 自旋鎖6
299:0 0 0 0 0 0 15294870 0 xen-percpu-virq timer6
300:0 0 0 0 0 264441 0 0 xen-percpu-ipi callfuncsingle5
301:0 0 0 0 0 0 0 0 xen-percpu-virq 調試5
302:0 0 0 0 0 79324 0 0 xen-percpu-ipi callfunc5
303:0 0 0 0 0 3468144 0 0 xen-percpu-ipi resched5
304:0 0 0 0 0 66269 0 0 xen-percpu-ipi 自旋鎖5
305:0 0 0 0 0 12778464 0 0 xen-percpu-virq timer5
306:0 0 0 0 844591 0 0 0 xen-percpu-ipi 呼叫funcsingle4
307:0 0 0 0 0 0 0 0 xen-percpu-virq 調試4
308:0 0 0 0 75293 0 0 0 xen-percpu-ipi callfunc4
309:0 0 0 0 3482146 0 0 0 xen-percpu-ipi resched4
310:0 0 0 0 79312 0 0 0 xen-percpu-ipi spinlock4
311:0 0 0 0 21642424 0 0 0 xen-percpu-virq timer4
312:0 0 0 449141 0 0 0 0 xen-percpu-ipi 呼叫funcsingle3
313:0 0 0 0 0 0 0 0 xen-percpu-virq 調試3
314:0 0 0 95405 0 0 0 0 xen-percpu-ipi callfunc3
315:0 0 0 3802992 0 0 0 0 xen-percpu-ipi resched3
316:0 0 0 76607 0 0 0 0 xen-percpu-ipi 自旋鎖3
317:0 0 0 16439729 0 0 0 0 xen-percpu-virq timer3
318:0 0 876383 0 0 0 0 0 xen-percpu-ipi callfuncsingle2
319:0 0 0 0 0 0 0 0 xen-percpu-virq 調試2
320:0 0 76416 0 0 0 0 0 xen-percpu-ipi callfunc2
321:0 0 3422476 0 0 0 0 0 xen-percpu-ipi resched2
322:0 0 69217 0 0 0 0 0 xen-percpu-ipi 自旋鎖2
323:0 0 10247182 0 0 0 0 0 xen-percpu-virq timer2
324:0 393514 0 0 0 0 0 0 xen-percpu-ipi callfuncsingle1
325:0 0 0 0 0 0 0 0 xen-percpu-virq 調試1
326:0 95773 0 0 0 0 0 0 xen-percpu-ipi callfunc1
327:0 3551629 0 0 0 0 0 0 xen-percpu-ipi resched1
328:0 77823 0 0 0 0 0 0 xen-percpu-ipi 自旋鎖1
329:0 13784021 0 0 0 0 0 0 xen-percpu-virq timer1
330: 730435 0 0 0 0 0 0 0 xen-percpu-ipi callfuncsingle0
331:0 0 0 0 0 0 0 0 xen-percpu-virq 調試0
332: 39649 0 0 0 0 0 0 0 xen-percpu-ipi callfunc0
333: 3607120 0 0 0 0 0 0 0 xen-percpu-ipi resched0
334:348740 0 0 0 0 0 0 0 xen-percpu-ipi 自旋鎖0
335:89912004 0 0 0 0 0 0 0 xen-percpu-virq timer0
NMI:0 0 0 0 0 0 0 0 不可屏蔽中斷
LOC:0 0 0 0 0 0 0 0 本地定時器中斷
SPU:0 0 0 0 0 0 0 0 虛假中斷
PMI:0 0 0 0 0 0 0 0 性能監控中斷
IWI:0 0 0 0 0 0 0 0 IRQ 工作中斷
RES: 3607120 3551629 3422476 3802992 3482146 3468144 5374762 3236015 重新安排中斷
CAL:770084 489287 952799 544546 919884 343765 863201 373596 函式呼叫中斷
TLB:0 0 0 0 0 0 0 0 TLB 擊落
TRM:0 0 0 0 0 0 0 0 熱事件中斷
THR:0 0 0 0 0 0 0 0 門檻值 APIC 中斷
MCE:0 0 0 0 0 0 0 0 機器檢查異常
MCP:0 0 0 0 0 0 0 0 機器檢查輪詢
錯誤:0
什麼:0

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