数据库服务器在 2 个 16 核 CPU 上运行时性能会更好还是在 4 个 8 核 CPU 上运行时性能会更好?

数据库服务器在 2 个 16 核 CPU 上运行时性能会更好还是在 4 个 8 核 CPU 上运行时性能会更好?

我拥有的:

  • 在线金融应用程序(ASP.NET、C#)
  • 高峰期我们有 5000+ 个同时在线用户
  • 后端在 Oracle 11g 上运行(活动服务器 + 使用 Active Data Guard 的备用服务器)。高峰期 - 4K-5K 个数据库会话
  • Oracle 安装在 Linux 5.8 上(Oracle 牢不可破的版本)
  • 数据库大小:7TB
  • 磁盘存储:NetApp(连接10GB网络连接)

我想更换旧服务器(IT 将购买 HP 刀片 BL685C)。服务器将配备 256GB 内存。

我需要你的帮助来弄清楚如何处理 CPU 和核心。选项:

  1. 2 个 CPU (2.3 GHz),每个有 16 个核心
  2. 4 个 CPU (3.0 GHz),每个有 8 个核心

问题:我应该选哪一个?

PS 明年,我们将从 Oracle 迁移到 SQL Server。我希望您推荐的任何选项都适用于这两个平台。

答案1

您需要考虑两个因素:

  1. 总聚合性能:这是衡量机箱上所有核心的总计算能力的指标。您可以通过查看Passmark CPU 评级对于 CPU 并乘以系统中的物理 CPU 数量。

  2. 单线程性能:这是衡量 CPU 可以为单个线程提供多少计算能力的指标。您可以通过查看Passmark CPU 评级乘以 CPU 的核数。(对于超线程 CPU,乘以物理核数的 1.25 倍。)

如果一台机器在这两个指标上都胜出,那么它可能就是您的最佳选择。如果在这两个指标上各占一半,那么最终结果将取决于您的软件如何有效地利用多个内核。

请注意,内存性能也很重要。更多内存通道通常意味着更快的内存访问速度。当然,内存总量也很重要。不同的 CPU 通常意味着不同的主板,这可能意味着不同的内存性能。

答案2

由于 BogoMIPSes 大致相等,我认为您应该在两种情况下估算整体 L1/L2 缓存容量 - 最大的即为赢家。

答案3

您还需要了解 NUMA 配置。如果您只有一个 NUMA 节点或多个 NUMA 节点。我知道 SQL Server 是 NUMA 感知的,我假设 Oracle 也是。这会对数据库性能产生很大影响,因为访问同一 NUMA 节点中的内存比访问另一个 NUMA 节点中的内存要快得多。

答案4

如果 CPU 属于同一级别,那么您可以比较速度。仅凭这一点,您就会选择速度更快的处理器 (4x8x3GHz)。

数据库的使用情况也可能是一个因素。这与数据处理的“形状”有关。是许多较小的计算还是较少的较大计算?根据 mrdenny 的说法,并且由于它是一个事务数据库(对吗?因为它是财务数据库?),我认为最大化共享相同缓存/NUMA 节点的 CPU 核心数量并不那么重要,因为多个核心可能正在处理不同的任务,而缓存不会像在数据仓库/数据挖掘应用程序中那样发挥重要作用。在事务情况下,拥有 4 个 NUMA 节点实际上可以提高内存访问的吞吐量,而 2 个 NUMA 节点则不行,因为较小的线程可以更轻松地优化以访问其本地 NUMA 节点上的内存。此外,如果处理器是同一类处理器,并且 4x8 速度更快,那么非本地内存访问的任何可能的性能下降都可能通过提高性能/核心来弥补。

如果 CPU 不是同一类,那么您确实需要查看一些基准来了解“较慢”的处理器是否更高效。

另外,还要考虑未来可能的扩展。在 4 插槽系统中,您会选择 2 个还是 4 个处理器?如果您认为对处理能力的需求可能会增加,那么如果系统中有 4 个插槽,那么拥有 2 个处理器将给您留下扩展到另外 2 个处理器的空间。

相关内容