CPU是计算机系统中最核心的部件,CPU的性能直接决定了系统的计算能力。任何程序的执行都会消耗CPU资源,所以任何程序几乎都可以作为衡量CPU性能的基准测试工具,不过最好选择CPU密集型的测试程序。有很多的测试程序可用于CPU性能的基准测试,包括SPEC组织的SPEC CPU和SPECjbb系列、UnixBench、SysBench、内核编译、Super PI等。下面对其中的几种进行简单的介绍。

1. SPEC CPU2017

SPEC(Standard Performance Evaluation Corporation)是一个非营利性组织,专注于创建、维护和支持一系列标准化的基准测试程序(benchmark),让这些基准测试程序可以应用于高性能计算机的性能测试。

针对不同的测试重点,SPEC系列的基准测试有不同的工具,如测试CPU的SPEC CPU、测试Java应用的SPECjbb、测试电源管理的SPECpower、测试Web应用的SPECweb、测试数据中心虚拟化服务器整合的SPECvirt_sc等。相对来说,SPEC组织的各种基准测试工具在业界的口碑都比较良好,也具有一定的权威性。

SPEC CPU2017是SPEC CPU系列的最新版本,主页地址:​​http://www.spec.org/cpu2017/​​。SPEC 设计这些套件是为了使用从真实用户应用程序开发的工作负载,在最广泛的实际硬件范围内提供计算密集型性能的比较测量。基准作为源代码提供,需要使用编译器命令以及通过 shell 或命令提示符窗口的其他命令。SPEC CPU 2017 还包括用于测量能耗的可选指标。SPEC CPU 2017 基准测试包包含 43 个基准测试,分为四个套件:

  • SPECspeed ® 2017 Integer 和 SPECspeed ® 2017 Floating Point 套件用于比较计算机完成单个任务的时间。
  • SPECrate ® 2017 Integer 和 SPECrate ® 2017 Floating Point 套件测量单位时间的吞吐量或工作量。
2. SPECjbb2015

SPECjbb2015是SPEC组织的一个用于评估服务器端Java应用性能的基准测试程序,其官方主页为​​https://www.spec.org/jbb2015​​。在其之前还有SPECjbb2013、SPECjbb2005等版本。该基准测试主要测试Java虚拟机(JVM)、JIT编译器、垃圾回收、Java线程等方面,也可对CPU、缓存、内存结构的性能进行度量。SPECjbb2015既是CPU密集型也是内存密集型的基准测试程序,它利用Java应用能够比较真实地反映Java程序在某个系统上的运行性能。

3. UnixBench

UnixBench为类UNIX系统提供了基础的衡量指标,其官方主页为​​http://code.google.com/p/byte-unixbench​​。它并不是专门测试CPU的基准测试,而是测试了系统的许多方面,它的测试结果不仅会受系统的CPU、内存、磁盘等硬件的影响,也会受操作系统、程序库、编译器等软件系统的影响。UnixBench中包含了许多测试用例,如文件复制、管道的吞吐量、上下文切换、进程创建、系统调用、基本的2D和3D图形测试,等等。

4.SysBench

SysBench是一个模块化的、跨平台的、支持多线程的基准测试工具,它主要评估的是系统在模拟的高压力的数据库应用中的性能,其官方主页为​​https://sourceforge.net/projects/sysbench.mirror/​​。其实,SysBench并不是一个完全CPU密集型的基准测试,它主要衡量了CPU调度器、内存分配和访问、文件系统I/O操作、线程创建等多方面的性能。

5. 内核编译

内核编译(kernel build或kernel compile)就是以固定的配置文件对Linux内核代码进行编译,它是Linux开发者社区(特别是内核开发者社区)中最常用的系统性能测试方法,也可以算作一个典型的基准测试。内核编译是CPU密集型,也是内存密集型,而且是磁盘I/O密集型的基准测试。在使用make命令进行编译时可以添加“-j N”参数来使用N进程协助编译,所以它也可以评估系统在多处理器(SMP)系统中多任务并行执行的可扩展性。只要使用相同的内核代码、相同的内核配置、相同的命令进行编译,然后对比编译时间的长短,即可评价系统之间的性能差异。

6. Super PI

Super PI 是一个单线程基准测试,可将 pi 计算为特定位数。它使用 Gauss-Legendre 算法,是 Yasumasa Kanada 在 1995 年用于将 pi 计算为 2的32次幂程序的 Windows 端口。最新为2022年5月17日发布的2.1版本下载链接​​https://www.superpi.net/Download/​​。

在实际生产环境中,运行实际的CPU密集型程序(如可以执行MapReduce的Hadoop)当然是测试CPU性能较好的方法。