Benchmark学习笔记

目录

Benchmark简介

为什么要进行基准测试

Benchmark的类型和方法

微基准测试

模拟

回放

方法

实例

一个简单的代码基准测试示例

了解到的进行基准测试的个别工具

总结

参考


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博客

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值