内容


IBM AIX 与 Linux on Power 之间的处理器利用率差异 – 同一基准的比较

Comments

简介

采用相同的硬件(同一基准比较)和工作负载配置,Linux on Power OS 报告的处理器利用率与 AIX on Power 报告的处理器利用率相比少得多。本文将解释为什么我们无法比较两个操作系统之间的利用率,为什么它们之间在处理器利用率上存在差异,如何从每个平台上获得利用率指标,以及该计算背后的意图和导致这些差异的 OS 级因素。

备注:本文不会介绍两个操作系统之间的任何优缺点。只会介绍为什么 IBM Power 平台上的两个操作系统之间存在处理器利用率差异。

案例分析

本案例分析是在一个运行于 IBM PowerVM® 虚拟机管理程序上的基于 IBM POWER7® 处理器的系统上完成的,还借助了 IBM Power 硬件上的网络性能分析中使用的工作负载(类似于开源 Netperf)。本案例分析对比了相同硬件和软件环境中的 AIX 7.1 和 Red Hat Enterprise Linux (RHEL) 7.0 上的处理器利用率。

系统详细信息:

  • AIX:7.1
  • Linux:Red Hat Enterprise Linux Server 7.0 (BE)
  • 处理器:POWER7
  • 虚拟机管理程序:PowerVM
  • 核心数:8 (SMT4)
  • 型号:IBM,9179-MHC

备注:AIX 和 RHEL7.0 的逻辑分区 (LPAR) 都在同一个 Central Electronics Complex (CEC) 上。

在一个基于八核 POWER7 处理器的系统上,使用完全相同的硬件配置,比如内存、网络适配器、工作负载等,工作负载模拟了服务器和客户端之间的 80 个并行套接字连接,我们特意使用此工作负载,以便不会将所有 8 个核心 100% 的处理器时间都用在重新创建该场景上。AIX 中报告的处理器利用率为 24%,Linux on Power (RHEL 7.0) 上报告的处理器利用率约为 9%,AIX 和 Linux 在相同的工作负载和硬件下存在 1/3 的处理器利用率差异。

备注:本分析基于默认安装上的原始性能数据,未经任何调优,例如手动将工作负载线程绑定到不同核心的不同逻辑处理器等。另外,这些工作负载通常不会 100% 地利用所有可用的核心。

请参阅在 AIX 和 Linux 系统上生成的相同网络负载的以下网络工作负载结果。基于 POWER7 处理器的系统上有 4 个虚拟分区,还有 2 个 AIX LPAR 和 2 个 Linux LPAR。测试是在同一主机上的 2 个 AIX 分区和 2 个 Linux 分区上执行的。

AIX 上的工作负载结果

图 1. AIX 上的处理器利用率结果

网络工作负载是在固定持续时间内对 80 个套接字连接运行标准的 TCP Round Robin (RR) 测试,这些连接在两个分区之间传输 1 字节、4 字节和 8 字节的消息。我们从图 1 中可以观察到,对于该工作负载,服务器 (c700c02) 报告处理器利用率为 24%,客户端 (c700c04) 报告为 28%。

图 2. 针对 AIX 上的核心间线程调度的 SAR 输出

图 2 是在工作负载启动后不久采集的,演示了 AIX 默认调度程序如何在最初阶段启动的核心上分布线程。线程均匀地分散在核心上。

Linux on Power 上的工作负载结果

图 3. Linux on Power 处理器利用率结果

图 3 显示了 1 字节、2 字节和 4 字节消息传输大小的相同工作负载配置的 Linux on Power 结果。服务器 (c700c01) 报告处理器利用率为 10%,客户端 (c700c03) 报告为 7%。

Linux on Power 报告 IBM Power 平台上的 AIX 的处理器利用率接近 1/3。

图 4. 针对 Linux on Power 上的核心间线程调度的 SAR 输出

从图 4 中可以看出,默认的 Linux 调度程序(从 7.0 开始)从较低的核心开始调度线程(前 8 个可用的硬件线程),并逐步将负载分散在核心中。

AIX 上的处理器利用率

AIX 上的处理器利用率报告是从系统调用 perfstat_cpu_util( ) 中获取的,该调用包含在 libperfstat.a 库中。报告的处理器利用率基于 PURR 和 SPURR 计算结果。

图 5. perfstat 库
图 6. IBM POWER8 中的 SMT 性能

