基准测试

出自 ArchWiki

基准测试是通过统一的程序来测量性能,并将结果与其他系统的结果或广泛接受的标准进行比较的行为。这种评估系统性能的统一方法可以帮助回答如下问题:

  • 系统是否按预期运行?
  • 应该使用哪个驱动版本才能获得最佳性能?
  • 系统是否能够执行任务 x?

许多工具可以用来确定系统性能,下面列出了可用的工具。

独立工具

UnixBench

安装 unixbenchAUR,要运行基准测试,请运行 ubench。

参见

interbench

interbench 是一个旨在测试 Linux 交互性的应用程序。它旨在衡量 Linux 内核设计更改或系统配置更改(如 CPU、I/O 调度器和文件系统更改和选项)的影响。

提示:通过仔细的基准测试,可以比较不同的硬件。

interbench 在 AUR 中可用: interbenchAUR

参见

fio

fio (灵活的 I/O 测试器)是一个实用程序,可以模拟各种工作负载,例如多个线程使用异步 I/O 发出读取请求。Fio 产生许多线程或进程,执行用户指定的特定类型的 I/O 操作。文档

使用示例

# fio --filename=/mnt/test.fio --size=8GB --direct=1 --rw=randrw --bs=4k --ioengine=libaio --iodepth=256 --runtime=120 --numjobs=4 --time_based --group_reporting --name=iops-test-job --eta-newline=1

ttcp

ttcp(测试 TCP)测量任何网络连接上的点对点带宽。必须在要确定带宽的两个节点上都提供该程序。

各种 ttcp 版本可以在 AUR 中找到

iperf

iperf 是一个易于使用的点对点带宽测试工具,可以使用 TCP 或 UDP。它具有格式良好的输出和一个并行测试模式。

iperf 可以安装,或者可以使用 iperf3 获得不同版本的 iperf。

time

time(1) 命令提供关于运行命令的计时统计信息,方法是显示调用和终止之间经过的时间。 time 包含 time 命令,某些 shell 提供 time 作为内置命令。

$ time tar -zxvf archive.tar.gz

hdparm

存储介质可以使用 hdparm (hdparm) 进行基准测试。 将 hdparm 与 -Tt 开关一起使用,可以定时顺序读取。此方法与分区对齐无关!

# hdparm -Tt /dev/sdX
/dev/sdX:
Timing cached reads:   x MB in  y seconds = z MB/sec
Timing buffered disk reads:  x MB in  y seconds = z MB/sec
注意:应该运行上述命令 2-3 次,并手动平均结果,以便准确评估读取速度,根据 hdparm(8) § T

gnome-disks

有一个名为 gnome-disks 的图形基准测试包含在 gnome-disk-utility 软件包中,它将提供最小/最大/平均读取量以及平均访问时间和漂亮的图形显示。此方法与分区对齐无关!

# gnome-disks

用户将需要通过 GUI 导航到基准测试按钮(“更多操作...”>“基准卷...”)。 示例

KDiskMark

kdiskmark 是一个 HDD 和 SSD 基准测试工具,具有非常友好的图形用户界面。KDiskMark 凭借其预设和强大的 GUI 调用灵活的 I/O 测试器,并处理输出以提供易于查看和解释的综合基准测试结果。

systemd-analyze

$ systemd-analyze plot > boot.svg

将绘制一个详细的图形,显示启动顺序:内核时间、用户空间时间、每个服务所花费的时间。 示例

dd

dd 实用程序可用于测量读取和写入。此方法取决于分区对齐!换句话说,如果您未能正确对齐分区,那么在这里就会看到这个事实,因为您正在写入和读取已挂载的文件系统。

注意:此方法要求从感兴趣设备上的已挂载分区执行命令!

首先,进入 SSD 上至少有 1.1 GB 可用空间的目录(以及一个授予用户 wrx 权限的目录),并写入一个测试文件以测量写入速度并为设备提供读取内容

$ dd if=/dev/zero of=/path/to/SSD/tempfile bs=1M count=1024 conv=fdatasync,notrunc status=progress
1024+0 records in
1024+0 records out
v bytes (w MB, x MiB) copied, y s, z MB/s
提示:请参阅 dd-benchmark 以了解有关 sync 要求和进一步相关的 dd 选项的说明。

接下来,清除缓冲区缓存以直接从设备准确测量读取速度

# echo 3 > /proc/sys/vm/drop_caches
$ dd if=tempfile of=/dev/null bs=1M count=1024 status=progress
1024+0 records in
1024+0 records out
v bytes (w MB, x MiB) copied, y s, z MB/s

现在最后一个文件在缓冲区中,重复命令以查看缓冲区缓存的速度

$ dd if=tempfile of=/dev/null bs=1M count=1024 status=progress
1024+0 records in
1024+0 records out
v bytes (w MB, x MiB) copied, y s, z MB/s
注意:应该运行上述命令 4-5 次,并手动平均结果,以便准确评估缓冲区读取速度。

