仓库在这里:[kdlucas/byte-unixbench][1] ``` git clone https://github.com/kdlucas/byte-unixbench.git ``` 克隆后进入目录下, 直接运行`./Run`, 脚本会先进行编译, 编译完成后自动运行, 这里小陌遇到了很多坑, 首先就是依赖问题, 咱也不知道要哪些依赖, 索性直接运行, 看报错信息吧 ### 安装测试环境 1. 首先`gcc`是必须有的 ``` yum install -y gcc ``` 2. 缺少`X11/Xlib.h` ``` yum install -y libx11-devel yum install libX11-devel --nogpg ``` 3. 缺少`GL/gl.h ` ``` # 安装这2个 OpenGL 核心库就可以了 yum install mesa-libGL-devel mesa-libGLU-devel # 可以选择安装 OpenGL Utility ToolKit yum install freeglut-devel ``` 4. 终极报错 ``` undefined reference to `sin' undefined reference to `cos' ``` 由于 ubgears.c 中会用到数学函数, 而实际运行的时候找不到对应的数学函数, 只需要在编译时显示调用函数库就可以了, 修改 Makefile 中的 GL_LIBS 后添加`-lm` ``` GL_LIBS = -lm -lGL -lXext -lX11 ``` 最后使用`./Run`命令运行应该没有问题了 另外一般 VPS 主机都是没有显卡的, 所以测试显卡的意义不大, 可以不进行测试, 在 Makefile中将图形测试部分注释掉 ``` # GRAPHIC_TESTS = defined ``` ### 测试项目介绍 **Dhrystone 2 using register variables** 此项用于测试 string handling,因为没有浮点操作,所以深受软件和硬件设计(hardware and software design)、编译和链接(compiler and linker options)、代码优化(code optimazaton)、对内存的cache(cache memory)、等待状态(wait states)、整数数据类型(integer data types)的影响。 **Double-Precision Whetstone** 这一项测试浮点数操作的速度和效率。这一测试包括几个模块,每个模块都包括一组用于科学计算的操作。覆盖面很广的一系列 c 函数:sin,cos,sqrt,exp,log 被用于整数和浮点数的数学运算、数组访问、条件分支(conditional branch)和程序调用。此测试同时测试了整数和浮点数算术运算。 **Execl Throughput** 此测试考察每秒钟可以执行的 execl 系统调用的次数。 execl 系统调用是 exec 函数族的一员。它和其他一些与之相似的命令一样是 execve() 函数的前端。 **File copy** 测试从一个文件向另外一个文件传输数据的速率。每次测试使用不同大小的缓冲区。这一针对文件 read、write、copy 操作的测试统计规定时间(默认是 10s)内的文件 read、write、copy 操作次数。 **Pipe Throughput** 管道(pipe)是进程间交流的最简单方式,这里的 Pipe throughtput 指的是一秒钟内一个进程可以向一个管道写 512 字节数据然后再读回的次数。需要注意的是,pipe throughtput 在实际编程中没有对应的真实存在。 **Pipe-based Context Switching** 这个测试两个进程(每秒钟)通过一个管道交换一个不断增长的整数的次数。这一点很向现实编程中的一些应用,这个测试程序首先创建一个子进程,再和这个子进程进行双向的管道传输。 **Process Creation** 测试每秒钟一个进程可以创建子进程然后收回子进程的次数(子进程一定立即退出)。process creation 的关注点是新进程进程控制块(process control block)的创建和内存分配,即一针见血地关注内存带宽。一般说来,这个测试被用于对操作系统进程创建这一系统调用的不同实现的比较。 **System Call Overhead** 测试进入和离开操作系统内核的代价,即一次系统调用的代价。它利用一个反复地调用 getpid 函数的小程序达到此目的。 **Shell Scripts** 测试一秒钟内一个进程可以并发地开始一个 shell 脚本的 n 个拷贝的次数,n 一般取值 1,2,4,8。(我在测试时取 1, 8)。这个脚本对一个数据文件进行一系列的变形操作(transformation)。 [1]: https://github.com/kdlucas/byte-unixbench Loading... 仓库在这里:[kdlucas/byte-unixbench][1] ``` git clone https://github.com/kdlucas/byte-unixbench.git ``` 克隆后进入目录下, 直接运行`./Run`, 脚本会先进行编译, 编译完成后自动运行, 这里小陌遇到了很多坑, 首先就是依赖问题, 咱也不知道要哪些依赖, 索性直接运行, 看报错信息吧 ### 安装测试环境 1. 首先`gcc`是必须有的 ``` yum install -y gcc ``` 2. 缺少`X11/Xlib.h` ``` yum install -y libx11-devel yum install libX11-devel --nogpg ``` 3. 缺少`GL/gl.h ` ``` # 安装这2个 OpenGL 核心库就可以了 yum install mesa-libGL-devel mesa-libGLU-devel # 可以选择安装 OpenGL Utility ToolKit yum install freeglut-devel ``` 4. 终极报错 ``` undefined reference to `sin' undefined reference to `cos' ``` 由于 ubgears.c 中会用到数学函数, 而实际运行的时候找不到对应的数学函数, 只需要在编译时显示调用函数库就可以了, 修改 Makefile 中的 GL_LIBS 后添加`-lm` ``` GL_LIBS = -lm -lGL -lXext -lX11 ``` 最后使用`./Run`命令运行应该没有问题了 另外一般 VPS 主机都是没有显卡的, 所以测试显卡的意义不大, 可以不进行测试, 在 Makefile中将图形测试部分注释掉 ``` # GRAPHIC_TESTS = defined ``` ### 测试项目介绍 **Dhrystone 2 using register variables** 此项用于测试 string handling,因为没有浮点操作,所以深受软件和硬件设计(hardware and software design)、编译和链接(compiler and linker options)、代码优化(code optimazaton)、对内存的cache(cache memory)、等待状态(wait states)、整数数据类型(integer data types)的影响。 **Double-Precision Whetstone** 这一项测试浮点数操作的速度和效率。这一测试包括几个模块,每个模块都包括一组用于科学计算的操作。覆盖面很广的一系列 c 函数:sin,cos,sqrt,exp,log 被用于整数和浮点数的数学运算、数组访问、条件分支(conditional branch)和程序调用。此测试同时测试了整数和浮点数算术运算。 **Execl Throughput** 此测试考察每秒钟可以执行的 execl 系统调用的次数。 execl 系统调用是 exec 函数族的一员。它和其他一些与之相似的命令一样是 execve() 函数的前端。 **File copy** 测试从一个文件向另外一个文件传输数据的速率。每次测试使用不同大小的缓冲区。这一针对文件 read、write、copy 操作的测试统计规定时间(默认是 10s)内的文件 read、write、copy 操作次数。 **Pipe Throughput** 管道(pipe)是进程间交流的最简单方式,这里的 Pipe throughtput 指的是一秒钟内一个进程可以向一个管道写 512 字节数据然后再读回的次数。需要注意的是,pipe throughtput 在实际编程中没有对应的真实存在。 **Pipe-based Context Switching** 这个测试两个进程(每秒钟)通过一个管道交换一个不断增长的整数的次数。这一点很向现实编程中的一些应用,这个测试程序首先创建一个子进程,再和这个子进程进行双向的管道传输。 **Process Creation** 测试每秒钟一个进程可以创建子进程然后收回子进程的次数(子进程一定立即退出)。process creation 的关注点是新进程进程控制块(process control block)的创建和内存分配,即一针见血地关注内存带宽。一般说来,这个测试被用于对操作系统进程创建这一系统调用的不同实现的比较。 **System Call Overhead** 测试进入和离开操作系统内核的代价,即一次系统调用的代价。它利用一个反复地调用 getpid 函数的小程序达到此目的。 **Shell Scripts** 测试一秒钟内一个进程可以并发地开始一个 shell 脚本的 n 个拷贝的次数,n 一般取值 1,2,4,8。(我在测试时取 1, 8)。这个脚本对一个数据文件进行一系列的变形操作(transformation)。 [1]: https://github.com/kdlucas/byte-unixbench 最后修改:2023 年 08 月 02 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 1 如果觉得我的文章对你有用,请随意赞赏