UnixBench的实现介绍

本文涉及的产品
轻量应用服务器 2vCPU 4GiB,适用于网站搭建
轻量应用服务器 2vCPU 4GiB,适用于搭建容器环境
轻量应用服务器 2vCPU 4GiB,适用于搭建Web应用/小程序
简介: 很多用户都用UnixBench做性能测试,并做厂商之间的对比,那UnixBench到底做了哪些性能测试,本篇从代码层面阐述UnixBench做了哪些测试。在细说UnixBench的实现之前,先放一个总结果UnixBench算分介绍有类似结果,然后一个个解释。

很多用户都用UnixBench做性能测试,并做厂商之间的对比,那UnixBench到底做了哪些性能测试,本篇从代码层面阐述UnixBench做了哪些测试。
在细说UnixBench的实现之前,先放一个总结果UnixBench算分介绍有类似结果,然后一个个解释。 从结果可以看出,结果分为两块,一块为单进程,一块为多进程,多进程数目默认取决于CPU数目,多进程的测试仅仅是增加了进程数目,内存其实跟单进程一模一样,所以下面的描述都是针对单进程的。

Dhrystone 2 using register variables

这里有比较详细的dhrystone介绍,这个主要是测整数性能,对应的浮点数测试是:Double-Precision Whetstone。
恕我眼拙,那一坨运算实在不知所云,于是上网搜了一堆文章,大意是可以通过编译优化提高性能,不能真实反映CPU性能。这篇文章比较有典型意义:Benchmarking in context: Dhrystone
那绕开里面一坨计算,说下输出:默认就是在10秒内,那一坨计算能计算次数,算出分数后,参考前面篇UnixBench算分介绍,算出Index分数。

Double-Precision Whetstone

既然有整数运算的CPU性能,那么浮点数运算性能也希望有,于是就有了:whets.c 它的代码质量就高多了,我终于读懂了。

  1. 它需要得到一个合适的参数. 怎么得出这个运算呢:有坨运算,随着传入参数(xtra)变大,耗时会逐渐增减,当耗时增加到超过2秒时,参数停止变大。
    image.png
  2. 如果跑10秒大概的参数会是怎样呢:625*10/1.238352=5047
  3. 根据输入参数,去计算结果,之前一直没有说,那一坨计算是什么,总共分为8步,英文解释还是比较清楚的,采纳了其中的浮点数分数,不过它的时间怎么把其他计算的时间也算在里面了,既然只关心浮点数运算,为什么还要加入N3,N4,N5,N7,N8这几步,后续计算参考前面算法规则UnixBench算分介绍
    image.png

Execl Throughput

除了前面介绍的那两个比较复杂,UnixBench其他的运算都比较简单,Execl它的实际就是递归调用,它主要利用的是execl函数。本身execl.c编译出来后的执行文件是execl的二进制文件,execl函数执行的时候记录参数:开始时间,执行次数,耗时(一般都是10秒)。当本次总执行时间耗时超过10秒时,输出执行次数,然后根据算分规则算分,这个思想还是很巧妙的。

File Copy

这个主要是测试的write和read两个函数,测试30秒。实现很简单,先写入一个文件2秒(循环写入),再读2秒,然后从刚刚写入的文件读取数据,写入到另一个文件,循环写入,在30秒的读写次数。 不同的参数测试测的是不同块大小,不同块数的性能,如果测试磁盘建议用FIO测试。

Pipe Throughput

打开一个管道,往管道写入512个bytes,再读出来,测试10秒,总共读写次数

Pipe-based Context Switching

打开两个管道,开启两个进程,其中一个进程往管道1写,往管道2读,另一个进程往管道2写,往管道2读,一个进程完成一次读写,计数+1。其中一个很有意思的事情:如果这两个进程在同一个CPU和不同的CPU有完全不同的性能,在同一个CPU下性能会好很多。这里有篇很细致的分析,值得大家评阅:Unixbench 测试套件缺陷深度分析

Process Creation

就是不停调用fork函数,创建进程,并立马退出,成功一次计数+1。

Shell Scripts

