1

天,

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

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

我们已经通过回滚到 32 位版本然后再次前滚到 64 位版本来确认这一观察结果。由于这是一个主要的网络农场,我们有一个广泛的服务器监控基础设施,其中包含用于各种测量的 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 执行的请求更少,内存占用略高。差异在误差范围内,仅在接近满载时才明显

我读过“如何开发以利用 64 位系统? ”这个问题,那里有一些有趣的信息。这似乎主要是一个有关的问题

  1. 寻址超出 32 位地址空间 4GB 限制的内存,
  2. 64位值的操作。

在我看来,我们还期望 SSL 性能有所提高。

关于为什么我们的表现没有提高的任何建议?

或者关于看什么的建议?

我们真的应该看到性能提升吗?

4

2 回答 2

1

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

于 2010-02-03T11:59:18.637 回答
1

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

一般来说,如果有足够的内存来解决这个问题,我希望 CPU 绑定问题在 64 位应用程序中表现得更好。然而,Web 服务通常是一个 I/O 绑定问题,并且无济于事(如果机器处于额外的内存压力下,可能会受到阻碍)。

您可能想要分析您的机器(Linux 上的 oprofile,不确定等效的 Solaris 工具是什么)并查看 CPU 热点实际在哪里。

于 2010-02-04T11:44:26.700 回答