我所在的公司拥有大量旧版 LAMP Web 应用程序,我们正尝试将硬件从约 250 台物理服务器更新为约 40 台带虚拟化功能的新服务器。我们收到了两份来自供应商的报价 - 一份建议使用英特尔处理器,另一份建议使用 AMD 处理器。
我喜欢 AMD 高核心数的一点是,我们可以将核心专用于虚拟机,这意味着应用程序因峰值而相互干扰的可能性更低,这在某种程度上对我来说比峰值性能更重要。
我想到其他的考虑因素包括:
- 功耗可能有所不同(在我们的例子中不是问题。)
- CPU 指令CRC32(SSE 4.2)将不受支持(编辑:MySQL 5.6 似乎支持 SSE4.2。不确定 Apache 是否支持)
- MySQL 在~16/~32 核之后无法完美扩展(我愿意接受这种权衡。)
我还忽略了哪些考虑因素?
(版主注意:我知道此主题——我对这个问题的看法略有不同。)
编辑:假设任务是异常并行的(网络服务器),并且我不关心数据库服务器不是那么并行。
答案1
关于 AMD 最新处理器 Bulldozer 的报道很多。该处理器的“服务器”版本尚未推出,但桌面版本可以很好地反映出新产品的一些潜在问题。
至于当前一代的服务器部分,总的来说,这个建议在通用层面上相当不错。Web 服务和(大多数)数据库工作主要基于整数,而 AMD CPU 在整数计算方面表现良好。此外,Web 服务(一般来说)是一个可以高度并行化的问题。AMD 专注于“多核可加快工作速度”,而 LAMP(同样,一般来说)往往对此反应良好。
您确实需要注意的一个方面是应用程序中的单线程依赖性。AMD 部件的时钟扩展性不如 Intel 部件,因此从根本上说是单线程的进程会比在更快的 CPU 部件上更快地成为整个系统的瓶颈。只有您知道这是否适用于您。某些数据库操作可能更适合使用更快的 Intel 处理器,但核心数较少,因此那些少数胖线程确实会发出尖叫声。
应用程序代码在这里也很重要。一些长时间运行的 Web 服务器进程可能会占用大量的单线程时间,并且也需要更快的时钟。这可能可以通过重写长时间运行进程的需求来解决,但在此之前,更快的时钟会更好。
但一般来说,对于大量 Web 服务器虚拟机类型的工作负载,这些 12 核部件可以扩展得相当远。如果您确实遇到一些单线程问题,那么使用时钟频率更高的 8 核部件将是一个可以接受的折衷方案。
答案2
答案3
您应该考虑不同的 RAM 架构可能带来的性能差异,以及这是否是您的组织的决定性因素。
另外需要注意的是,虽然您可能不关心峰值性能,但如果您的虚拟机每个都没有多个核心和/或其中的特定任务是单线程的,那么英特尔的每核心性能优势就比 AMD 大得多,即使总核心数较少。
答案4
还有一件事要说,如果你使用任何类型的虚拟化,请注意将客户机从 Intel 迁移到 AMD 可能是一个真正的问题,而且跨品牌集群根本不可能。坚持每个集群使用一个平台,并接受从一个平台跳转到另一个平台很困难的事实。