目录
Benchmark简介
Benchmark(基准测试)是用于衡量计算机、系统、软件或硬件等性能的标准化测试工具或测试方法。
进行基准测试,我们需要明确测试目标、选择合适的测试工具和测试环境、根据测试目标选择合适的测试指标,运行测试并收集数据,最后分析测试结果并做出评估。在做基准测试分析时,也要特别明确限制因素和思考可能的干扰。
Benchmark可以应用在多个领域,比如计算机硬件(处理器、显卡、存储设备)、操作系统、数据库系统、网络设备等。常见的基准测试工具包括Geekbench、PassMark、SPEC等,这些工具提供了一系列标准化的测试项目,可以用来评估设备的性能。
为什么要进行基准测试
“在可控的状态下做性能基准测试,对不同的选择做比较,让我们可以在生产环境遇到性能极限之前对性能极限做了解”,进行基准测试,有以下但不仅限于以下意义:
系统设计:对比不同的系统、系统组件或应用程序,了解可选项间的性价比,有利于帮助进行采购决策。
调优:测试可调参数及配置选项,以确定哪些值得针对生产工作负载做进一步研究。
开发:产品开发过程中,通过基准测试将产品推至极限,为提高产品性能定位开发努力的重点。
容量规划:为容量规划确定系统和应用程序的极限。
排错:确认组件是否仍以最高的性能运行。
Benchmark的类型和方法
以下是基准测试类型的关系图:
微基准测试
微基准测试利用人造的工作负载对某类特定的操作做测试,它的优势是简单。比如,执行一种类型文件系统I/O、数据库查询、CPU指令,或者系统调用。由于微基准测试是特意人为的,不会轻易地与真实工作负载模拟相混淆,所以在不同系统上执行微基准测试一般都很快。需要注意的是,能用的微基准测试结果,要能够映射目标工作负载。
模拟
有时也称宏基准测试,基于生产环境的工作负载特征来决定所要模拟的特征,模拟客户应用程序的工作负载。模拟所生成的结果与客户在真实世界所执行的工作负载是相似的,相较于微基准测试,模拟能覆盖复杂系统相互作用的影响。但模拟忽略了变化,因为客户的使用模拟会因时间的推移而变化,所以要求模拟也随之更新和调整以保证两者的关联性。
回放
试图回放目标的跟踪日志,用真实捕捉到的客户机的操作来测试性能。这相当于在生产环境做测试,但当服务器的特征和所响应的延时发生变化时,所捕捉到的客户工作负载很可能不能反映出这些差异,与模拟客户工作负载相比,可能并不会更好。
方法
好的基准测试具有以下特质:
实例
一个简单的代码基准测试示例
以下代码使用了Google的C++基准测试框架(Google Benchmark),Google Benchmark是一个用于C的基准测试框架,它提供了简单的API和丰富的功能,可以用于评估函数或代码段的性能。
#include <benchmark/benchmark.h>//引入Google Benchmark库的头文件,提供进行基准测试所需的函数和类。
static void BM_SomeFunction(benchmark::State& state) {//用于基准测试的静态函数,接受一个benchmark::State对象作为参数
// Perform setup here
for (auto _ : state) {//基准测试循环,在基准测试期间多次运行,以便测量执行时间
// This code gets timed
SomeFunction();
}
}
// Register the function as a benchmark
BENCHMARK(BM_SomeFunction);
// Run the benchmark
BENCHMARK_MAIN();//定义main函数并运行所有已注册的基准测试
了解到的进行基准测试的个别工具
sysbench:是一个基于LuaJIT的可脚本多线程基准测试工具。它最常用于数据库基准测试,但也可用于创建不涉及数据库服务器的任意复杂工作负载。
Geekbench:是一个跨平台的基准测试工具,可用于评估处理器和内存的性能。它提供了单核和多核性能测试,可以在不同操作系统上运行。它的优点是易于使用,提供了直观的性能评估结果。
Bonnie:是一个用于进行文件系统和磁盘性能测试的工具。它的主要功能是评估文件系统的读写性能、随机访问性能以及文件创建和删除的性能。通过对文件系统和磁盘的性能进行测试,Bonnie可以帮助用户了解系统的磁盘I/O性能,从而进行性能优化或选择合适的存储方案。
总结
通过这次的自主学习,我了解了benchmark的概念、核心要点、个别工具,对benchmark有了初步认识。其次,我认识到了基准测试的重要和复杂,通过阅读《性能之巅——洞悉系统、企业与云计算》,我基本了解了执行基准测试的流程和“基准测试之罪”。
参考
[1]Gregg, B. (2013). Systems Performance: Enterprise and the Cloud. Prentice Hall.
[2]实例取自github网站:https://github.com/google/benchmark
[3]开源工具Sysbench:简单而强大的基准测试开源工具sysbench详解 - 知乎 (zhihu.com)
[4]Bonnie:测试工具Bonnie++的使用-CSDN博客