为什么我们的64位Apache版本的CPU使用率没有任何改善?

时间:2010-02-03 11:52:19

标签: performance 32bit-64bit

天儿真好,

我们构建了一个64位版本的Apache 2.2.14,并将其部署在运行Sol10的各种Sun服务器上。用于测试的服务器类型是Sun T2000(32GB内存),5120(8GB)和5240(16GB)。

对于其中的每一个,我们都注意到CPU使用率没有明显改善,事实上服务器的运行速度比运行32位版本时略高。

我们已经通过回滚到32位版本然后再次向前滚动到64位版本来证实了这一观察结果。由于这是一个主要的Web场,我们拥有广泛的服务器监控基础架构,其中包含用于各种测量的RRD图。图表可用于每日,每周,每月和每年的时间范围。在这些图表中,CPU使用率的微小步骤变化非常明显,

我们服务器上的命中率在一天内是循环的,但保持相当稳定,每个服务器的峰值大约为2k /秒。儿童数量也是每天循环的,每台服务器的数量在1k到3k之间。由于所有服务器都位于负载平衡层后面,因此步骤更改不能归因于命中率或子项的变化。

我们使用以下编译标志使用Sunstudio 12.1附带的CC编译器。 链接标志类似,但没有-D定义。

export CFLAGS="-xopenmp=parallel -xalias_level=basic \
    -xtarget=ultraT1 -m64 -xarch=sparc -xbuiltin=%all \
    -xdepend -xmemalign=8s -xO5 -xprefetch=auto,explicit" \
    -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64

我们在Apache配置中没有做任何异常,而且它非常香草。

编辑:确定了性能,查看CPU与请求与内存(按此顺序)。 64位的CPU请求较少,内存占用较少。差异在误差范围内,只有在接近满载

时才能显着

我已经读过“How to develop to take advantage of 64 bit systems?”这个问题,并且有一些有趣的信息。这似乎主要是与

有关的问题
  1. 寻址超出32位地址空间4GB限制的内存,
  2. 操纵64位值。
  3. 在我看来,我们也期望SSL性能有所提升。

    有关为何我们的表现没有改善的任何建议?

    或者建议看什么?

    我们实际上是否应该看到性能提升?

2 个答案:

答案 0 :(得分:1)

您使用64位优化算法吗?您的SSL库是否针对64位进行了优化,并且针对该架构编译了ssl库?只编译64位的32位代码不会产生太大的影响,因为大多数32位代码甚至不使用可优化的功能。

答案 1 :(得分:1)

除了处理大量内存外,x86_64与其32位表兄弟相比的另一个优点是更丰富的寄存器。这应该意味着CPU繁重的代码可以更高效,因为它必须在相对较慢的主内存中维持较少的状态。然而,这经常被增加的内存使用量所抵消,因为所有指针现在都占用了两倍的空间。

通常考虑到足够的内存来解决这个问题,我希望CPU绑定问题能够更好地作为64位应用程序执行。然而,Web服务通常是一个I / O限制问题,并且不会有帮助(如果机器受到额外的内存压力,可能会受到阻碍)。

你可能想要描述一下你的机器(Linux上的oprofile,不确定等效的Solaris工具是什么),看看CPU热点究竟在哪里。