图 6 中所示的同时多线程 (SMT) 性能特征是从 IBM POWER8™ 规范中获得的。此图显示,SMT8 提供的性能是 POWER8 上的单线程的 2.2 倍。所以,为了设置单线程与 SMT8 或单线程与 SMT4(对于 SMP 多线程系统中的 IBM POWER7)之间的最大性能预期,我们引入了基于 PURR 和 SPURR 的处理器利用率。与单线程模式相比,这有助于在 SMT8 模式中实现更好的资本开支规划和实际性能预期。

示例 1:我们考虑一个单线程应用程序,在一个 IBM POWER7 SMT4 系统上运行它。基于使用的核心比例 (physc) 值及 PURR 和 SPURR 计算,运行应用程序的核心表现出的核心利用率约为 63% 到 65%。有关为什么核心利用率为 65% 的更多细节,请参阅 理解 AIX 上的 CPU 利用率 文章。

图 7. 核心 0 单线程性能

另一个导致利用率差异的因素是 OS 调度策略。AIX 有一个名为 CPU Folding 的特性,该特性可以帮助应用程序线程均匀地分散在 SMP 系统中的核心上。

示例 2:我们考虑一个使用 4 个线程完成其工作的多线程应用程序。例如,如果此应用程序在一个基于四核 POWER7 处理器的系统上运行,那么基于 AIX 默认调度程序策略,它会将负载均匀地分布在所有可用的核心上,在 4 个不同的核心中调度 4 个线程,如图 8 所示。基于对上面的 PURR 和 SPURR 的理解,4 个核心中的每个核心的 physc 值将为 63% 到 65%。总体系统处理器利用率将为 63% 到 65%。

图 8. AIX 上的多线程应用程序调度

Linux on Power 上的处理器利用率

Linux on Power 中报告的处理器利用率主要基于 /proc/stat 值,这些值基于时间。Linux on Power 上仍没有报告基于 PURR 或 SPURR 的计算。

现在考虑之前使用的示例 1,当我们在 Linux OS (RHEL) 上运行该应用程序时,运行单线程应用程序的核心报告利用率为 25%,因为它启用了 SMT4,而 AIX OS 上报告的利用率为 63% 到 65%。

我们看看示例 2,让多线程应用程序在 Linux on Power 上运行。核心 0 显示了 100% 的利用率,因为基于 LInux 内核 (RHEL) 的 Completely Fair Queuing (CFQ) 调度程序(截至 6.0 或从 RHEL 7.0 开始)将首先尝试在前 8 个默认可用的硬件线程上调度所有工作,而不执行任何调优。运行时如图 9 所示。因为该应用程序是 4 线程的,所以它将在核心 0 中完成其任务。

现在,核心 0 的处理器总利用率为 100%,其他所有核心(核心 1 到核心 3)的利用率为 0%。因此,[(1%4)*100]= 25%,因为它是一个四核系统。

图 9. Linux on Power 上的多线程应用程序调度

图 9 描绘了 Linux on Power 在案例分析期间的默认线程调度行为。

结束语

在多核 SMT 系统中的相同工作负载和 Power 硬件配置下,AIX 与 Linux on Power 之间的系统级处理器总利用率无法比较,因为计算方法完全不同。Linux on Power 上报告的系统级处理器总利用率源自 /proc/stat,后者完全基于时间。但是,AIX 基于 PURR 和 SPURR,它更加注重资本开支规划,而且还能预测拥有 SMP 和 SMT 环境的最新一代处理器的更真实、更准确的处理器利用率。POWER8 上的单线程和 SMT8 之间的实际性能差异为 2.2 倍。在基于时间的计算中,对于单线程项目的处理器利用率报告,每个 SMT 线程和执行单元像是彼此独立的。这让人感觉用户可以在 SMT8 模式下实现 8 倍的性能,但实际上并非如此。计算中没有考虑到真实的 2.2 倍的处理器利用率系数,在与 AIX on Power 平台进行比较时,对于某些未利用 100% 的核心的工作负载,这个 2.2 倍的处理器利用率系数是导致 Linux on Power 系统上报告的处理器利用率较低的原因之一。


相关主题


评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Linux
ArticleID=1023707
ArticleTitle=IBM AIX 与 Linux on Power 之间的处理器利用率差异 – 同一基准的比较
publish-date=12092015