UnixBench的实现介绍

简介: 很多用户都用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的默认实现都介绍了下,很简单,但很有意思!

目录
相关文章
|
JavaScript 前端开发 API
React 和 Vue的优缺点
React 和 Vue的优缺点
700 6
|
监控 调度 开发工具
IO神器blktrace使用介绍
## 前言 1. blktrace的作者正是block io的maintainer,开发此工具,可以更好的追踪IO的过程。 2. blktrace 结合btt可以统计一个IO是在调度队列停留的时间长,还是在硬件上消耗的时间长,利用这个工具可以协助分析和优化问题。 ## blktrace的原理 一个I/O请求的处理过程,可以梳理为这样一张简单的图: ![](http://image
21635 0
|
2月前
|
缓存 人工智能 芯片
拆开“超节点”的伪装:没有内存统一编址,仍是服务器堆叠
当万亿参数大模型成为常态,AI“军备竞赛”已升级为系统级对决。“超节点”应运而生,但真伪之别在于是否实现“内存统一编址”——唯有打破通信墙、构建全局地址空间,才能让集群如单机般高效协同。缺此核心,皆为伪超节点。
299 1
|
8月前
|
存储 机器学习/深度学习 人工智能
GPU云存储性能:加速AI与高性能计算的关键
在人工智能(AI)、机器学习(ML)和高性能计算(HPC)飞速发展的今天,数据存储和处理的效率已成为决定项目成败的关键因素。传统的云存储方案往往无法满足GPU密集型工作负载的需求,而GPU云存储性能的优化正成为企业提升计算效率、降低延迟的核心突破口。本文将深入探讨GPU云存储性能的重要性、关键技术及优化策略,助您在数据驱动的竞争中占据先机。
|
5月前
|
人工智能 安全 调度
当“超节点”成为算力新秩序,openEuler重构数智基础设施
随着AI迈向规模化应用,大模型算力需求激增,传统架构难以为继。超节点应运而生,打破“算力孤岛”,实现资源统一调度。openEuler携手产业伙伴,打造全球首个面向超节点的操作系统,推动国产系统从“替代”走向“引领”。2025年,操作系统大会释放强信号:AI与算力深度融合,openEuler 24.03 LTS SP3将于年底上线,2026年或成商业化元年。通过全局资源抽象、异构融合、低时延通信等能力,操作系统正成为智能时代的“神经中枢”。数千企业、数万开发者共建生态,openEuler装机量将破1600万套,加速AI普惠落地,重塑全球算力新格局。
306 11
|
存储 数据采集 大数据
Flink实时湖仓,为汽车行业数字化加速!
本文由阿里云计算平台产品专家李鲁兵(云觉)分享,聚焦汽车行业大数据应用。内容涵盖市场趋势、典型大数据架构、产品市场地位及能力解读,以及典型客户案例。文章详细介绍了新能源汽车市场的快速增长、大数据架构分析、实时湖仓方案的优势,以及Flink和Paimon在车联网中的应用案例。
939 8
Flink实时湖仓,为汽车行业数字化加速!
|
存储 并行计算 算法
CUDA统一内存:简化GPU编程的内存管理
在GPU编程中,内存管理是关键挑战之一。NVIDIA CUDA 6.0引入了统一内存,简化了CPU与GPU之间的数据传输。统一内存允许在单个地址空间内分配可被两者访问的内存,自动迁移数据,从而简化内存管理、提高性能并增强代码可扩展性。本文将详细介绍统一内存的工作原理、优势及其使用方法,帮助开发者更高效地开发CUDA应用程序。
|
存储 缓存 测试技术
一种提高Unixbench测试分数的方法
一种提高Unixbench测试分数的方法
3758 0
一种提高Unixbench测试分数的方法
|
存储 Unix C语言
C语言进程(第三章,exec函数族,execl,execlp,execle,execv,execvp,execve)
C语言进程(第三章,exec函数族,execl,execlp,execle,execv,execvp,execve)
1075 0
|
应用服务中间件 测试技术 Linux
Nginx 实战系列之一:Nginx 压测方法论和性能指标
Nginx 实战系列之一:Nginx 压测方法论和性能指标

热门文章

最新文章