|
UnixBench
UnixBench是一款跨平台基准测试工具,用于评估各种类Unix系统(包括Linux、BSD和macOS)的系统性能。它提供了一套全面的测试套件,可评估系统性能的不同方面,包括:
- 系统调用: 此测试衡量进行系统调用的开销,系统调用是应用程序与操作系统内核交互的主要方式。
- 文件系统: 此测试评估文件系统操作的性能,例如读取、写入和创建文件。
- 进程: 此测试评估进程创建、上下文切换和进程间通信 (IPC) 的效率。
- 管道: 此测试衡量使用管道(一种简单的 IPC 形式)在进程之间传输数据的性能。
- 数学: 此测试评估基本数学运算的性能,例如加、减、乘、除。
- 字符串: 此测试评估字符串操作操作的性能,例如复制、搜索和比较字符串。
- 2D 图形: 此测试衡量基本 2D 图形操作的性能,例如绘制线条、填充多边形和图像操作。
- 3D 图形: 此测试评估 3D 图形操作的性能,例如三角形渲染、纹理映射和照明计算。
- C 库: 此测试评估 C 标准库中常用函数的性能。
- 网络: 此测试衡量网络操作的性能,例如发送和接收数据以及建立连接。
UnixBench为每个测试生成分数和总体系统分数,可用于比较不同系统的性能。分数越高,性能越好。但是,需要注意的是,基准测试结果会受到各种因素的影响,例如硬件配置、操作系统版本和特定工作负载。
UnixBench对于系统管理员和性能爱好者来说是个宝贵的工具,用于评估类Unix系统的整体性能并识别潜在的瓶颈。它还可以用于跟踪随着时间的推移的性能改进或比较不同硬件配置的性能。
以下是一些有关UnixBench的其他注意事项:
- 开源: UnixBench是一款开源工具(GPLv2),可供任何人免费使用和修改。这促进了透明度,并允许社区贡献来改进工具。
- 跨平台: UnixBench可在各种类Unix系统上运行,使其成为跨平台比较性能的通用工具。
- 定制: UnixBench允许自定义测试套件以专注于特定感兴趣的领域,例如CPU密集型或I/O约束型任务。
- 解释: 基准测试结果应与其他因素(例如特定工作负载和硬件配置)结合起来解释,以全面了解系统性能。
如果您的系统有多个CPU,默认情况下会将所选测试运行两次,一次运行每个测试程序的一个副本,另一次运行N个副本,其中N是CPU的数量。这样做的目的是让您能评估
- 运行单个任务时的系统性能
- 运行多个任务时的系统性能
- 系统实施并行处理的收益
UnixBench的具体测试项:
- Dhrystone 2 using register variables
用于评估处理器的整数性能。它通过运行一系列模拟实际应用程序中常见操作的程序来衡量处理器执行整数运算的速度。
在Dhrystone 2基准测试中,使用寄存器变量可以潜在提高代码性能,方法是减少访问数据所需的时间。寄存器变量存储在CPU的寄存器中,而寄存器的访问速度比内存位置快得多。通过将经常使用的变量声明为寄存器变量,编译器可以优化代码以将这些变量保存在寄存器中,从而减少对内存的访问需求并提高整体性能。
使用寄存器变量的有效性取决于多个因素,包括特定的编译器、CPU架构以及代码本身的特性。过度激进地使用寄存器声明甚至会导致性能下降,如果寄存器没有得到有效管理。
该基准用于测量和比较计算机的性能。由于没有浮点运算,因此测试重点是字符串处理。硬件和软件设计、编译器和链接器选项、代码优化、高速缓冲存储器、等待状态和整数数据类型对其影响很大。
- Double-Precision Whetstone
测量浮点运算的速度和效率。该测试包含多个模块,旨在体现科学应用中通常执行的各种操作。使用了各种C函数,包括 sin、cos、sqrt、exp和log,以及整数和浮点数学运算、数组访问、条件分支和过程调用。该测试同时测量整数和浮点运算。
该测试测量每秒可执行的 Execl 调用次数。Execl 是 exec 系列函数的一部分,可将当前进程映像替换为新进程映像。它和许多其他类似命令都是 execve() 函数的前端。
它使用不同的缓冲区大小来测量数据从一个文件传输到另一个文件的速度。文件读取、写入和复制测试捕捉在指定时间(默认为 10 秒)内可写入、读取和复制的字符数。
管道是进程间最简单的通信形式。管道吞吐量是指进程向管道写入512字节并读回的次数(每秒)。管道吞吐量测试在实际编程中并不存在。
该测试测量两个进程通过管道交换递增整数的次数。基于管道的上下文切换测试更像现实世界中的应用。测试程序会生成一个子进程,与之进行双向管道对话。
该测试测量进程分叉并产生一个立即退出的子进程的次数。进程创建指的是为新进程实际创建进程控制块和内存分配,因此这直接关系到内存带宽。通常,该基准用于比较操作系统进程创建调用的各种实现。
shell脚本测试测量的是进程每分钟可启动和获取一组1、2、4和8个并发 shell 脚本副本的次数,其中shell脚本将对数据文件进行一系列转换。
- System Call Overhead(系统调用开销):
估算进入和离开操作系统内核的成本,即执行系统调用的开销。它包括一个重复调用 getpid(返回调用进程的进程ID)系统调用的简单程序。执行此类调用的时间可用于估算进入和退出内核的成本。
提供二维和三维图形测试;目前,三维测试套件非常有限,只有"ubgears"程序。这些测试旨在为系统的2D和3D图形性能提供一个非常粗略的概念。当然,请记住,报告的性能不仅取决于硬件,还取决于系统是否有相应的驱动程序。
您可以从这里下载最新版本:https://github.com/kdlucas/byte-unixbench
安装和运行测试:
- $ git clone https://github.com/kdlucas/byte-unixbench
- $ cd byte-unixbench/UnixBench
- $ make
- $ sudo ./Run
- $ sudo ./Run
- [sudo] password for xurongzhong:
- make all
- make[1]: Entering directory `/home/xurongzhong/byte-unixbench/UnixBench'
- make distr
- make[2]: Entering directory `/home/xurongzhong/byte-unixbench/UnixBench'
- Checking distribution of files
- ./pgms exists
- ./src exists
- ./testdir exists
- ./tmp exists
- ./results exists
- make[2]: Leaving directory `/home/xurongzhong/byte-unixbench/UnixBench'
- make programs
- make[2]: Entering directory `/home/xurongzhong/byte-unixbench/UnixBench'
- make[2]: Nothing to be done for `programs'.
- make[2]: Leaving directory `/home/xurongzhong/byte-unixbench/UnixBench'
- make[1]: Leaving directory `/home/xurongzhong/byte-unixbench/UnixBench'
- sh: 3dinfo: command not found
- # # # # # # # ##### ###### # # #### # #
- # # ## # # # # # # # ## # # # # #
- # # # # # # ## ##### ##### # # # # ######
- # # # # # # ## # # # # # # # # #
- # # # ## # # # # # # # ## # # # #
- #### # # # # # ##### ###### # # #### # #
- Version 5.1.3 Based on the Byte Magazine Unix Benchmark
- Multi-CPU version Version 5 revisions by Ian Smith,
- Sunnyvale, CA, USA
- January 13, 2011 johantheghost at yahoo period com
- ------------------------------------------------------------------------------
- Use directories for:
- * File I/O tests (named fs***) = /home/xurongzhong/byte-unixbench/UnixBench/tmp
- * Results = /home/xurongzhong/byte-unixbench/UnixBench/results
- ------------------------------------------------------------------------------
- 1 x Dhrystone 2 using register variables 1 2 3 4 5 6 7 8 9 10
- 1 x Double-Precision Whetstone 1 2 3 4 5 6 7 8 9 10
- 1 x Execl Throughput 1 2 3
- 1 x File Copy 1024 bufsize 2000 maxblocks 1 2 3
- 1 x File Copy 256 bufsize 500 maxblocks 1 2 3
- 1 x File Copy 4096 bufsize 8000 maxblocks 1 2 3
- 1 x Pipe Throughput 1 2 3 4 5 6 7 8 9 10
- 1 x Pipe-based Context Switching 1 2 3 4 5 6 7 8 9 10
- 1 x Process Creation 1 2 3
- 1 x System Call Overhead 1 2 3 4 5 6 7 8 9 10
- 1 x Shell Scripts (1 concurrent) 1 2 3
- 1 x Shell Scripts (8 concurrent) 1 2 3
- 56 x Dhrystone 2 using register variables 1 2 3 4 5 6 7 8 9 10
- 56 x Double-Precision Whetstone 1 2 3 4 5 6 7 8 9 10
- 56 x Execl Throughput 1 2 3
- 56 x File Copy 1024 bufsize 2000 maxblocks 1 2 3
- 56 x File Copy 256 bufsize 500 maxblocks 1 2 3
- 56 x File Copy 4096 bufsize 8000 maxblocks 1 2 3
- 56 x Pipe Throughput 1 2 3 4 5 6 7 8 9 10
- 56 x Pipe-based Context Switching 1 2 3 4 5 6 7 8 9 10
- 56 x Process Creation 1 2 3
- 56 x System Call Overhead 1 2 3 4 5 6 7 8 9 10
- 56 x Shell Scripts (1 concurrent) 1 2 3
- 56 x Shell Scripts (8 concurrent) 1 2 3
- ========================================================================
- BYTE UNIX Benchmarks (Version 5.1.3)
- System: localhost.localdomain: GNU/Linux
- OS: GNU/Linux -- 3.10.0-1160.119.1.el7.x86_64 -- #1 SMP Tue Jun 4 14:43:51 UTC 2024
- Machine: x86_64 (x86_64)
- Language: en_US.utf8 (charmap="UTF-8", collate="UTF-8")
- CPU 0: Intel(R) Xeon(R) Gold 6348 CPU @ 2.60GHz (5200.0 bogomips)
- Hyper-Threading, x86-64, MMX, Physical Address Ext, SYSENTER/SYSEXIT, SYSCALL/SYSRET, Intel virtualization
- ...
- CPU 55: Intel(R) Xeon(R) Gold 6348 CPU @ 2.60GHz (5234.1 bogomips)
- Hyper-Threading, x86-64, MMX, Physical Address Ext, SYSENTER/SYSEXIT, SYSCALL/SYSRET, Intel virtualization
- 17:47:27 up 2 days, 21:44, 10 users, load average: 1.86, 2.10, 1.68; runlevel 2024-07-09
- ------------------------------------------------------------------------
- Benchmark Run: Fri Jul 12 2024 17:47:27 - 18:16:27
- 56 CPUs in system; running 1 parallel copy of tests
- Dhrystone 2 using register variables 37086745.6 lps (10.0 s, 7 samples)
- Double-Precision Whetstone 4004.8 MWIPS (9.5 s, 7 samples)
- Execl Throughput 1246.1 lps (29.6 s, 2 samples)
- File Copy 1024 bufsize 2000 maxblocks 598492.2 KBps (30.0 s, 2 samples)
- File Copy 256 bufsize 500 maxblocks 163845.8 KBps (30.0 s, 2 samples)
- File Copy 4096 bufsize 8000 maxblocks 2035859.6 KBps (30.0 s, 2 samples)
- Pipe Throughput 1396781.3 lps (10.0 s, 7 samples)
- Pipe-based Context Switching 55716.4 lps (10.0 s, 7 samples)
- Process Creation 1856.3 lps (30.0 s, 2 samples)
- Shell Scripts (1 concurrent) 2251.3 lpm (60.0 s, 2 samples)
- Shell Scripts (8 concurrent) 2065.8 lpm (60.0 s, 2 samples)
- System Call Overhead 1422058.9 lps (10.0 s, 7 samples)
- System Benchmarks Index Values BASELINE RESULT INDEX
- Dhrystone 2 using register variables 116700.0 37086745.6 3178.0
- Double-Precision Whetstone 55.0 4004.8 728.1
- Execl Throughput 43.0 1246.1 289.8
- File Copy 1024 bufsize 2000 maxblocks 3960.0 598492.2 1511.3
- File Copy 256 bufsize 500 maxblocks 1655.0 163845.8 990.0
- File Copy 4096 bufsize 8000 maxblocks 5800.0 2035859.6 3510.1
- Pipe Throughput 12440.0 1396781.3 1122.8
- Pipe-based Context Switching 4000.0 55716.4 139.3
- Process Creation 126.0 1856.3 147.3
- Shell Scripts (1 concurrent) 42.4 2251.3 531.0
- Shell Scripts (8 concurrent) 6.0 2065.8 3442.9
- System Call Overhead 15000.0 1422058.9 948.0
- ========
- System Benchmarks Index Score 849.2
- ------------------------------------------------------------------------
- Benchmark Run: Fri Jul 12 2024 18:16:27 - 18:44:39
- 56 CPUs in system; running 56 parallel copies of tests
- Dhrystone 2 using register variables 2097477411.1 lps (10.0 s, 7 samples)
- Double-Precision Whetstone 226690.9 MWIPS (9.9 s, 7 samples)
- Execl Throughput 33437.2 lps (29.5 s, 2 samples)
- File Copy 1024 bufsize 2000 maxblocks 1533720.9 KBps (30.0 s, 2 samples)
- File Copy 256 bufsize 500 maxblocks 382616.6 KBps (30.0 s, 2 samples)
- File Copy 4096 bufsize 8000 maxblocks 6047258.8 KBps (30.0 s, 2 samples)
- Pipe Throughput 77978504.1 lps (10.0 s, 7 samples)
- Pipe-based Context Switching 2748800.6 lps (10.0 s, 7 samples)
- Process Creation 170992.2 lps (30.0 s, 2 samples)
- Shell Scripts (1 concurrent) 204598.7 lpm (60.0 s, 2 samples)
- Shell Scripts (8 concurrent) 24199.0 lpm (60.0 s, 2 samples)
- System Call Overhead 79596405.6 lps (10.0 s, 7 samples)
- System Benchmarks Index Values BASELINE RESULT INDEX
- Dhrystone 2 using register variables 116700.0 2097477411.1 179732.4
- Double-Precision Whetstone 55.0 226690.9 41216.5
- Execl Throughput 43.0 33437.2 7776.1
- File Copy 1024 bufsize 2000 maxblocks 3960.0 1533720.9 3873.0
- File Copy 256 bufsize 500 maxblocks 1655.0 382616.6 2311.9
- File Copy 4096 bufsize 8000 maxblocks 5800.0 6047258.8 10426.3
- Pipe Throughput 12440.0 77978504.1 62683.7
- Pipe-based Context Switching 4000.0 2748800.6 6872.0
- Process Creation 126.0 170992.2 13570.8
- Shell Scripts (1 concurrent) 42.4 204598.7 48254.4
- Shell Scripts (8 concurrent) 6.0 24199.0 40331.7
- System Call Overhead 15000.0 79596405.6 53064.3
- ========
- System Benchmarks Index Score 19616.4
复制代码 以上操作系统:CentOS Linux release 7.9.2009 (Core),服务器:Supermicro Super Server SMC X12
操作系统:openEuler release 22.03 (LTS-SP4)- BYTE UNIX Benchmarks (Version 5.1.3)
- System: localhost.localdomain: GNU/Linux
- OS: GNU/Linux -- 5.10.0-216.0.0.115.oe2203sp4.aarch64 -- #1 SMP Thu Jun 27 15:22:10 CST 2024
- Machine: aarch64 (aarch64)
- Language: en_US.utf8 (charmap="UTF-8", collate="UTF-8")
- CPU 0: (200.0 bogomips)
- ...
- CPU 127: (200.0 bogomips)
- 19:03:20 up 3 days, 2:19, 5 users, load average: 1.02, 1.12, 1.07; runlevel 2024-07-10
- ------------------------------------------------------------------------
- Benchmark Run: Fri Jul 12 2024 19:03:20 - 19:31:28
- 128 CPUs in system; running 1 parallel copy of tests
- Dhrystone 2 using register variables 42056424.6 lps (10.0 s, 7 samples)
- Double-Precision Whetstone 4475.6 MWIPS (10.0 s, 7 samples)
- Execl Throughput 3271.3 lps (30.0 s, 2 samples)
- File Copy 1024 bufsize 2000 maxblocks 743479.4 KBps (30.0 s, 2 samples)
- File Copy 256 bufsize 500 maxblocks 222004.0 KBps (30.0 s, 2 samples)
- File Copy 4096 bufsize 8000 maxblocks 2161717.7 KBps (30.0 s, 2 samples)
- Pipe Throughput 984465.6 lps (10.0 s, 7 samples)
- Pipe-based Context Switching 164087.2 lps (10.0 s, 7 samples)
- Process Creation 6467.8 lps (30.0 s, 2 samples)
- Shell Scripts (1 concurrent) 6613.3 lpm (60.0 s, 2 samples)
- Shell Scripts (8 concurrent) 4519.1 lpm (60.0 s, 2 samples)
- System Call Overhead 778479.8 lps (10.0 s, 7 samples)
- System Benchmarks Index Values BASELINE RESULT INDEX
- Dhrystone 2 using register variables 116700.0 42056424.6 3603.8
- Double-Precision Whetstone 55.0 4475.6 813.8
- Execl Throughput 43.0 3271.3 760.8
- File Copy 1024 bufsize 2000 maxblocks 3960.0 743479.4 1877.5
- File Copy 256 bufsize 500 maxblocks 1655.0 222004.0 1341.4
- File Copy 4096 bufsize 8000 maxblocks 5800.0 2161717.7 3727.1
- Pipe Throughput 12440.0 984465.6 791.4
- Pipe-based Context Switching 4000.0 164087.2 410.2
- Process Creation 126.0 6467.8 513.3
- Shell Scripts (1 concurrent) 42.4 6613.3 1559.7
- Shell Scripts (8 concurrent) 6.0 4519.1 7531.9
- System Call Overhead 15000.0 778479.8 519.0
- ========
- System Benchmarks Index Score 1290.2
- ------------------------------------------------------------------------
- Benchmark Run: Fri Jul 12 2024 19:31:28 - 20:01:04
- 128 CPUs in system; running 128 parallel copies of tests
- Dhrystone 2 using register variables 4264071560.6 lps (10.0 s, 7 samples)
- Double-Precision Whetstone 453663.9 MWIPS (8.8 s, 7 samples)
- Execl Throughput 28547.4 lps (29.9 s, 2 samples)
- File Copy 1024 bufsize 2000 maxblocks 48631837.6 KBps (30.0 s, 2 samples)
- File Copy 256 bufsize 500 maxblocks 24668291.9 KBps (30.0 s, 2 samples)
- File Copy 4096 bufsize 8000 maxblocks 100610677.0 KBps (30.0 s, 2 samples)
- Pipe Throughput 120629456.6 lps (10.0 s, 7 samples)
- Pipe-based Context Switching 18063898.2 lps (10.0 s, 7 samples)
- Process Creation 68547.0 lps (30.0 s, 2 samples)
- Shell Scripts (1 concurrent) 133329.3 lpm (60.0 s, 2 samples)
- Shell Scripts (8 concurrent) 18785.4 lpm (60.2 s, 2 samples)
- System Call Overhead 98134546.0 lps (10.0 s, 7 samples)
- System Benchmarks Index Values BASELINE RESULT INDEX
- Dhrystone 2 using register variables 116700.0 4264071560.6 365387.5
- Double-Precision Whetstone 55.0 453663.9 82484.3
- Execl Throughput 43.0 28547.4 6638.9
- File Copy 1024 bufsize 2000 maxblocks 3960.0 48631837.6 122807.7
- File Copy 256 bufsize 500 maxblocks 1655.0 24668291.9 149053.1
- File Copy 4096 bufsize 8000 maxblocks 5800.0 100610677.0 173466.7
- Pipe Throughput 12440.0 120629456.6 96969.0
- Pipe-based Context Switching 4000.0 18063898.2 45159.7
- Process Creation 126.0 68547.0 5440.2
- Shell Scripts (1 concurrent) 42.4 133329.3 31445.6
- Shell Scripts (8 concurrent) 6.0 18785.4 31309.1
- System Call Overhead 15000.0 98134546.0 65423.0
- ========
- System Benchmarks Index Score 56115.2
复制代码 基准值
UnixBench中的基准值是指每个子测试项的参考值,用来衡量该子测试项的性能水平。基准值通常是该子测试项在特定硬件平台上的预期性能。例如在 Dhrystone测试中基准值为 1750 MIPS。
UnixBench中的基准值最初是在1995年由UnixBench的作者Michael Bach设定的。他使用一台SPARCstation 20-61工作站作为参考平台,并测量了该平台上各个子测试项的性能。然后,他将这些性能值作为基准值。
UnixBench中的基准值并不是固定的,它们会随着硬件技术的进步而不断更新。例如UnixBench 5.1.2版本中,Dhrystone测试的基准值从1750 MIPS更新为2200MIPS。
以下是UnixBench 5.1.2版本中各个子测试项的基准值:
子测试项基准值Dhrystone2200 MIPSWhetstone56000 WIPSExecl Throughput33000 calls/secFile Copy 1024 bufsize10000000 bytes/secFile Copy 256 bufsize5000000 bytes/secFile Copy 4096 bufsize20000000 bytes/secPipe Throughput10000000 bytes/secPipe-based Context Switching5000000 switches/secProcess Creation5000 processes/secShell Scripts (1 concurrent)10000000 instructions/secShell Scripts (8 concurrent)80000000 instructions/secSystem Call Overhead10000000 calls/sec参考资料
System Benchmarks Index Score的计算
UnixBench的System Benchmarks Index Score是通过对各个子测试项的单项性能分数进行加权平均计算得出的。每个子测试项的单项性能分数又通过对原始测试结果进行指数运算得到。
具体来说,计算步骤如下:
- 计算每个子测试项的原始测试结果: 每个子测试项都会输出一个原始测试结果,该结果通常表示为每秒执行的操作数或每秒传输的数据量。例如,在 File Copy 测试中,原始测试结果表示每秒复制的文件大小。
- 计算每个子测试项的单项性能分数: 对于每个子测试项,根据其原始测试结果和基准值,使用指数运算计算其单项性能分数。指数运算公式:score = exp(product / 2)。其中:score 是单项性能分数;product 是原始测试结果和基准值的乘积;exp是自然指数函数。
基准值是每个子测试项的参考值,用来衡量该子测试项的性能水平。基准值通常是该子测试项在特定硬件平台上的预期性能。例如,在 Dhrystone 测试中,基准值为 1750 MIPS。
- 计算 System Benchmarks Index Score: 将每个子测试项的单项性能分数乘以其对应的权重,然后求和,最后再进行指数运算,得 System Benchmarks Index Score。指数运算公式:Score = exp(average(score * weight))。其中:Score是 System Benchmarks Index Score;average 是加权平均函数;score 是每个子测试项的单项性能分数;weight 是每个子测试项的权重。
权重是每个子测试项在 System Benchmarks Index Score 中所占的比例。权重值通常根据每个子测试项的重要性来分配。例如,在UnixBench中,Dhrystone 和 Whetstone 测试的权重较高,因为它们衡量的是 CPU 的整数和浮点性能,而这些性能在许多应用程序中都很重要。
以下是 UnixBench 中各个子测试项的权重:
子测试项权重Dhrystone0.17Whetstone0.17Execl Throughput0.10File Copy 1024 bufsize0.05File Copy 256 bufsize0.05File Copy 4096 bufsize0.05Pipe Throughput0.05Pipe-based Context Switching0.05Process Creation0.05Shell Scripts (1 concurrent)0.05Shell Scripts (8 concurrent)0.05System Call Overhead0.10System Benchmarks Index Score 只是一个综合性指标,并不能完全反映所有类型的应用程序性能。在评估计算机性能时,应综合考虑多种因素,包括 CPU 性能、内存带宽、存储性能和 I/O 性能等。
其他
如果不需要进行图形测试或者不在图形化界面下测试,则将Makefile文件中GRAPHIC_TESTS = defined注释掉,默认是关闭的。
默认测试完成后测试结果存放在results目录:
UnixBench由于多年没有更新,已经廉颇老矣,建议综合参考Sysbench、GeekBench等工具。
来源:https://www.cnblogs.com/testing-/p/18299319
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作! |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|