tl;dr:第一个 CPU 内核一直处于饱和状态,所有其他内核一直处于负载不足状态。
基于 Ubuntu 的 Xen XCP 中的虚拟机:
$ uname -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 模块。 经销商 ID:Ubuntu 描述:Ubuntu 11.04 发布:11.04 代号:natty
此 VM 有 8 个 CPU 内核。
该VM上运行着10个单线程工作进程,它们通过FCGI接口连接到nginx服务器(监听本地网络端口)。
在来自 AB 的合成负载下,只有八个核心中的第一个核心被加载到 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] Swp[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 中断,而且有很多。
嗯,
为什么你没有提到taskset?taskset -p pid将检索亲和力...
将 -c 添加到 taskset 以指定一个 cpulist:在这种情况下,除了 0 以外的任何东西。