LMbench单独执行某一个组件 | benchmark教程

LMbench官网 => https://lmbench.sourceforge.net/man/

下载源码,编译得到的Benchmark是由很多文件组成的,上面的链接中官方给出了每个组件的各参数的含义,可以对照着修改使用,以达到测试在某个组件上表现的作用。

在这里插入图片描述

bw_mem为例:

名字

bw_mem - 时间内存带宽

格式

bw_mem_cp [ -P ] [ -W ] [ -N ] size rd|wr|rdwr|cp|fwr|frd|bzero|bcopy [align]

描述

bw_mem分配两倍的指定内存量,将其归零,然后将前半部分的复制时间定时到后半部分。结果以每秒移动的兆字节为单位报告。
大小规范可能以“k”或“m”结尾,表示千字节 (* 1024) 或兆字节 (* 1024 * 1024)。

输出

输出格式为 CB“%0.2f %.2f\n”,兆字节,megabytes_per_second,即
8.00 25.33

bw_mem中有九种不同的内存基准测试。 它们各自测量的读取、写入或复制数据的方法略有不同。

  • rd
    测量将数据读入处理器的时间。它计算整数值数组的总和。它访问每四个单词。 wr
    测量将数据写入内存的时间。它为整

<think>我们将使用lmbench工具来测试系统性能。lmbench一个用于评估系统性能的基准测试套件,它可以测试带宽、延迟、处理器、内存、网络等性能指标。 由于lmbench一个交互式的工具,通常需要用户手动配置和运行。但我们可以编写一个自动化脚本来自动运行lmbench并收集结果。 步骤: 1. 确保lmbench已经安装在系统上。如果没有,需要先安装。 2. lmbench的典型运行方式是通过运行`make`和`make results`来编译和运行测试,然后通过`make see`查看结果。但为了自动化,我们可以直接运行`bin/lmbench`目录下的程序,并使用配置参数。 然而,lmbench通常需要一个配置文件来指定测试参数。我们可以使用默认配置,也可以生成一个配置文件。 自动化脚本思路: - 检查lmbench是否安装,如果没有则提示用户安装。 - 进入lmbench目录(假设已经下载并解压) - 编译lmbench(如果还没有编译) - 生成一个配置文件(使用默认值或者我们指定的参数) - 运行测试 - 解析结果并输出 注意:lmbench在运行过程中会询问一些问题(如内存大小、是否运行所有测试等),我们可以通过预先配置好的配置文件或者使用非交互模式(如果支持)来避免交互。 实际上,lmbench提供了非交互模式,可以通过`config-run`脚本自动运行,并使用一个配置文件(如`CONFIG`)作为输入。 具体步骤: 1. 下载lmbench源码(如果未安装) 2. 解压并进入目录 3. 编译 4. 创建配置文件(例如使用默认配置,但修改一些参数以适应非交互模式) 5. 运行测试 6. 收集结果 由于lmbench的交互性,我们可以使用`yes`命令和管道来回答一些问题,或者使用`-B`选项(如果支持)来使用批处理模式。 但是,lmbench的最新版本(3.0)中,可以使用`make results`来自动运行,它会使用`CONFIG`文件中的配置。因此,我们可以在运行前生成一个`CONFIG`文件。 以下是一个示例脚本,假设我们已经在当前目录下载了lmbench源码(版本3.0)。 注意:这个脚本需要在具有编译环境的Linux系统上运行,并且需要root权限(因为部分测试需要)。 脚本步骤: 1. 检查并安装必要的编译工具 2. 下载lmbench(如果不存在) 3. 解压 4. 进入目录 5. 编译 6. 创建配置文件(使用默认值,并设置为非交互模式) 7. 运行测试 8. 收集结果 由于lmbench的配置需要根据系统不同而调整,我们可以使用默认配置,然后通过脚本自动回答配置问题。 在lmbench目录中,有一个脚本`config-run`,它用于配置和运行。我们可以通过管道传递答案。 另一种方法是使用`make results`,它会读取`CONFIG`文件。我们可以先创建一个`CONFIG`文件。 这里我们选择创建`CONFIG`文件的方式。 默认的配置选项可以通过运行一次交互式配置然后保存`CONFIG`文件来获取,但我们希望自动化,因此我们将使用一个预定义的`CONFIG`文件。 我们可以使用以下内容作为`CONFIG`文件(示例配置,可能需要根据实际情况调整): ``` # 以下是一个示例配置,我们设置为使用MB为单位,并选择一些测试 DEFAULT_EMAIL=your@email.com DEFAULT_OS=Linux DEFAULT_COMPILER=gcc DEFAULT_DISK=/dev/sda DEFAULT_NETWORK=eth0 DEFAULT_REMOTE=localhost DEFAULT_BENCHMARK=ALL DEFAULT_FASTMEM=NO DEFAULT_OS=Linux DEFAULT_MAIL=no DEFAULT_DISKS=NO DEFAULT_PROCESSOR=NO DEFAULT_OPERATING_SYSTEM=NO DEFAULT_CSHELL=/bin/bash DEFAULT_OUTPUT=results/`date +%Y%m%d`/ DEFAULT_MEMORY= # 可以留空,lmbench会自动检测 DEFAULT_MHZ= # 留空自动检测 DEFAULT_FS=/tmp DEFAULT_MEMSIZE= # 可以设置为系统内存的一部分,例如`128`表示128MB ``` 但是,更简单的方法是使用lmbench自带的默认配置生成。我们可以通过运行`make config`来生成默认配置,但它是交互式的。因此,我们可以使用`yes`命令来回答默认值。 然而,`make config`会询问很多问题,我们可以用以下方式回答: - 对于大多数问题,直接按回车使用默认值。 - 但是,有一些问题需要特定回答,比如邮件地址(可以随便填),是否运行所有测试(填yes),等等。 我们可以编写一个expect脚本来处理交互,但为了简单,我们使用预填充的答案。 实际上,lmbench的`config-run`脚本支持从文件读取配置,我们可以这样: 在lmbench目录下,运行: `./config-run -B config-file` 但是,我们也可以使用以下命令来非交互运行: `yes "" | make config` 不过,这并不能完全解决问题,因为有些问题需要非默认答案。因此,我们采用生成一个CONFIG文件的方式。 这里提供一个简化的CONFIG文件内容(适用于大多数测试,使用默认值): ``` DEFAULT_EMAIL=test@example.com DEFAULT_OS=Linux DEFAULT_COMPILER=gcc DEFAULT_DISK=/dev/sda DEFAULT_NETWORK=eth0 DEFAULT_REMOTE=localhost DEFAULT_BENCHMARK=ALL DEFAULT_FASTMEM=NO DEFAULT_OS=Linux DEFAULT_MAIL=no DEFAULT_DISKS=NO DEFAULT_PROCESSOR=NO DEFAULT_OPERATING_SYSTEM=NO DEFAULT_CSHELL=/bin/bash DEFAULT_OUTPUT=results/$(date +%Y%m%d)/ DEFAULT_MEMORY= DEFAULT_MHZ= DEFAULT_FS=/tmp DEFAULT_MEMSIZE=128 ``` 注意:`DEFAULT_MEMSIZE`是用于内存测试的内存大小(MB),建议设置为系统内存的一半左右,但不要超过空闲内存。这里设为128MB,如果系统内存较小,可以调整。 然后,我们可以运行`make results`,它会读取CONFIG文件。 因此,自动化脚本如下: 注意:这个脚本需要以root权限运行(因为部分测试需要root权限)。 我们将脚本分为几个步骤: 1. 安装依赖 2. 下载lmbench 3. 解压 4. 进入目录 5. 编译 6. 创建CONFIG文件 7. 运行测试 8. 收集结果 由于lmbench的测试可能需要一些时间,请耐心等待。 以下是具体的脚本代码(假设使用lmbench 3.0):</think>下面是一个基于 `lmbench` 的性能测试自动化脚本,该脚本会安装依赖、编译 `lmbench`、运行测试并生成格式化报告: ```bash #!/bin/bash # lmbench自动化测试脚本 # 需要root权限运行 # 检查root权限 if [ "$(id -u)" != "0" ]; then echo "错误: 此脚本需要root权限运行" >&2 exit 1 fi # 安装依赖 echo "安装依赖包..." apt-get update > /dev/null apt-get install -y build-essential wget gnuplot > /dev/null # 下载lmbench WORK_DIR="/tmp/lmbench_test" mkdir -p $WORK_DIR cd $WORK_DIR echo "下载lmbench源码..." wget -q https://sourceforge.net/projects/lmbench/files/latest/download/lmbench-3.0-a9.tgz # 解压并编译 echo "编译lmbench..." tar xf lmbench-3.0-a9.tgz cd lmbench-3.0-a9 make build > /dev/null 2>&1 # 生成配置文件 echo "生成测试配置..." cat << EOF > CONFIG #!/bin/sh # 自动生成的配置文件 DEFAULT_EMAIL=test@localhost DEFAULT_OS=Linux DEFAULT_COMPILER=gcc DEFAULT_DISK=/dev/sda DEFAULT_NETWORK=eth0 DEFAULT_REMOTE=localhost DEFAULT_BENCHMARK=ALL DEFAULT_FASTMEM=NO DEFAULT_OS=Linux DEFAULT_MAIL=no DEFAULT_CSHELL=/bin/bash DEFAULT_OUTPUT=$WORK_DIR/results DEFAULT_MEMORY= # 自动检测 DEFAULT_MHZ= # 自动检测 EOF # 运行测试 echo "开始性能测试 (可能需要10-30分钟)..." make results 2>&1 | tee $WORK_DIR/test.log # 生成报告 echo "生成测试报告..." make see 2>&1 | grep -E 'latency|bandwidth|process' > $WORK_DIR/summary.txt # 格式化输出结果 echo "" echo "==================== 性能测试结果摘要 ====================" cat $WORK_DIR/summary.txt echo "========================================================" echo "" echo "详细结果保存在: $WORK_DIR/results/" echo "原始日志文件: $WORK_DIR/test.log" ``` ### 脚本功能说明: 1. **依赖安装**: - 自动安装编译工具、wget和gnuplot - 需要root权限执行系统级操作 2. **lmbench获取与编译**: - 从SourceForge下载最新源码 - 自动解压并编译整个测试套件 3. **自动化配置**: - 生成预配置的CONFIG文件 - 设置测试所有关键指标(CPU、内存、磁盘、网络) - 结果输出到临时目录 4. **测试执行**: - 运行全套性能测试(包括) - 处理器延迟/L1/L2缓存延迟 - 内存读写带宽 - 管道/进程创建开销 - 上下文切换时间 - 文件系统操作延迟 - TCP/UDP网络性能 5. **结果处理**: - 自动提取关键指标到summary.txt - 保留完整日志供后续分析 - 输出格式化结果摘要 ### 使用说明: 1. 保存为`run_lmbench.sh` 2. 添加执行权限:`chmod +x run_lmbench.sh` 3. 以root运行:`sudo ./run_lmbench.sh` ### 典型输出示例: ``` ==================== 性能测试结果摘要 ==================== Process fork+exit: 112.4 microseconds Process fork+execve: 231.7 microseconds Pipe latency: 5.12 microseconds UDP latency: 28.1 microseconds TCP latency: 31.4 microseconds File read latency: 15.3 microseconds Context switching: 1.82 microseconds L1 cache latency: 0.8 nanoseconds L2 cache latency: 4.2 nanoseconds Memory read bandwidth: 12.8 GB/s Memory write bandwidth: 8.7 GB/s ======================================================== ``` ### 结果解读指南: 1. **延迟指标** (单位:微秒/纳秒) - 值越小性能越好 - 重点关注:上下文切换、管道/UDP/TCP延迟 2. **带宽指标** (单位:MB/s或GB/s) - 值越大性能越好 - 重点关注:内存读写带宽 3. **进程操作**: - 反映系统创建进程的开销 - 典型值范围:100-500微秒 4. **缓存性能**: - L1/L2缓存延迟反映CPU内存子系统效率 - 现代CPU通常在0.3-10纳秒范围 ### 注意事项: 1. 测试需要10-30分钟(取决于系统性能) 2. 网络测试需要确保网络接口可用 3. 内存测试可能需要较大空闲内存 4. 完整结果位于`/tmp/lmbench_test/results/`
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猿知

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值