我有一个 Ubuntu VM,在基于 Ubuntu 的 Xen XCP 中运行。它托管基于 FCGI 的自定义 HTTP 服务,位于nginx.
下从负载ab 第一CPU芯饱和,其余为欠载。
在/proc/interrupts我看来,CPU0 提供的中断比任何其他内核都多一个数量级。他们中的大多数来自eth1.
我可以做些什么来提高此 VM 的性能?有没有办法更均衡地平衡中断?
血腥细节:
$ 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
$ cat /proc/interrupts
CPU0 CPU1 CPU2 CPU3 CPU4 CPU5 CPU6 CPU7
283:113720624 0 0 0 0 0 0 0 xen-dyn-event … 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 内核。
这个虚拟机上运行着 10 个单线程工作进程,它们通过 FCGI 接口连接到 nginx 服务器(在本地网络端口上侦听)。
在来自 AB 的合成负载下,只有 8 个内核中的第一个内核会加载到 100%(如从 中看到的htop)。它或多或少地始终处于非常高的负载下,所有其他内核的负载从 0% 到 100% 不等,或多或少是随机的(并且这些内核的 CPU 负载在跳动)。
这是我在负载下通常看到的内容htop:
1 [|||||||||||||||||||||||||||||||||||||||||||| …
当虚拟化是新的时,我们试图虚拟化所有东西,但后来我们注意到我们的虚拟机比裸机慢得多的用例。
对我们而言,在决定不进行虚拟化时,我们使用以下规则:
我们在 Xen 和 DRDB 以及 Hyper-V 与 DAS 的无共享方面都有过这些经验。所有管理程序都是这种情况吗?
在决定是否虚拟化应用程序/服务器时,我应该寻找哪些(其他)指标?