当前位置:网站首页>内核性能分析总结
内核性能分析总结
2022-08-10 05:36:00 【刘十彡】
1.unixbench
a.测试介绍
UnixBench源于1995 年,基线系统是“George”,一个工作站:SPARCstation 20‐61,128MB RAM,Solaris2.3,此系统的指数值被设定为10,所以,如果一个系统的最后结果分数为520,意思是指此系统比基线系统运行快52 倍。
UnixBench也支持多CPU系统的测试,默认的行为是测试两次,第一次是一个进程的测试,第二次是N份测试,N等于CPU个数。这样的设计是为了以下目标:
测试系统的单任务性能
测试系统的多任务性能
测试系统并行处理的能力
UnixBench一个基于系统的基准测试工具,不单纯是CPU 内存 或者磁盘测试工具。测试结果不仅仅取决于硬件,也取决于系统、开发库、甚至是编译器。
Dhrystone测试
测试聚焦在字符串处理,没有浮点运算操作。这个测试用于测试链接器编译、代码优化、内存缓存、等待状态、整数数据类型等,硬件和软件设计都会非常大的影响测试结果。
Whetstone 测试
这项测试项目用于测试浮点运算效率和速度。这项测试项目包含若干个科学计算的典型性能模块,包含大量的C语言函数,sin cos sqrt exp和日志以及使用整数和浮点的数学操作。包含数组访问、条件分支和过程调用。
Execl Throughput测试
(execl 吞吐,这里的execl是类unix系统非常重要的函数,非办公软件的excel)
这项测试测试每秒execl函数调用次数。execl是 exec函数家族的一部分,使用新的图形处理代替当前的图形处理。有许多命令和前端的execve()函数命令非常相似。
File Copy测试
这项测试衡量文件数据从一个文件被传输到另外一个,使用大量的缓存。包括文件的读、写、复制测试,测试指标是一定时间内(默认是10秒)被重写、读、复制的字符数量。
Pipe Throughput(管道吞吐)测试
pipe是简单的进程之间的通讯。管道吞吐测试是测试在一秒钟一个进程写512比特到一个管道中并且读回来的次数。管道吞吐测试和实际编程有差距。
Pipe-based Context Switching (基于管道的上下文交互)测试
这项测试衡量两个进程通过管道交换和整数倍的增加吞吐的次数。基于管道的上下文切换和真实程序很类似。测试程序产生一个双向管道通讯的子线程。
Process Creation(进程创建)测试
这项测试衡量一个进程能产生子线程并且立即退出的次数。新进程真的创建进程阻塞和内存占用,所以测试程序直接使用内存带宽。这项测试用于典型的比较大量的操作系统进程创建操作。
Shell Scripts测试
shell脚本测试用于衡量在一分钟内,一个进程可以启动并停止shell脚本的次数,通常会测试1,2, 3, 4, 8 个shell脚本的共同拷贝,shell脚本是一套转化数据文件的脚本。
System Call Overhead (系统调用消耗)测试
这项测试衡量进入和离开系统内核的消耗,例如,系统调用的消耗。程序简单重复的执行getpid调用(返回调用的进程id)。消耗的指标是调用进入和离开内核的执行时间。
b.Run用法
Run [ -q | -v ] [-i ] [-c [-c …]] [test …]
选项说明:
-q | 不显示测试过程 |
---|---|
-v | 显示测试过程 |
-i | 执行次数,最低3次,默认10 |
-c | 每次测试并行n个copies(并行任务) |
备注:-c选项可以用来执行多次,如:
Run -c 1 -c 4表示执行两次,第一次单个copies,第二次4个copies的测试任务。
对于多cpu系统的性能测试策略,需要统计单任务,多任务及其并行的性能增强。
以4个cpu的PC为例,需要测试两次,4个CPU就是要并行执行4个copies,
Run -q -c 1 -c 4
测试结果单个并行的任务的得分为171.3,4个并行任务的得分为395.7。对比测试时需要关注这个值。
c.结果显示
参考博客:Unixbench:简介及使用 - charseki - 博客园
2.netperf网络性能
a.安装
$ wget -c "https://codeload.github.com/HewlettPackard/netperf/tar.gz/netperf-2.5.0" -O netperf-2.5.0.tar.gz
$ tar xvf netperf-2.5.0.tar.gz
$ cd netperf-netperf-2.5.0/
$ ./configure
$ make && make install
$ netperf -h #有输出说明安装成功
b.使用
1.服务器的启动
$ netserver
Starting netserver with host 'IN(6)ADDR_ANY' port '12865' and family AF_UNSPEC
$ ss -lnt #监听在12865端口
2.测试客户端的启动
$ netperf -H 192.168.1.180
MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.1.180 (192.168.1.180) port 0 AF_INET
Recv Send Send
Socket Socket Message Elapsed
Size Size Size Time Throughput
bytes bytes bytes secs. 10^6bits/sec
87380 16384 16384 10.47 86.40
吞吐量:86.4 * 10^6 bits/sec
换算一下就是 10Mbit/s(86.40/8=10.8*1000000bps=10Mbit/s)
边栏推荐
猜你喜欢
LeetCode 1351. Counting Negative Numbers in Ordered Matrices (Simple)
C陷阱与缺陷 个人阅读笔记
ASP.Net利用代码点击相应按钮来关闭当前的页面(亲测有效)
浅谈游戏中3种常用阴影渲染技术(2):阴影锥
LeetCode 938. Range Sum of Binary Search Trees (Simple)
开源游戏服务器框架NoahGameFrame(NF)服务器端环境搭建(二)
LeetCode refers to the offer 21. Adjust the order of the array so that the odd numbers are in front of the even numbers (simple)
51单片机智能蓝牙APP加油站火灾预警安防防控报警监控系统MQ2DHT11
Pico设备中的截图以及视频文件通过adb命令保存到电脑中
C#对MySQL数据库进行增删改查操作(该操作还有防止MySQL注入功能)
随机推荐
51单片机RS485远程双机多机温度采集主从机多节点蜂鸣器报警
【fiddler4】使用fiddler设置简单并发
LeetCode 94. Inorder Traversal of Binary Trees (Simple)
Common class String overview
AR Foundation Editor Remote插件使用方法
Notes for RNN and Decision Tree
每日刷题(day03)——leetcode 899. 有序队列
51单片机BH1750智能补光灯台灯光强光照恒流源LED控制系统
解析树字符串并输出中序遍历
酸阻滞树脂
mkfs.minix.c之minix_super_block.s_nzones获取解析
浅谈《帧同步网络游戏》之“框架”实现思路
常用模块封装-csv文件操作封装
Notes for Netual Network
51单片机AD590温度测量ADC0832运放2.73V减法电压变换
LeetCode 938. Range Sum of Binary Search Trees (Simple)
Explain the principle of MySql index in detail
视差映射:更逼真的纹理细节表现(上):为什么要使用视差映射
【简易笔记】PyTorch官方教程简易笔记 EP1
Deep learning TensorFlow entry environment configuration