扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
Linux 内核版本
采用哪个版本的 Linux kernel.org 内核(2.2.x、2.4.x 或 2.5.x)取决于基准测试程序;这将在基准测试程序一节做进一步讨论。为了简化管理,所选的 Linux 分发版是 Red Hat 7.1 或 7.2。我们的重点是内核性能,不是分发版的性能:我们用要评估的 kernel.org 内核和补丁替代了 Red Hat 内核。
运行规则
在设置基准测试程序期间,我们开发了运行规则以详细地指出如何安装、配置和运行基准测试程序,以及如何解释结果。这些运行规则的目的如下:
定义度量,使用此度量来测量基准测试程序的性能和可伸缩性(例如,消息/秒)。
确保基准测试程序的结果适合于测量工作负载和内核组件的性能和可伸缩性。
提供文档化的说明,这将使其他人可以重复该性能测试。
定义所收集的数据集,以便可以分析被测系统(System Under Tes,SUT)的性能和可伸缩性,从而确定瓶颈在哪里。
设定目标
针对某个基准测试程序的性能及可伸缩性与具体的 SUT(硬件和软件配置)有关。设定性能和可伸缩性目标需要:
基线测量,用来确定针对基线内核版本的基准测试程序的性能。然后计算基线可伸缩性。
最初的性能分析,用来确定增强性能的可行方向(例如,显示调度程序非常忙的概要文件可能会建议尝试 O(1) 调度程序)。
将基线结果与类似的已公布结果进行比较(例如,在 spec.org 上查找类似 8 路 SMP 上相同 Web 服务器上的 SPECweb99 公开结果)。
如果没有可用的外部公开结果,则可以尝试使用内部结果。还可以尝试与其它操作系统进行比较。给定具有竞争性的数据和基线,然后选择 UP 和 SMP 机器的性能目标。
最后,可以声明应用程序变更了目标。例如,如果知道某个应用程序采用异步 I/O 方式效率不高,则可以通过假定改变 I/O 方法,公布该性能目标。
调优、测量和分析
在做任何测量之前,需要调优硬件和软件配置。调优和测量是一个不断循环的调优和测量过程。它涉及了系统组件(譬如 CPU 利用率和内存使用率)的测量,还可能涉及系统硬件参数、系统资源参数和中间件参数的调整。调优是性能分析的第一步中的环节。没有调优,测量出的结果可能会使人产生误解;即,这些结果可能不会指出内核的限制,而显示出别的问题。
根据运行规则来运行基准测试程序,从而可以根据已定义的性能度量来测量性能和可伸缩性。对给定机器计算 SMP 可伸缩性时,可以选择根据 UP 内核的性能来计算此度量值,也可以选择根据 SMP 内核(其中处理器数目设为 1 ― 一个处理器)的性能来计算它。我们决定使用 UP 测量来计算 SMP 可伸缩性,这样可以更精确地反映 SMP 内核性能的改进。
使用前面确定下来的 Linux 内核版本来测量基线。对于大多数基准测试程序,需要测量 UP 和 SMP 基线。对于少数基准测试程序,只需测量 8 路 SMP 性能,因为收集 UP 性能信息受到时间限制。大多数其它基准测试程序测量在特定时间段内完成的工作量,在 UP 上的测量时间不超过在 8 路 SMP 上的测量时间。
分析 SUT(被测系统)的性能和可伸缩性所需的第一步是理解被测试的基准测试程序和工作负载。最初的性能分析是针对经过调优的系统而作出的。有时,分析揭示了对调优参数的其它修改。
对 SUT 性能和可伸缩性的分析需要一组性能工具。我们的策略是尽可能地使用开放源码社区(Open Source community,OSC)的工具。这使我们可以将分析数据在 OSC 上公布,以说明性能和可伸缩性上的瓶颈。这也使 OSC 中的成员可以用工具重复我们的结果,或者在用该工具对另一个应用程序做完试验之后,能够理解这些结果。如果开发出专门的性能工具来更好地理解某个具体性能瓶颈,则随后通常会将此专门的性能工具在 QSC 上共享。这些专门的性能工具通常是一些简单工具,它们为特定的 Linux 内核组件提供了测试手段。我们所使用的性能工具包括:
/proc 文件系统;
meminfo、slabinfo、中断、网络状态、I/O 状态等;
SGI 的 lockmeter;
来自 SMP 锁分析;
SGI 的内核概要分析器(kernprof);
基于时间的概要分析、基于性能计数器概要分析、仅关于内核空间的带注释的调用图(annotated call graph,ACG);IBM 跟踪工具。
针对用户空间和系统空间的单步(mtrace)并同时基于时间和基于性能计数器的概要分析。
开发专门的性能工具,以进一步理解系统具体某个方面。
例如:
sstat:收集调度程序统计信息。
schedret :确定哪些内核功能因调查空闲时间而阻塞了。
acgparse:后处理 kernprof ACG,复制进/出工具,确定缓冲区的调整、复制大小和复制进/出算法的 CPU 利用率。
然后使用性能分析数据来确定性能和可伸缩性的瓶颈。需要对 SUT 有宽泛的理解,并要对基准测试程序所着重的 Linux 内核组件有更具体的理解,从而理解性能瓶颈存在于何处。还必须理解造成瓶颈的 Linux 内核源代码。此外,我们需要与 LTC Linux 内核开发团队和 OSC(开放源码社区)紧密合作,以便开发补丁来修正瓶颈。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者