赞
踩
Lmbench
是一款简易可以移植的内存测试工具,其主要功能有,带宽测评(读取缓存文件、拷贝内存、读/写内存、管道、TCP),延时测评(上下文切换、网络、文件系统的建立和删除、进程创建、信号处理、上层系统调用、内存读入反应时间)等功能。
官网地址:http://www.bitmover.com/lmbench/
下载连接:lmbench-3.0
imaginemiracle:Downloads$ unzip lmbench-3.0-a9.zip
需要注意的是,目前解压出的 lmbench
中所有文件都不可被执行,当直接执行 make
编译后将会看到类似有 Permission denied
等一系列错误。
这里首先需要更改所有文件的权限:
imaginemiracle:Downloads$ sudo chmod 777 -R lmbench-3.0-a9/
进入 lmbench
目录,其目录结构如下。
imaginemiracle:Downloads$ cd lmbench-3.0-a9/
imaginemiracle:lmbench-3.0-a9$ ls
ACKNOWLEDGEMENTS CHANGES COPYING doc Makefile results src
bin ChangeSet COPYING-2 hbench-REBUTTAL README scripts
执行 make results
,执行后将会有以下选项提示需要设置:
scal load
项;1
,表示允许作业调度;1
;4
倍的 cache size
,该值越大结果越精确,同时运行时间越长;ALL / HARWARE / OS / DEVELOPMENT
,默认选 all
;设置完成后测试程序开始运行,需要注意运行时间较久,需耐心等待,或先做其他事情至少 10 min
后再看。
执行 make see
查看运行结果,若只出现两行命令,显示运行结果输出到了 summary.out
文件中,则直接查看该文件即可。cat ./results/summary.out
。
将会看到如下输出:
输出结果中开始显示系统的基本参数信息。
其中:
Lmbench
数目。如下输出结果单位均为 us
,数值越小表示性能越好。
getppid
需要的时间;/dev/zero
读取一个字节的时长 t1
,写一个字节到 /dev/null
的时长 t2
,t1、t2
取平均值即为该项结果;stat
一个文件(即得到一个文件的信息)所需时长;open
一个文件接着再 close
掉该文件一共所用时间(不包含读目录和节点的时间);TCP
网络连接选择 100
个文件描述符所消耗的时间;install signal
所耗时长;handler signal
所耗时长;fork
一个完全相同的 process
,并把原来的 process
关掉一共所消耗的时间;shell
进程的工作过程:fork
一个新进程执行新命令消耗的时间。fork
一个进程,同时询问系统 shell
来找到并运行一个新程序所用时间。如下输出结果单位均为 ns
,数值越小表示性能越好。
(1) 整型计算
(2) 无符号整型计算
(3) 浮点型计算
(4) 双精度浮点型计算
如下输出结果单位均为 us
,数值越小表示性能越好。
多个进程用 unix pipe
环连接起来,每个进程从自己的管道中读取 token
,执行任务,然后将 token
写给下一个进程。
context swithing
时间包括:切换进程的时间,加上恢复进程所有状态所用的时间(包含恢复 cache
状态)。
size
为 0
(不执行任何任务),进程数为 2
时上下文切换所消耗的时间;size
为 16K
(执行任务),进程数为 2
时上下文切换所消耗的时间;之后的测试项以此类推。
如下输出结果单位均为 us
,数值越小表示性能越好。
size
为 0
(不执行任何任务),进程数为 2
时上下文切换所消耗的时间;hot potato
测试,两个没有具体任务的进程之间使用 pipe
通信,一个 token
在两个进程间来回传递,传递一个来回所消耗时长的平均值;Pipe
测试项,但进程间通信使用的是 socket
通信;Pipe
测试项,但进程间通信使用的是 UDP/IP
通信;Pipe
测试项,但进程间通信使用的是 sun RPC
通信,默认情况下,RPC
采用 UDP
协议传输;Pipe
测试项,但进程间通信使用的是 TCP/IP
通信;Pipe
测试项,但进程间通信使用的是 sun RPC
通信,指定 RPC
采用 TCP
协议传输;socket
描述符和建立连接所用时间。如下输出结果单位均为 us
,数值越小表示性能越好。
0K
文件创建所用时间;0K
文件删除所用时间;10K
文件创建所用时间;10K
文件删除所用时间;n
个字节 mmap
到内存,然后 unmap
,并记录每次 mmap
和 unmap
共消耗的时间,去每次消耗时间的最大值;100
个文件描述符配置 select
的时间。如下输出结果单位均为 MB/s
,数值越大表示性能越好。
pipe
,pipe
的每个 chunk
为 64K
,通过该管道移动 50MB
数据所消耗的时间;unix stream socket
连接,每个 chunk
为 64K
,通过该 socket
传输 10MB
数据所用的时间;Pipe
测试项,但进程间使用 TCP/IP socket
通信,传输数据量为 3MB
;mmap
到内存中,从内存中读文件并将其汇总一起所用时间;do bw_mem $i bcopy
,从指定内存区域拷贝指定数量的字节内容到另一个指定内存区域的速度;do bw_mem %i fcp
,把数据从磁盘的一个位置拷贝到另一个位置所用的时间;bw_mem $i frd
,累加数组中的整数值,测试把数据读入 processor
的带宽;do bw_mem $i fwr
,把整数数组的每个成员设置为 1
,测试写数据到内存的带宽。如下输出结果单位均为 ns
,数值越小表示性能越好。
本地测试执行 lat_mem_rd
,将整数数组中每第 4
个元素的值累加起来;测试的是读数据到 processor
的带宽。
L1
和 L2
近似,会显示 “No L1 cache?”
L2
和 Main Mem
近似,会显示 “No L2 cache?”
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。