我在一台新的 IBM Power8 mod. 8286-41a 上安装了 Ubuntu Linux 14.04.5。我的目标是在这个分区上使用应用程序 SugarCRM CE 6.5。我无法安装 ubuntu 16,因为与 PHP 5.6 存在兼容性问题。目前,我在装有 ubuntu 14.4.1 的 vmware 虚拟机上使用 sugarcrm。我原本希望 ppc64el 平台上的性能有所提升。但我发现,事实上,这些程序比 amd64 机器慢得多。两个系统上的 lamp 版本相同(apache 2.4.7、mysql 5.6.33、php 5.5.9)。有关这两台机器的信息,请参阅附图。有什么建议吗? ppc64el 与 amd64 配置
答案1
tl;dr:您恰好使用的是大量 ppc64el 和 POWER8 优化之前的版本,因此在不升级一个(或多个)组件的情况下您可以实现的性能将受到限制。
在 Ubuntu 14.04 发布时,我们仔细研究了整个 LAMP 堆栈,仔细研究了 POWER 上的性能。我们发现有些地方存在不足,因此我们着手修复它们。不幸的是,由于 Ubuntu 14.04 比第一批 POWER8 系统稍早发布,因此在 Ubuntu 14.04 发布之前没有足够的时间进行优化并将其纳入上游。
直到 2014 年 5 月/6 月,我才有了一套适用于 POWER8 的初始(相对)稳定的 MySQL 5.6 补丁集。这距离 Ubuntu 14.04 发布已经过去了几个月。这些初始补丁并不太注重性能(尽管 Ubuntu 确实将它们纳入了发行版,因为 ppc64el 是它们支持的平台)。
为了提高性能,我们对一些事情进行了严格的限制,其中许多问题在 MySQL 5.7 中得到了修复。2014 年 6 月,我有一个非常概念验证的 MySQL 5.7 端口,在 POWER8 上每秒执行 100 万次查询。许多 MySQL 问题都与互斥争用有关,因此(奇怪的是)它可以与旧版 MySQL 一起使用提升通过将 MySQL 绑定到更少的 CPU 核心来提高性能。
我们还有其他瓶颈需要解决,特别是 CRC32 性能(如果您配置它,InnoDB 会使用它作为磁盘校验和),其中出现了针对 POWER8 优化的 CRC32,它快 41 倍比未优化版本更高效。本工作与 MariaDB 10.1 集成。
为了让现代 MariaDB 在 POWER8 上运行良好,我们做了很多工作。确实如此,所以如果切换到 MariaDB 是一种选择,这将有助于提高数据库端性能。此外,MySQL 的各种 _instance 变量可能需要增加 - 您的 POWER8 系统可能有一个很多比 x86 系统具有更多的 CPU 核心和线程,并且默认值不会那么好。
至于 PHP,我参与优化工作的程度(少了很多)。基本上,较新的 PHP 速度更快,通常快很多。这是由于从删除一些旧的 powerpc“优化”(自定义汇编并不总是比编译器生成的更快)到为 php 贡献代码,再到(我认为)改进 GCC 等各种原因。
我认为我的同事 Daniel Axtens 将会回复一些 PHP 细节。
回到您的具体配置,您是否为 POWER8 上的 VM 分配了 1 个 CPU 核心(具有 8 个线程)或仅分配了 1 个 CPU 核心(具有 1 个线程)?虚拟化在 POWER 上的工作方式是,您也可以为客户机提供线程,因为整个核心同时进入客户机,并且 SMT4 通常比 SMT1 性能提升很大(检查您的 VM 配置,您可以使用客户机中的 ppc64_cpu 实用程序动态更改线程模式,但不能超过分配给客户的线程数)。
我发表过大量关于 POWER8 MySQL/MariaDB 工作的博客:https://www.flamingspork.com/blog(查看 mysql/power8 标签...askubuntu 不允许我发布太多链接)
答案2
您的问题很难回答——了解哪些部分较慢、如何测量速度等会非常有帮助。
但这里有几点建议:
首先,你需要升级到 16.04。
您说您这样做是因为 PHP 问题。我猜您的意思是 SugarCRM 依赖于 PHP5,而 16.04 只附带 PHP7。这很遗憾:php7 是很多在 Intel 和 Power 上都比 php5 快(大多数情况下是 2 倍左右)。但这并不是世界末日。您可以迁移到 16.04 并使用 HHVM,它与 PHP5 兼容,而且通常要快得多。已经有很多出色的工作让它在 Power 上很好地运行(其中一些我参与过)。我认为现在大部分工作都在上游,但有一个开发仓库这应该更加最新。您必须从源代码编译它,但说明很好。
你真的需要升级 MySQL/MariaDB,无论是从稳定性还是性能的角度来看。14.04 附带的任何东西都是馊主意。
正如 Stewart 提到的,很多在 14.04 和 16.04 之间进行的修复。这些芯片与英特尔芯片不同:为它们调优应用程序的方式不同,并且依赖于我们多年来所做的工作。这些修复包括内核修复、功率扩展和编译器改进,以生成更好的代码。
其次,我不确定您在 SugarCRM 上测试的工作负载是什么。IBM 有一个(现在有点过时了)白皮书在 Power 上运行 SugarCRM 表明它比 Intel 系统维持了更高的吞吐量。您需要清楚了解您感兴趣的基准。
第三,你需要检查你的系统设置。以下是一些常见的:
Apache 未设置为使用 pthread 互斥锁而不是文件互斥锁(已在较新的 Ubuntu 版本中修复)
PHP 和 Apache 设置的线程池对于 Power 系统来说太小了。
看起来您正在比较 P8 上的 1 个内核和 x86 上的 4 个内核。P8 既有内核也有硬件线程(类似超线程,但不是每个内核 2 个硬件线程,而是最多 8 个),因此这可能会有点令人困惑。您应该:
- 为您提供 Power VM 4 个核心。如果可能,请确保它们在您的虚拟机管理程序中静态分配(例如,核心专用于客户机)。
- 将这 4 个核心设置为 SMT-4 模式,而不是 SMT-8 模式;这往往会给脚本语言带来相当大的提升。
最后,如果您在购买机器时可以联系到任何 IBM 支持或销售人员,请与他们联系;他们可能会找到一些专家。
答案3
由于您正在进行性能测量,因此请使用专用处理器从 HMC 创建分区,并根据需要使用 4 个核心(通过使用专用处理器,您将把 IBM i 工作负载与此测试工作负载分开)。如前所述,线程数与 Power 和 x86 不同,因此您必须确保您拥有正确数量的内核,而不是线程(即使按照建议设置 SMT-4,Power 上每个内核的线程数仍将是其两倍)。