通过fork函数,创建进程,不停地执行一个脚本, 执行成功一次+1. 所谓Shell Scripts (1 concurrent) 一个并发是指传递给脚本:pgms/multi.sh 参数是1,同样Shell Scripts (8 concurrent) ,传递给脚本的参数是8,同时8个子任务并发执行。

System Call Overhead

本意是想计算进入离开操作系统的开销,进入离开一次计数+1,在10秒内的执行次数. 实际执行的效果是fork子进程,waitpid函数后退出,计数+1

上述把UnixBench的默认实现都介绍了下,很简单,但很有意思!

目录
相关文章
|
存储 弹性计算 架构师
云服务器基准性能测试
随着数字化的不断发展,企业 IT 上云早已是大势所趋,通常上云的第一步是选一款云服务器。然而云服务器的型号众多,如阿里云的云服务器规格就多达上百款(详见https://help.aliyun.com/document_detail/25378.html),因此在选择具体一款规格的云服务器时,通常需要对云服务器的性能做一个基准测试,然后再做一轮业务测试。本最佳实践适合利用标准的benchmark工具对云服务器的CPU、内存、网络和磁盘性能进行测试的场景。
1692 1
云服务器基准性能测试
|
6月前
|
存储 SQL 缓存
Perf Arm SPE介绍与使用
本次分享的主题是 Perf Arm-SPE 的介绍及使用,本次分享主要介绍如何在倚天 710 平台上利用 Arm-SPE 特性定位伪共享问题、分析内存访问、分析指令延时以及监控访存延时等功能。 1. 背景介绍 2. Arm SPE的原理 3. Arm SPE在倚天服务器上的应用 4. Arm SPE 更多特性与功能的探索
449 0
|
传感器 Linux 测试技术
xenomai 在X86平台下中断响应时间测试
该文讨论了实时操作系统中断响应时间的重要性,并介绍了x86中断机制和Xenomai的中断管理,包括硬件中断和虚拟中断的处理。Xenomai通过I-Pipe确保实时性,中断优先级高的Xenomai先处理中断。文中还提到了中断响应时间的测试设计,分别针对I-Pipe内核间虚拟中断和硬件中断进行了测试,并给出了在不同负载下的测试结果。
276 0
xenomai 在X86平台下中断响应时间测试
|
存储 缓存 测试技术
一种提高Unixbench测试分数的方法
一种提高Unixbench测试分数的方法
3370 0
一种提高Unixbench测试分数的方法
|
编译器 数据中心 开发者
安谋科技(Arm China)别再平:Arm Neoverse 软件生态介绍
2023年8月15日,系列课程第二节《Arm Neoverse 软件生态介绍》正式上线,由安谋科技(Arm China)高级软件经理别再平主讲,内容涵盖:Arm Neoverse 介绍,Arm Neoverse 软件生态系统,Arm Neoverse 软件迁移。
安谋科技(Arm China)别再平:Arm Neoverse 软件生态介绍
|
监控 Linux
通过msr-tools读取CPU寄存器的值
通过msr-tools工具包可以用来来读取或写MSR寄存器值。 MSR是Model Specific Register的全称。 MSR是为了设置CPU 的工作环境和标示CPU 的工作状态,包括温度控制,性能监控等     1.
7215 0
|
SQL 存储 安全
使用 HammerDB 对 Citus 和 Postgres 进行 Benchmark,每分钟200万新订单处理测试(官方博客)
HammerDB 为您提供的用于比较基准运行的主要数字称为 NOPM(每分钟新订单数)。 HammerDB 使用 NOPM 而不是 TPS(每秒事务数),以使 HammerDB 支持的不同数据库之间的数量具有可比性。
968 0
使用 HammerDB 对 Citus 和 Postgres 进行 Benchmark,每分钟200万新订单处理测试(官方博客)
|
弹性计算 固态存储 Linux
【ECS测评拓展】横向对比其他服务器 unixbench测试
一时兴起用手头上不同的三种云/虚拟服务器简单跑个分数,纯当娱乐大师了哈!
1802 2
【ECS测评拓展】横向对比其他服务器 unixbench测试