最后,删除临时文件

$ rm tempfile
注意:某些 SSD 控制器具有压缩硬件,这可能会扭曲基准测试结果。请参阅 https://www.pugetsystems.com/labs/articles/SSDs-Advertised-vs-Actual-Performance-179/

dcfldd

Dcfldd 不像旧的 dd 那样以 MB/s 为单位打印平均速度,但使用 time 您可以解决这个问题。

计时清除磁盘的运行

# time dcfldd if=/dev/zero of=/dev/sdX bs=4M
18944 blocks (75776Mb) written.dcfldd:: No space left of device
real     16m17.033s
user     0m0.377s
sys      0m51.160s

通过将 dcfldd 命令的输出除以秒为单位的时间来计算 MB/s。对于此示例:75776Mb / (16.4 分钟 * 60) = 77.0 MB/s。

7z

7z 基准测试命令可用于测量 MIPS 中的 CPU 速度,还可以检查 RAM 是否有错误。只需安装 p7zip 并运行以下命令。更详细的信息可以在 [1] 找到。

$ 7z b

peakperf

peakperf-gitAUR 是一个微基准测试程序,可在 x86_64 CPU 上实现峰值性能。某些问题可能会降低 CPU 提供的性能,例如 CPU 散热。使用 peakperf,您可以检查您的 CPU 是否提供了其能够提供的全部功率。

您可以计算应使用 CPU 获得的性能(以 GFLOP/s 为单位测量)(请参阅 [2]),并将其与 peakperf 给您的性能进行比较。如果两个值相同(或非常相似),则您的 CPU 行为应符合预期。

注意:即使 peakperf 的目标是测试 CPU,它也是测试散热的好方法,因为它会将 CPU 节流到极限。

cryptsetup

cryptsetup 基准测试可用于测量各种加密算法(密码)的速度。

$ cryptsetup benchmark

软件套件

Bonnie++

bonnie++original Bonnie 基准测试套件的 C++ 重写版本,旨在执行硬盘驱动器和文件系统性能的几项测试。

参见

IOzone

IOzone 对于执行供应商计算机平台的广泛文件系统分析非常有用。

此程序在 AUR 中可用: iozoneAUR

以下内容可以近似 CrystalDiskMark (一种流行的 Windows 基准测试实用程序)的几项测试的输出

  1. 顺序 1M 读/写: iozone -e -I -s 1g -r 1m -i 0 -i 1
  2. 顺序 128k 读/写: iozone -e -I -s 1g -r 128k -i 0 -i 1
  3. 随机 4k 读/写: iozone -e -I -s 1g -r 4k -i 0 -i 2 -i 1

结果将以 Kb/s 为单位,因此除以 1024 即可得到 MB/s。

另请参阅 BBS 文章: iozone to evaluate I/O schedulers... results NOT what you'd expect!

HardInfo

hardinfo2AUR 可以收集有关系统硬件和操作系统的信息,执行基准测试,并生成 HTML 或纯文本格式的可打印报告。HardInfo 执行 CPU 和 FPU 基准测试,并具有非常简洁的基于 GTK 的界面。

Phoronix 测试套件

Phoronix 测试套件 是可用的最全面的测试和基准测试平台,它提供了一个可扩展的框架,可以轻松地添加新测试。该软件旨在以干净、可重现且易于使用的方式有效地执行定性和定量基准测试。

Phoronix 测试套件基于 Phoronix.com 自 2004 年以来开发的广泛测试和内部工具,并得到了一线计算机硬件和软件供应商的支持。该软件是开源的,并根据 GNU GPLv3 获得许可。

Phoronix 测试套件最初是为自动化 Linux 测试而开发的,此后已添加对 OpenSolaris、Apple macOS、Microsoft Windows 和 BSD 操作系统的支持。Phoronix 测试套件由一个轻量级处理核心 (pts-core) 组成,每个基准测试都包含一个基于 XML 的配置文件和相关的资源脚本。从基准测试安装到实际基准测试再到重要硬件和软件组件的解析过程都是高度自动化的且完全可重复的,仅要求用户确认操作。

Phoronix 测试套件与 OpenBenchmarking.org 连接,作为一个协作 Web 平台,用于集中存储测试结果、共享测试配置文件和结果、高级分析功能以及其他功能。Phoromatic 是一个企业组件,用于协调跨多个系统的测试执行,并具有远程管理功能。

此套件可以使用 pacman 安装软件包 phoronix-test-suiteAUR。还有一个开发版本可用于 phoronix-test-suite-gitAUR

S

S,一个 I/O 基准测试套件,是一小部分用于测量存储 I/O 性能的脚本集合。

下载或克隆项目,安装其依赖项并以 root 身份运行它(需要特权才能更改磁盘调度程序)。

s-tui

