LTP, Linux Test Project简介

 LTP-linut test project 。ltp套件是由Linux Test Project所开发的一套系统测试套件。它基于系统资源的利用率统计开发了一个测试的组合,为系统提供足够的压力。

使用 LTP 测试套件对 Linux 操作系统进行超长时间的测试,重点在于 Linux 用户环境相关的工作负荷。而并不是致力于证明缺陷。 

 

如需安装最新版本或重新编译,参考Quick Start部分内容。

Quick Start

下载ltp包

版本页面: https://github.com/linux-test-project/ltp/releases 

wget https://github.com/linux-test-project/ltp/releases/download/20180515/ltp-full-20180515.tar.bz2

tar -xjvf ltp-full-20180515.tar.bz2

安装依赖包

CentOS 7.4

# 编译ltp用

yum install make bison flex byacc autoconf automake m4

# 分析性能数据用

yum install deltarpm sysstat

Ubuntu (Kylin)

sudo apt install xxx

# 为了测试目的,如果直接安装找不到,可以到 https://launchpad.net/ubuntu/xenial/<architecture>/ 搜索下载,对飞腾服务器来说,地址是 https://launchpad.net/ubuntu/xenial/arm64/

# 但是最好是能从服务器本身配置的源获取

安装ltp的测试用例

cd ltp/   # 或者解压出来的带版本号的ltp目录

 ./configure

make all

make install

/opt/ltp/runltplite.sh   # 安装后的ltp在/opt目录下,可以快速执行一次脚本,验证安装

ltp结构

ltp文件夹结构(只显示一层)

[root@host2 ltp]# pwd

/opt/ltp

[root@host2 ltp]# tree -L 1

.

├── bin

├── IDcheck.sh      # 检查系统是否缺少执行LTP测试套件所需的用户和用户组,如果缺少则为LTP测试套件创建所需的用户和用户组。

├── runltp         

├── runltplite.sh   #  这个脚本用来测试LTP安装,也可用来对测试套件的子项目进行测试。

├── runtest         # 该目录中的每个文件都是要执行的测试用例的命令集合,每个文件针对测试的不同方面。

├── scenario_groups

├── share           # 脚本使用说明目录

├── testcases       # 该目录存储了所有LTP测试套件中所使用的测试用例的源码。

├── testscripts     # 该目录中存储的是可执行的测试脚本,不同方面的测试脚本的集合。

├── ver_linux       # 这个脚本是获取硬件、软件、环境信息。

└── Version

[root@host2 ltp-full-20180515]# pwd

/home/wenjie/ltp/ltp-full-20180515

[root@host2 ltp-full-20180515]# tree -L 1 -d

.

├── doc             # 该目录是说明文件和帮助文档的所在地,这个目录中对LTP的内容和每个工具都有详细的说明。

├── include         # LTP测试套件的头文件目录,定义了LTP自身的数据结构和函数结构。

├── lib             # LTP测试套件运行时自身需要的库文件,定义了LTP自身的各种函数。

├── m4

├── pan             # 该目录存储的是LTP测试套件的测试驱动程序pan。

├── runtest

├── scenario_groups

├── scripts

├── testcases       # 该目录存储了所有LTP测试套件中所使用的测试用例的源码。

├── testscripts     # 该目录中存储的是可执行的测试脚本,不同方面的测试脚本的集合。

├── tools

└── utils

 

测试命令

初始测试

初始测试直接使用 /opt/ltp/runltp 脚本。默认地,这个脚本执行: 文件系统压力测试、硬盘 I/O 测试、内存管理压力测试、IPC 压力测试、SCHED测试、命令功能的验证测试、系统调用功能的验证测试。

如果不指定参数, 那么将执行全量用例,所有执行过程打印到screen,不保存log和results。建议起码加上 -p, -l 参数保存可读的测试结果。

/opt/ltp/runltp -p -l result.yyyymmdd.log -f my_command_file

/opt/ltp/runltp -p -l /tmp/resultlog.20111207 -d /tmp -o /tmp/ltpscreen.20111207 -t 24h

参数解释,详见 http://ltp.sourceforge.net/documentation/how-to/ltp.php#_3.4

my_command_file 应放置在 /opt/ltp/runtest 下,包含内容格式如下,

#Tag       Test case

#---------------------------------------

mtest01     mtest01 -p 10

mmstress    mmstress -x 100

fork01      fork01

chdir01     symlink01 -T chdir01

#----------------------------------------

命令执行之后,如果没有指定log文件的绝对路径,log将保存在/opt/ltp/results 目录下。输出结果内容如下,

