lmbench基本的部署与使用

来源:互联网 发布:淘宝自动提取卡密 编辑:程序博客网 时间:2024/04/28 04:44

一、lmbench的编译与安装

1.1 获取lmbench源码

    开源工具lmbench可以进行对系统进行多项性能测试,如任务切换、IO、内存等等。可以从http://www.bitmover.com/lmbench/get_lmbench.html下载工具包源码lmbench3.tar.bz2,下载后解压为lmbench3/目录,测试工具源码及框架都在这里。

1.2 编译、安装与测试

1.2.1 编译

    在编译前我们需要修改lmbench/src/Makefile文件,不然会编译失败。修改如下:

    将

$O/lmbench : ../scripts/lmbench bk.ver
    改为
$O/lmbench : ../scripts/lmbenc
1)本地编译
    进入到lmbench3/目录,执行:
make OS=$OS  build
    即可。
    编译完成后生成的文件都放在 lmbench3/bin/$OS 这个目录下,$OS的值我们可以自己指定。
    默认情况下“$OS”的值与编译lmbench时的环境有关:OS="${MACHINE}-${SYSTEM}"。其中MACHINE则是编译lmbench工具时的机器名称,即用“uname -m”取得;SYSTEM表示我们的操作系统,可以通过“uname -s”拼接而成。

2)交叉编译
    以arm单板为例进行说明。执行如下编译命令:

make OS=$OS CC=xxxx/arm-linux-gnueabi-gcc AR=xxxx/arm-linux-gnueabi-ar build
    这里的OS含义与设置方法与1)相同,编译后生成的文件也都在lmbench3/bin/$OS 目录下。

1.2.2 改造与安装

1)改造
    编译完成后会在 lmbench3/bin/$OS目录下生成一个lmbench文件,这个文件包含了所有的测试条目。在某些情况下,我们只想只想测试、关注特定的项目,这时可以通过修改此文件,去掉我们不需要测试的项目即可。
2)安装
    编译完成后,我们只需要将lmbench3/ 整个目录放到我们的测试环境机器上即可。即本地编译直接就可以测试,交叉编译需要拷贝到待测开发环境。

1.2.3配置

    在进行测试前需要进行配置,以配置测试参数以及获取测试环境的信息(如测试size、cpu频率等等),配置脚本在 lmbench3/scripts 目录下,名字叫config-run。
# cd lmbench3/scripts/* config-run会进行一些配置,这个需要我们根据自己的需求和单板实际情况进行配置 */# env OS="$OS" ./config-run        /* "OS"为编译lmbench3后在bin目录下生成的目录*/ # export PATH=$PATH:/lmbench3/bin/$OS/* 需要指定可执行文件的搜索路径 */

1.2.4测试与结果

    脚本lmbench/results会启动我们的测试:
# env OS="$OS"  BENCHMARK_OS=YES ./results/* BENCHMARK_OS 可选 */
    测试完毕后其结果在lmbench3/results/$OS 目录下。

二、测试结果

2.1 环境配置结果

    在上面的1.2.4步骤测试完毕后,会在lmbench3/results/$OS目录下生成测试结果,测试结果文件的名字与我们操作系统的名字有关。而所有的环境配置会在结果文件中开头打印出来,部分信息类似如下:
[LMBENCH_VER: ][BENCHMARK_HARDWARE: NO][BENCHMARK_OS: YES][ALL: 512 1k 2k 4k 8k 16k 32k 64k 128k 256k 512k 1m 2m 4m 8m][DISKS: ][DISK_DESC: ][ENOUGH: 5000][FAST: ][FASTMEM: NO][FILE: /usr/tmp/XXX][FSDIR: /usr/tmp]

2.2 lmbench测试过程与原理

2.2.1 lmbench的测试参数

    在我们调用lmbench3/scripts/results脚本进行测试时,实际调用的是lmbench3/bin/lmbench脚本进行测试,测试中会依次执行其中的多个测试项目。
    这里用任务切换测试用例lat_ctx测试的脚本举例说明:
for size in $CTXdolat_ctx -P $SYNC_MAX -s $size $Ndone
    上面几个参数的取值(这些值和我们1.2.3配置有关)和含义:
        CTX= {0 4 8 16 32 64},表示一些时间消耗操作(进行内存操作时内存的大小);
        N = {2 4 8 16 24 32 64 96},表示进程数,整个测试会进行2、4、8…64、96个任务时的切换性能。
    其中SYNC_MAX这个参数在1.2.3步骤执行env OS="$OS" ./config-run 时由我们自己指定。

2.2.2 lmbench测试结果分析

    不同的测试用例有不同的测试结果输出格式。一般是一个二维的输出结构:
条件A条件B条件C条件a结果Aa结果Ba结果Ca条件b结果Ab结果Bb结果Cb条件c结果Ac结果Bc结果Cc
    对于性能的测试,结果一般是以微秒为单位的时间值。根据我们输入值的不同,可能会有多组输出结果。




0 0