s-tui 是一个美观且有用的 curses 风格的界面,它显示 CPU 频率、利用率、温度、功耗的图形,并内置了压力测试器。

sysbench

sysbench 是一个全能的多线程基准测试工具。它用 C 和 Perl 编写,可以直接在 CLI 中使用,以测试文件系统、DRAM、CPU、基于线程的调度程序和 POSIX 互斥锁的性能。或者,它可以作为 Lua 脚本解释器,以测试任何任意复杂的工作负载。它提供了一组用于数据库基准测试的脚本。

闪存介质

性能特征可以使用 iozoneAUR 进行定量测量。 持续 读取和写入值可以(但通常不会)与 I/O 密集型操作的实际用例相关联,例如在系统更新时解压缩和写入大量文件。在这些情况下要考虑的相关指标是小文件的随机写入速度。

示例调用测试一个使用 4k 记录大小的 10M 文件

$ iozone -e -I -a -s 10M -r 4k -i 0 -i 1 -i 2
...

                                                                random   random
              kB  reclen    write  rewrite    read    reread    read     write
           10240       4      661      649     5802     5822     3892      624
注意:测试值以 KB/s 为单位报告。

图形

Basemark GPU

Basemark GPU 是一种评估工具,用于分析和测量跨移动和桌面平台的图形 API(OpenGL 4.5、OpenGL ES 3.1、Vulkan 和 Microsoft DirectX 12)性能。Basemark GPU 通过提供高质量和中等质量模式,同时面向桌面和移动平台。高质量模式针对前沿桌面工作负载,而中等质量模式针对同等移动工作负载。

如果您正在使用 AMD GPU 并且同时安装了多个 vulkan 实现,则在“测试”页面中,您将在“图形设备”下拉列表中看到它们作为单独的 GPU。

Basemark GPU 在 basemarkAUR 软件包中可用。

Blender-benchmark

Blender-benchmark 将收集有关系统的信息,例如操作系统、RAM、显卡、CPU 型号,以及有关系统在基准测试执行期间的性能的信息。之后,用户将能够在 Blender Open Data 平台上在线共享结果,或将数据本地保存。

Blender-benchmark 在 blender-benchmarkAUR 软件包中可用。

GFXBench

GFXBench 是一个高端图形基准测试程序,可测量跨所有平台的移动和桌面性能以及下一代图形功能。作为真正的跨 API 基准测试,GFXBench 支持所有行业标准和供应商特定的 API,包括 OpenGL、OpenGL ES、Vulkan、Metal、DirectX/Direct3D 和 DX12。

Vulkan API 测试目前正在开发中,仅适用于其企业合作伙伴。

GFXBench 在 gfxbenchAUR 软件包中可用。

glmark2

glmark2 是一个 OpenGL 2.0 和 ES 2.0 基准测试程序。

glmark2 在 glmark2 软件包中可用。

glxgears

glxgears 是一个流行的 OpenGL 测试,它渲染一个非常简单的 OpenGL 性能并输出帧速率。虽然 glxgears 可以用作图形驱动程序直接渲染能力的测试,但它是一个过时的工具,不能代表 GNU/Linux 图形和整体 OpenGL 可能性的当前状态。glxgears 仅测试可能在游戏中使用的 OpenGL 功能的一小部分。glxgears 中注意到的性能提升不一定会在任何给定的游戏中实现。有关更多信息,请参阅 here

glxgears 可以通过 mesa-utilslib32-mesa-utils (对于 multilib)软件包安装。

GpuTest

GpuTest 是一个跨平台(Windows、Linux 和 Max OS X)GPU 压力测试和 OpenGL 基准测试程序。GpuTest 附带了多项 GPU 测试,包括来自 Windows 世界的一些流行测试(FurMark 或 TessMark)。

GpuTest 在 gputestAUR 软件包中可用。

intel-gpu-tools

intel-gpu-tools 为您提供集成 GPU 的一些类似 top 的信息。这对于诊断 GPU 加速问题非常有用。

要使用它, 安装 intel-gpu-tools 软件包。

MangoHud

请参阅 MangoHud

Unigine 引擎

Unigine corp. 已经基于他们的图形引擎制作了几个现代 OpenGL 基准测试,具有以下功能,例如

  • 逐像素动态照明
  • 法线和视差遮蔽贴图
  • 64 位 HDR 渲染
  • 体积雾和光照
  • 强大的粒子系统:火焰、烟雾、爆炸
  • 可扩展的着色器集 (GLSL / HLSL)
  • 后期处理:景深、折射、发光、模糊、色彩校正等等。

Unigine 基准测试最近被那些希望超频系统的人使用。特别是 Heaven 已被用于超频的初始稳定性测试。

这些基准测试可以在 AUR 中找到

vkmark

vkmark 是一个可扩展的 Vulkan 基准测试套件,具有有针对性的、可配置的场景。

vkmark 在 vkmark 软件包中可用。

参见