Test Start Time: Mon Aug 20 11:41:40 2018

-----------------------------------------

Testcase                                           Result     Exit Value

--------                                           ------     ----------

mtest01                                            FAIL       1

mmstress                                           PASS       0

fork01                                             PASS       0

chdir01                                            PASS       0

 

-----------------------------------------------

Total Tests: 4

Total Skipped Tests: 0

Total Failures: 1

Kernel Version: 3.10.0-693.el7.1.x86_64

Machine Architecture: x86_64

Hostname: host1

 

压力测试

执行testscripts中ltpstress.sh脚本做压力测试。该脚本并行地运行相似的测试用例,串行地运行不同的测试用例。默认地,这个脚本执行:NFS 压力测试、内存管理压力测试、文件系统压力测试、数学 (浮点) 测试、多线程压力测试、硬盘 I/O 测试、IPC (pipeio, semaphore) 测试、系统调用功能的验证测试、网络压力测试。

cd /opt/ltp/testscripts

sudo ./ltpstress.sh -m 35 -S -t 1  # 如果直接执行源码包里的测试脚本,需要在运行前执行 PATH=$PATH:$PWD:<LTP_ROOT>/lib/ ,将<LTP_ROOT>/lib和 <LTP_ROOT>/testscripts加到PATH中

sudo ./ltpstress.sh -d /tmp/sardata -l /tmp/ltpstress.log -I /tmp/iofile -i 5 -m 128 -t 24 -S

sudo ./ltpstress.sh -p -S -t 1 -b /dev/sdd -B xfs -m 128

-l:记录测试结果到/tmp/ltpstress.log (小写L)

-I:记录"iostat"结果到iofile,默认是/tmp/ltpstress.iostat (大写i)

-i:指定sar或top快照时间间隔,默认为10秒

-m: 指定最小的内存使用,默认为: RAM + 1/2 swap

-n:不对网络进行压力测试

-S :用sar捕捉数据

-T:利用LTP修改过的top工具捕捉数据

 -t: 指定测试时间   # ltpstress.sh 脚本的-t参数,只支持传入整数的“小时”。

-b:部分测试需要一块没有mount的磁盘,如果不指定,脚本会创建一个loop device用来测试

-B:说明-b指定的磁盘的文件系统

注意:如果不指定-m,那么压力将会比较大,有可能资源消耗爆仓。务必带上 -m 参数。

 

压测脚本相关的文件结构对应关系:

  •  testscripts 中 ltpstress.sh
  •  runtest 目录下的stress.part1,stress.part2,stress.part3 (测试集合配置文件)
  •  pan后台运行
  •  最终运行Testcase中的各个测试案例

可以通过修改runtest下的stress.part<n> 文件来调整测试用例结合。

 

测试数据分析


默认情况下,测试结果放在/tmp
ltpstress.log:记录相关日志信息,主要是测试是否通过(pass or fail) 
ltpstress.data:sar工具记录的日子文件,包括cpu,memory,i/o等
ltpstress.<xxx>.output1:对应stress.part1,测试命令的一些输出信息 
ltpstress.<xxx>.output2:对应stress.part2
ltpstress.<xxx>.output3:对应stress.part3

 

ltpstress.sh 支持 -S 调用sar命令去记录服务器性能数据。如不指定-S,将使用ltp定制过的top命令记录性能数据。

sar -u -f ltpstress.data  # cpu 平均使用率

sar -r -f ltpstress.data  # memory 平均使用率

sar -b -f ltpstress.data  # IO 传输率

sar -d -f ltpstress.data  # 每块磁盘的活动信息

提取错误的用例,然后再分析每一个错误用例的原因。

grep FAIL ltpstress.xxx.output* | sort | uniq >failcase.txt

 

 

 

相关测试集合

  • runtests/net.nfs:包含NFS v2、v3、v4的测试集合,需要开启nfs、portmap服务,并配置。执行命令: 

    /opt/ltp/runltp -p -l result.yyyymmdd.log -f net.nfs

  • runtests/network_commands:包含ftp和ssh的测试集合。
  • runtests/scsi_debug.part1:对应脚本 testscripts/ltp-scsi_debug.sh。

 

在下载的ltp包中,testcases/kernal/io/下面,有单独的disktest目录。内含disktest脚本,可以执行。文档见附件。disktest_manual.html

 

参考文档: 

http://ltp.sourceforge.net/documentation/how-to/ltp.php#_1

http://blog.51cto.com/tech110/737865 

https://github.com/linux-test-project/ltp

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值