ltp 测试流程及测试脚本分析
阅读原文时间:2021年09月29日阅读:1

(2011-03-25 18:03:53)

转载▼

标签:

ltp

linux

压力测试

杂谈

分类: linux测试

LTP介绍

一、LTP介绍
1.简介
LTP(Linux Test Project)是SGI、IBM、OSDL和Bull合作的项目,目的是为开源社区提供一个测试套件,用来验证Linux系统可靠性、健壮性、和稳定性。LTP是Linux内核和相关特点测试的一整套工具集,它力求通过自动化的测试方法改进Linux内核。
2.源码目录结构介绍
                      LTP源代码说明
INSTALL    LTP安装配置指导文档
README    描述LTP包内容的文档
CREDITS    记录对LTP有很大贡献的人
COPYING    GNU Public License
ChangeLog    描述版本的变化
ltpmenu    规划执行LTP的图形化界面接口
Makefile    LTP顶层目录的Makefile,负责编译安装pan、testcases和tools
runalltests.sh    可以顺序运行全部测试例程并且报告结果的脚本
doc/*    工程文档包含工具和库函数使用手册,描述各种测试
include/*    通用的头文件目录
lib/*    通用的库函数目录
testcases/*    包含所有运行在LTP下的测试程序和链接
testscripts/*    存放分组的测试脚本
runtest/*    为自动测试提供命令列表
pan/*    测试的驱动装置。具备随即和并行测试的能力
scratch/*    存放零碎测试的东西
tools/*    存放自动化测试脚本和辅助工具

二、LTP安装
1.下载地址
http:/ltp.sourceforge.net/(以ltp-20110228版本说明。其他版本若有不同请参考官网)
2.编译
    从官方网站下载最新的LTP测试套件包,解压后进入ltp源目录。执行make、makeinsatll命令即可。注意:“make install” 可以使用非root用户。但是在执行测试案例之前一定要使用root用户执行“IDcheck.sh”命令。在编译成功后会自动安装到/opt/ltp目录下。
[root@server20 ltp]# make            
[root@server20 ltp]# make install           
3.LTP 测试套件内容
(1)脚本
IDcheck.sh    检查系统是否缺少执行LTP测试套件所需的用户和用户组,如果缺少则为LTP测试套件创建所需的用户和用户组。
runltplite.sh    这个脚本用来测试LTP安装,也可用来对测试套件的子项目进行测试。详情参阅脚本
runltp    这个脚本能够测试LTP测试套件主要项目。其中包括:
- 硬盘 I/O 测试。
- 内存管理压力测试。
- IPC 压力测试。
- SCHED测试。
- 命令功能的验证测试。
- 系统调用功能的验证测试。
ver_linux    这个脚本是获取硬件、软件、环境信息。
runalltests.sh    测试内容同runltp。不同点在于runltp可以指定测试项进行组合测试,而runalltests.sh则会全部执行。
(2)目录
bin    存放LTP测试的一些辅助脚本
results    测试结果默认存储目录
testcases    测试项集
output    测试日志默认存储目录
share    脚本使用说明目录
runtest    测试驱动(用于链接testscripts内的测试脚本和testcases测试项目)
lib    通用的库函数目录
testscripts    列举了所有的子系统测试脚本
    adp_children.sh    sysfs.sh
    ltp-aiodio.sh    ltpstress.sh
    runpan.sh    networkstress.sh
    adp.sh    等等
(3)其他
Version    版本说明
(4)测试过程
   从一个测试命令文件中读取要测试的条目的要执行的命令行,然后等待该项测试的结束,并记录详细的测试输出。默认状态下pan会随机的选择一个命令行来运行,可以指定在同一时间要执行测试的次数。pan会记录测试产生的详细的格式复杂的输出,但它不进行数据的整理和统计,数据整理统计的工作由scanner来完成,scanner是一个测试结果分析工具,它会理解pan的输出格式,并输出成一个表格的形式来总结那些测试passed或failed。
LTP测试套件通过执行测试脚本runalltests.sh(或runltp或runltplite.sh),或/testscripts内的测试脚本调用驱动程序pan执行/testcases内的测试项目。
三、LTP使用说明
1.概述
LTP有两种测试方式。初始测试和自定义场景测试。自定义场景测试是指根据需求对拟定测试项目,自定义场景测试法使用的脚本是runltp(脚本使用方法下详),在执行runltp脚本的时,可以指定参数添加你需要的测试的项目(在/testscripts内)。初始测试是对linux系统主要项目(不是全部)进行测试。包括:
- 硬盘 I/O 测试。
- 内存管理压力测试。
- IPC 压力测试。
- SCHED测试。
- 命令功能的验证测试。
- 系统调用功能的验证测试。
初始测试的测试脚本是runalltests.sh或runltp(runltp默认执行的内容与runalltests相同)。
2.runltp命令介绍
用法:./runltp [option] [command]
-a EMAIL_TO    发送所有的报告到指定的邮箱
-c NUM_PROCS    添加后台测试CPU的进程数,默认1
-C FAILCMDFILE    失败案例存储文件
-d IMPDIR    临时存储目录,默认/tmp
-D NUM_PROCS,NUM_FILES,NUM_BYTES,CLEAN_FLA    run LTP under additional background Load on Secondary Storage (Seperate by comma)
    [NUM_PROCS   = no. of processes creating Storage Load by spinning over write()]
    [NUM_FILES   = Write() to these many files (Defaults to 1 when value 0 or undefined)]
    [NUM_BYTES   = write these many bytes (defaults to 1GB, when value 0 or undefined)]
    [CLEAN_FLAG  = unlink file to which random data written, when value 1]
-e     输出目前LTP版本的日期
-f CMDFILES    执行用户自定义的测试案例,用“ ,”隔开(CMDFILES指runtest内的驱动程序)
-g HTMLFILE    添加html格式的输出文件HTMLFILE
-h    帮助信息
-i NUM_PROCS    添加后台测试IO bus总线的进程数
-l LOGFILE    记录测试日志的文件
-m NUM_PROCS,CHUNKS,BYTES,HANGUP_FLAG     run LTP under additional background Load on Main memory (Seperate by comma)
    [NUM_PROCS   = no. of processes creating main Memory Load by spinning over malloc()]
    [CHUNKS      = malloc these many chunks (default is 1 when value 0 or undefined)]
    [BYTES       = malloc CHUNKS of BYTES bytes (default is 256MB when value 0 or undefined) ]
    [HANGUP_FLAG = hang in a sleep loop after memory allocated, when value 1]

-N    添加所有的网络测试
-n    添加后台测试网络传输
-o OUTPUTFILE    直接打印测试输出到OUTPUTFILE
-p    人为指定日志格式
-q    打印少的测试输出到屏幕
-r  LTPROOT        
-s  PATTERN    匹配PATTERN执行测试案例
-t  DURATION    给定测试执行时间设置(s,m,h,d)
-T REPETITION    重复执行测试案例
-v    打印多的测试输出到屏幕
-w CMDFILEADDR    使用wget下载用户测试案例集合。
-x INSTALL    并行执行多个测试场景
3.压力测试
在testscripts目录中含有一个测试脚本ltpstress.sh,它可以对linux系统进行
-内存管理压力测试。
-文件系统压力测试。
-数学 (浮点) 测试。
-  多线程压力测试。
-  硬盘 I/O 测试。
-  IPC (pipeio, semaphore) 测试。
-  系统调用功能的验证测试。
-  网络压力测试。
在使用ltpstress.sh脚本的之前需要对系统进行配置
-rsh必须配置完毕并在运行。
-内核支持NFS,并且安装NFS软件,通过网络测试。
-“sar”或"top"工具需要被安装,执行ltpstress时需要添加"sar"或“top”工具。
(1)ltpstress.sh命令
 参数说明 :
-d datefile    指定sar或top记录文件,默认是/tmp/ltpstress.data
-i  #(in sec)    指定sar或top快照时间间隔,默认是10s
-I  iofile    记录"iostat"结果到isofile默认是/tmp/ltpstress.iostat
-l  logfile    记录测试结果到logfile,默认是/tmp/ltpstress
-m #(in Mb)    指定最小的内存使用
-n     不对网络进行压力测试
-S    用 sar捕捉数据
-T    利用LTP修改过的top工具捕捉数据
-t duration    指定时间的设置
(2)"top"工具
使用方式:top [-] [d delay] [q] [c] [S] [s] [i] [n] [b]
说明:即时显示 process 的动态
-d    改变显示的更新速度,或是在交谈式指令列( interactive command)按d
-q    没有任何延迟的显示速度,如果使用者是有 superuser 的权限,则 top 将会以最高的优先序执行
-c    切换显示模式,共有两种模式,一是只显示执行档的名称,另一种是显示完整的路径与名称
-S    累积模式,会将己完成或消失的子行程 ( dead child process ) 的 CPU time 累积起来
-s    安全模式,将交谈式指令取消, 避免潜在的危机。
-i    不显示任何闲置 (idle) 或无用 (zombie) 的行程
-n    更新的次数,完成后将会退出 top
-b    批次档模式,搭配 "n" 参数一起使用,可以用来将 top 的结果输出到档案内

(3)"sar"工具
sar [options] [-A] [-o file] t [n]
说明:在命令行中,n 和t 两个参数组合起来定义采样间隔和次数,t为采样间隔,是必须有的参数,n为采样次数,是可选的,sar命令的选项很多,下面只列出常用选项:
-a    报告文件读写使用情况
-b    报告缓存的使用情况
-c    报告系统调用的使用情况
-d    报告磁盘的使用情况
-h    报告关于buffer使用的统计数据
-m    报告IPC消息队列和信号量的使用情况
-q    报告运行队列和交换队列的平均长度
-R    报告进程的活动情况
-r    报告没有使用的内存页面和硬盘块
-u    报告CPU的利用率
-v    报告进程、i节点、文件和锁表状态
-w    报告系统交换活动状况

四、测试案例
1.初始测试
[root@server25 ltp]# ./runalltests.sh
*******************************************************************
*******************************************************************
**                                                              **
** This script is being re-written to cover all aspects of      **
** testing LTP, which includes running all those tests which    **
** are not run by default with runltp script. Special setup     **
** in system environment will be done to run all those tests    **
** like the File System tests, SELinuxtest, etc                 **
**                                                              **
*******************************************************************
*******************************************************************
Running Default LTP…
INFO: creating /opt/ltp/results directory

    INFO: no command files were provided. Will execute the following
          runtest scenario files:

syscalls fs fs_perms_simple fsx dio io mm ipc sched math nptl pty containers fs_
bind controllers filecaps cap_bounds fcntl-locktests connectors admin_tools time
rs power_management_tests numa hugetlb commands hyperthreading

If some fields are empty or look unusual you may have an old version.
Compare to the current minimal requirements in Documentation/Changes.

NFS-Asianux Server
LSB_VERSION="3.1"
DISTRIB_ID="AsianuxServer"
DISTRIB_RELEASE="3"
Red Hat Enterprise Linux Server release 5.3 (Tikanga)
Linux server25.nfs 2.6.18-128.7NFS #1 SMP Thu Aug 26 10:13:03 EDT 2010 x86_64 x8
6_64 x86_64 GNU/Linux

Gnu C                  gcc (GCC) 4.1.2 20080704 (Asianux 3.0 4.1.2-44)
Gnu make               3.81
util-linux             pre7)
mount                  pre7)
modutils               3.3-pre2
e2fsprogs              1.39
PPP                    2.4.4
isdn4k-utils           3.9
Linux C Library        > libc.2.5
Dynamic linker (ldd)   2.5
Procps                 3.2.7
Net-tools              1.60
iproute2              iproute2-ss061002
Kbd                    1.12
Sh-utils               5.97
Modules Loaded         i915 drm ipv6 xfrm_nalgo crypto_api dm_mirror dm_multipat
h scsi_dh video hwmon backlight sbs i2c_ec button battery asus_acpi acpi_memhotp
lug ac lp sg snd_intel8x0 snd_ac97_codec ac97_bus snd_seq_dummy snd_seq_oss snd_
seq_midi_event snd_seq snd_seq_device snd_pcm_oss ide_cd snd_mixer_oss i2c_i801
8139too pcspkr snd_pcm i2c_core 8139cp mii cdrom serio_raw parport_pc snd_timer
snd parport soundcore snd_page_alloc dm_raid45 dm_message dm_region_hash dm_log
dm_mod dm_mem_cache ata_piix libata sd_mod scsi_mod ext3 jbd uhci_hcd ohci_hcd e
hci_hcd

free reports:
             total       used       free     shared    buffers     cached
Mem:        501400     490124      11276          0       2432      87364
-/+ buffers/cache:     400328     101072
Swap:      2096472        136    2096336

/proc/cpuinfo
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 15
model           : 4
model name      :               Intel(R) Pentium(R) 4 CPU 3.06GHz
stepping        : 9
cpu MHz         : 3059.069
cache size      : 1024 KB
physical id     : 0
siblings        : 2
core id         : 0
cpu cores       : 1
apicid          : 0
fpu             : yes
fpu_exception   : yes
cpuid level     : 5
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov
pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx lm constant_tsc
 pni monitor ds_cpl tm2 cid cx16 xtpr lahf_lm
bogomips        : 6121.34
clflush size    : 64
cache_alignment : 128
address sizes   : 36 bits physical, 48 bits virtual
power management:

processor       : 1
vendor_id       : GenuineIntel
cpu family      : 15
model           : 4
model name      :               Intel(R) Pentium(R) 4 CPU 3.06GHz
stepping        : 9
cpu MHz         : 3059.069
cache size      : 1024 KB
physical id     : 0
siblings        : 2
core id         : 0
cpu cores       : 1
apicid          : 1
fpu             : yes
fpu_exception   : yes
cpuid level     : 5
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov                                                                                                    pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx lm constant_tsc                                                                                                    pni monitor ds_cpl tm2 cid cx16 xtpr lahf_lm
bogomips        : 6117.09
clflush size    : 64
cache_alignment : 128
address sizes   : 36 bits physical, 48 bits virtual
power management:

remove test cases which require the block device.
You can specify it with option -b
COMMAND:    /opt/ltp/bin/ltp-pan  -e -S   -a 5704     -n 5704  -p  -f /tmp/ltp-c                                                                                                  rOdkS5710/alltests -l /opt/ltp/results/LTP_RUN_ON-2011_ 3月_25-16h_36m_16s.log -                                                                                                   o /opt/ltp/output/LTP_RUN_ON-2011_ 3月_25-16h_36m_16s.output -C /opt/ltp/output/                                                                                                   LTP_RUN_ON-2011_.failed
LOG File: /opt/ltp/results/LTP_RUN_ON-2011_ 3月_25-16h_36m_16s.log
OUTPUT File: /opt/ltp/output/LTP_RUN_ON-2011_ 3月_25-16h_36m_16s.output
FAILED COMMAND File: /opt/ltp/output/LTP_RUN_ON-2011_.failed
HTML File: /opt/ltp/output/2011_
Running tests…….

分析:
remove test cases which require the block device这句前面一部分是对系统信息的捕捉,后面是对记录结果的文件的说明。
详细测试结果略
2.压力测试

Linux 2.6.18-128.7NFS (server20)        2011年03月26日
Running LTP Stress for 24 hour(s) using 730 Mb

Test output recorded in:
        /tmp/ltpstress.2496.output1
        /tmp/ltpstress.2496.output2
        /tmp/ltpstress.2496.output3
13时01分04秒     all      4.00      0.00      8.45     87.56     0.00      0.00

13时00分59秒     CPU     %user     %nice   %system   %iowait    %steal    %idle
13时01分09秒     all      4.35      0.00      9.50     86.14     0.00      0.00
13时01分14秒     all      5.56      0.00     13.46     80.98     0.00      0.00
13时01分19秒     all      6.20      0.00     16.10     77.70     0.00      0.00
13时01分24秒     all      7.80      0.00     15.15     77.05     0.00      0.00
13时01分29秒     all      9.05      0.00     12.81     78.14     0.00      0.00  
分析:
sar会动态收集系统的状态信息。详细结果略。收集的信息保存在
tmp/ltpstress.data利用sar工具分析ltpstress.data。
(1)sar -u -f ltpstress.data  //cpu 平均利用率
[root@server25 tmp]# sar -u -f ltpstress.data
Linux 2.6.18-128.7NFS (server25.nfs)    2011年03月25日

16时49分02秒     CPU     %user     %nice   %system   %iowait    %steal    %idle
16时49分12秒     all      3.81      0.00      3.50     92.69     0.00      0.00
16时49分22秒     all     14.17      0.00      7.14     78.69     0.00      0.00
16时49分45秒     all     31.94      0.00      5.30     62.76     0.00      0.00
16时50分11秒     all      6.25      0.00      5.38     88.36     0.00      0.02
16时50分49秒     all      9.13      0.00      3.21     87.65     0.00      0.00
Average:        all     13.35      0.00      4.57     82.07     0.00      0.0

(2) sar -r -f ltpstress.data  //内存平均利用率
inux 2.6.18-128.7NFS (server25.nfs)    2011年03月25日

16时49分02秒 kbmemfree kbmemused  %memused kbbuffers  kbcached kbswpfree kbswpused  %swpused kbswpcad
16时49分12秒      5036    496364     99.00       360     14804   1747512    348960     16.65     44664
16时49分22秒      5540    495860     98.90       464     11304   1633908    462564     22.06     58788
16时49分45秒      8428    492972     98.32       232      9660  1347532    748940     35.72     43848
16时50分11秒      4852    496548     99.03       432     10568   1468572    627900     29.95     39252
16时50分49秒      4772    496628     99.05       940     11980   1198232    898240     42.85     35224
Average:         5726    495674     98.86       486     11663  1479151    617321     29.45     44355
[root@server25 tmp]#      

2013年12月06日 ⁄ 综合 ⁄ 共 1555字 ⁄ 字号 小 中 大 ⁄ 评论关闭

1 pan 
    pan工作原理:LTP测试套件有一个专门的测试驱动程序pan,具体的测试用例的执行都是由pan来调用执行,它可以跟踪孤儿进程和抓取测试的输出信息。它的工作方式是这样的:
    从一个测试命令文件中读取要测试的条目的要执行的命令行,然后等待该项测试的结束,并记录详细的测试输出。默认状态下pan会随机的选择一个命令行来运行,可以指定在同一时间要执行测试的次数。
    pan会记录测试产生的详细的格式复杂的输出,但它不进行数据的整理和统计,数据整理统计的工作由scanner来完成,scanner是一个测试结果分析工具,它会理解pan的输出格式,并输出成一个表格的
    形式来总结那些测试passed或failed。

2 ltp  测试过程

LTP测试的过程主要分为两个阶段:

第一阶段——初始测试,主要用于测试系统的可靠性,包括LTP测试套件在硬件和操作系统上24小时的成功运转。

第二阶段——压力测试,主要验证产品在系统高使用率时的健壮性。

初始测试
    ./runltp -p -l /tmp/resultlog.20061222 -d /tmp -o /tmp/ltpscreen.20061222
    -t 24h

压力测试
    ./ltpstress.sh -m 35 -S -t 72h  //-m:
    表示genload不停的在分配和释放35m内存,
         -S: 使用sar工具记录
          -t: 测试时间

3  runltp 调试过程

将ltp安装在pc机上
        make autotools
        make
        make install

在/opt/ltp  目录下就是安装好的ltp。可以在其中运行测试脚本
     例如:  ./runltp -p -l result.log   (该命令没有指定测试案例,默认)
     可以将输出结果重定向到一个文件如:rtp-info 
     就可以修改runltp脚本,看rtp-info的输出结果

4 ltp 在arm的交叉编译

$ make autotools
    $./configure CC=arm-linux-gcc --build=i686-pc-linux --target=arm-linux
    --host=arm-linux CFLAGS="-static -pthread"
    $make 
    make install

make时会报openlog的错误。将testcases/kernel/fs/fs-bench 文件夹移走,不编译

5 runltp 脚本
    
    bash脚本,主要是通过调用ltp-pan 来运行testcas中的各个测试用例
    还有根据参数来自定义测试,及对测试结果进行不同的保存

6 测试自己的用例
    一 修改已有的测试命令文件
    1 在runtest/syscalls 中加入moon01 (自己编写的脚本名,只打印)
    2 将moon01 脚本放入testcase/bin 目录下
    运行./runltp -p -l result.log  会看到打印。说明调用了moon01脚本
    (由于没有-f 指定测试命令文件,用scenario_groups/default 文件读入默认
    的测试命令文件,其中第一个为syscalls文件,该文件中写明了要测试的命令,
    注意格式)

二 填写自己的命令文件
    1 填写自己的命令文件my_cmd_file 
    写入  moon01 moon01
    将该文件放入runtest 目录下
    2将moon01脚本放入testcase/bin下
    3执行./runltp -p -l result.log -f my_cmd_file 
    4 执行结果调用moon01打印出信息

2013年12月06日 ⁄ 综合 ⁄ 共 1555字 ⁄ 字号 小 中 大 ⁄ 评论关闭

1 pan 
    pan工作原理:LTP测试套件有一个专门的测试驱动程序pan,具体的测试用例的执行都是由pan来调用执行,它可以跟踪孤儿进程和抓取测试的输出信息。它的工作方式是这样的:
    从一个测试命令文件中读取要测试的条目的要执行的命令行,然后等待该项测试的结束,并记录详细的测试输出。默认状态下pan会随机的选择一个命令行来运行,可以指定在同一时间要执行测试的次数。
    pan会记录测试产生的详细的格式复杂的输出,但它不进行数据的整理和统计,数据整理统计的工作由scanner来完成,scanner是一个测试结果分析工具,它会理解pan的输出格式,并输出成一个表格的
    形式来总结那些测试passed或failed。

2 ltp  测试过程

LTP测试的过程主要分为两个阶段:

第一阶段——初始测试,主要用于测试系统的可靠性,包括LTP测试套件在硬件和操作系统上24小时的成功运转。

第二阶段——压力测试,主要验证产品在系统高使用率时的健壮性。

初始测试
    ./runltp -p -l /tmp/resultlog.20061222 -d /tmp -o /tmp/ltpscreen.20061222
    -t 24h

压力测试
    ./ltpstress.sh -m 35 -S -t 72h  //-m:
    表示genload不停的在分配和释放35m内存,
         -S: 使用sar工具记录
          -t: 测试时间

3  runltp 调试过程

将ltp安装在pc机上
        make autotools
        make
        make install

在/opt/ltp  目录下就是安装好的ltp。可以在其中运行测试脚本
     例如:  ./runltp -p -l result.log   (该命令没有指定测试案例,默认)
     可以将输出结果重定向到一个文件如:rtp-info 
     就可以修改runltp脚本,看rtp-info的输出结果

4 ltp 在arm的交叉编译

$ make autotools
    $./configure CC=arm-linux-gcc --build=i686-pc-linux --target=arm-linux
    --host=arm-linux CFLAGS="-static -pthread"
    $make 
    make install

make时会报openlog的错误。将testcases/kernel/fs/fs-bench 文件夹移走,不编译

5 runltp 脚本
    
    bash脚本,主要是通过调用ltp-pan 来运行testcas中的各个测试用例
    还有根据参数来自定义测试,及对测试结果进行不同的保存

6 测试自己的用例
    一 修改已有的测试命令文件
    1 在runtest/syscalls 中加入moon01 (自己编写的脚本名,只打印)
    2 将moon01 脚本放入testcase/bin 目录下
    运行./runltp -p -l result.log  会看到打印。说明调用了moon01脚本
    (由于没有-f 指定测试命令文件,用scenario_groups/default 文件读入默认
    的测试命令文件,其中第一个为syscalls文件,该文件中写明了要测试的命令,
    注意格式)

二 填写自己的命令文件
    1 填写自己的命令文件my_cmd_file 
    写入  moon01 moon01
    将该文件放入runtest 目录下
    2将moon01脚本放入testcase/bin下
    3执行./runltp -p -l result.log -f my_cmd_file 
    4 执行结果调用moon01打印出信息

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章