Skip to content

01 公平竞技的基础 - Benchmark

什么是 BenchMark

  • 中文译为基准测试
  • 是一个以相对客观的方式衡量计算机硬件或软件性能的基准工具
  • 用于比较不同计算机硬件或软件在相同或不同条件下的性能表现
  • 鲁大师和安兔兔等跑分软件可以认为是 BenchMark

BenchMark 与评价维度

同一个硬件/软件有不同维度的评价体系:(例:压缩算法)

  • 压缩率:压缩后数据量与原始数据量比例;
  • 压缩速度:对原始数据进行压缩的耗时;
  • 解压缩时间:对压缩后数据进行恢复的耗时;
  • 压缩资源占用:压缩过程中占用的 CPU 和内存资源;
  • 适用场景:是否适用于文本、图像、视频等不同场景;
  • 平台兼容性:能否在不同的平台,硬件设备上;

生活中的 BenchMark

例:在不同城市的小明/小刚都说自己跑步很厉害,谁更厉害呢? => BenchMark 需求

  • 在各自城市找一条 400 米标准跑道,以及一个专业计时人员,约定 3000 米长跑时间为评价指标 => BenchMark 及评价维度确定
  • 挑一个晴朗的天气,换舒服的跑鞋 => 性能优化,允许
  • 抄近道,贿赂计时人员 => 篡改 BenchMark,不允许
  • 每次长跑耗时不同 => 性能测试的波动,一般取多次平均值

BenchMark 与性能体验

  • BenchMark 测试分数高,一定意味着用户体验更优么?不一定
  • 考 95 分的学生不一定比考 92 分的学生更懂这门课的内容,但一般可认为比考 30 分的学生更懂
  • 跑分不等于体验,但跑分是体验的基础

常见 Linux Benchmark 工具

CPU 性能测试工具

  • sysbench: 一款广泛使用的多用途基准测试工具,可以测试 CPU、多线程计算性能、内存、磁盘 I/O 等。它支持不同的负载测试模式,例如 prime(质数计算)测试和线程测试。
  • stress: 一个用于生成 CPU、内存、I/O 和其他系统负载的工具,常用于压力测试和稳定性测试。
  • Geekbench: 提供跨平台的 CPU 和 GPU 性能测试,包含多种负载模拟实际使用情况。

内存性能测试工具

  • memtester: 用于测试系统内存的工具,能够发现内存硬件的问题。它可以在运行时对物理内存进行检查,寻找错误。
  • RAMspeed: 一个内存带宽和延迟测试工具,可以测量读、写、复制和可加速(e.g. SIMD)操作的速度。

磁盘 I/O 性能测试工具

  • hdparm: 主要用于测量硬盘的读取速度,适合测试存储设备的顺序读性能。
  • dd: 一个广泛使用的工具,可以复制和转换文件,同时也可以用于简单的磁盘 I/O 性能测试。例如,可以通过写入一个大文件来测试写入速度。
  • fio (Flexible I/O Tester): 一个灵活且功能强大的 I/O 性能测试工具,支持不同的 I/O 模式(顺序、随机)和访问模式(读、写、混合)。
  • ioping: 类似于网络中的 ping 工具,但用于测量存储设备的 I/O 延迟。

网络性能测试工具

  • iperf: 用于测量网络带宽的工具,支持 TCP 和 UDP 协议。它可以用于测试不同主机之间的网络连接速度和质量。
  • netperf: 类似于 iperf,用于测试网络的吞吐量、延迟和其他性能指标。
  • ping: 测试网络延迟的基本工具,测量从发送一个数据包到接收回包的时间。

图形性能测试工具

  • glmark2: 一个开源的 OpenGL 基准测试工具,可以用来测试 GPU 的 OpenGL 性能。
  • Unigine Heaven: 一款 3D 图形基准测试工具,提供高质量的 3D 渲染场景,用于测量 GPU 的渲染性能。

系统综合性能测试工具

  • Phoronix Test Suite: 一个功能强大且灵活的开源基准测试平台,支持数百种不同的测试。可以测试 CPU、GPU、内存、磁盘和其他系统组件的性能。

其他工具

  • LMbench: 提供一组简单而综合的基准测试,能够测试操作系统内核和硬件的性能,如上下文切换、管道和网络延迟等。
  • UnixBench: 一个经典的 Unix 系统基准测试工具,适用于比较不同 Unix/Linux 系统的性能。

常用一键脚本