1.LTP介绍
    LTP--linut test project ,ltp套件是由Linux Test Project所开发的一套系统測试套件。它基于系统资源的利用率统计开发了一个測试的组合,为系统提供足够的压力。
    通过压力測试来推断系统的稳定性和可靠性。
    压力測试是一种破坏性的測试,即系统在非正常的、超负荷的条件下的执行情况 。用来评估在超越最大负载的情况下系统将怎样执行,是系统在正常的情况下对某种负载强度的承受能力的考验 。
    使用 LTP 測试套件对 Linux 操作系统进行超长时间的測试,重点在于 Linux 用户环境相关的工作负荷(參阅 參考资料 以深入了解 LTP)。而并非致力于证明缺陷。
    重点: 測试选择,评价系统资源利用率,分析内核代码覆盖率,评价终于压力測试
    更加详细的參考:http://www.linuxeden.com/html/front/20060728/24305.html
                    http://www.ibm.com/developerworks/cn/linux/l-rel/index.html
                           或者网上相关信息
    在这里,主要介绍LTP结构,測试方法,測试组合的选择,工具介绍,环境搭建,须要改动地方,分析測试结果,LTP操作流程
 
2.LTP结构
    从http://ltp.sourceforge.net/下载LTP測试源代码包
   
LTP的文件夹结构基本上分为文档文件夹(doc)、測试驱动程序文件夹(pan)、測试脚本文件夹(testscripts)、測试用例库(testcase)、測试命令文件文件夹(runtest)、头文件文件夹(include)、库文件夹(lib)等。
Doc:该文件夹是说明文件和帮助文档的所在地,这个文件夹中对LTP的内容和每一个工具都有具体的说明。
Pan:该文件夹存储的是LTP測试套件的測试驱动程序pan。
Testscripts:该文件夹中存储的是可运行的測试脚本,不同方面的測试脚本的集合。
Testcase:该文件夹存储了全部LTP測试套件中所使用的測试用例的源代码。
Runtest:该文件夹中的每一个文件都是要运行的測试用例的命令集合,每一个文件针对測试的不同方面。
Include:LTP測试套件的头文件文件夹,定义了LTP自身的数据结构和函数结构。
Lib:LTP測试套件运行时自身须要的库文件,定义了LTP自身的各种函数。
各个文件结构之间的联系:
---->testscripts中ltpstress.sh
---->runtest(stress.part1,stress.part2,stress.part3)
---->pan后台执行
---->终于执行Testcase中的各个測试案例
       当中runtest中 stree.part1,stree.part2,stree.part3中的測试命令或脚本  如 mmstress;来源于testcase/bin 中mmstress;而testcase/bin 中mmstress 可运行脚本或命令来源于/testcase中如 kernel,network,   pounder21, commands 等源码编译生成的,
mmstress:kernel/mem/mtest05/mmstress.c
stress.part[n](n=1,2,3)中測试命令怎样看?
    这些命令文件包括測试用例的tag和带有參数的測使用里,格式例如以下:
#tag       test case
test1      test1 -l 10
mtest01    mtest01 -m 20
fork01     fork01
  pan工作原理:LTP測试套件有一个专门的測试驱动程序pan,具体的測试用例的运行都是由pan来调用运行,它能够跟踪孤儿进程和抓取測试的输出信息。它的工作方式是这种:
从一个測试命令文件里读取要測试的条目的要运行的命令行,然后等待该项測试的结束,并记录具体的測试输出。默认状态下pan会随机的选择一个命令行来运行,能够指定在同一时间要运行測试的次数。
pan会记录測试产生的具体的格式复杂的输出,但它不进行数据的整理和统计,数据整理统计的工作由scanner来完毕,scanner是一个測试结果分析工具,它会理解pan的输出格式,并输出成一个表格的
形式来总结那些測试passed或failed。
3.LTP測试方法
測试方法有两个的阶段:一个是“初始測试”,一个是“压力測试”。
初始測试是開始測试的必要条件。初始測试包含 LTP 測试套件在硬件和操作系统上成功运转,这些硬件和操作系统将用于可靠性运转。LTP 測试套件包附带的驱动程序脚本 runalltest.sh 用于验证内核。这个脚本串行地执行一组成包的測试,并报告所有结果。也能够选择同一时候并行地执行几个实例。默认地,这个脚本执行:
- 文件系统压力測试。
- 硬盘 I/O 測试。
- 内存管理压力測试。
- IPC 压力測试。
- SCHED測试。
- 命令功能的验证測试。
- 系统调用功能的验证測试。
压力測试能够验证产品在系统高使用率时的健壮性。作为 runalltest.sh 的补充,特别设计了一个名为 ltpstress.sh 的測试场景,在使用网络与内存管理的同一时候并行地执行大范围的内核组件,并在測试系统上生成高压力负荷。ltpstress.sh 也是 LTP 測试套件的一部分。这个脚本并行地执行类似的測试用例,串行地执行不同的測试用例,这样做是为了避免因为同一时候訪问同一资源或者互相干扰而引起的间歇性故障。默认地,这个脚本执行:
- NFS 压力測试。
- 内存管理压力測试。
- 文件系统压力測试。
- 数学 (浮点) 測试。
- 多线程压力測试。
- 硬盘 I/O 測试。
- IPC (pipeio, semaphore) 測试。
- 系统调用功能的验证測试。
- 网络压力測试。
 
4.測试组合的选择
       所选择的測试的组合必须给系统的资源带来足够的压力。Linux 内核的四个主要方面能够影响系统的 响应和运行时间:
  - CPU:用于在机器的 CPU(s)上处理数据的时间。
  - Memory:用于自真实存储器中读写数据的时间。
  - I/O:用于自磁盘存储器读写数据的时间。
  - Networking:用于自网络读写数据的时间。
系统资源利用率评价阶段通常须要多次尝试才干得到合适的測试组合,并得到期望水平的利用率。在这个评价过程中,sar 工具也应该在执行。在评价执行的结论中,您应该收集并评价全部四种资源的利用率水平。
      详细的測试组合改动方法。
改动方法一:
       runtest中 stress.part1,stress.part2,stress.part3。
如改动stress.part1中有这样一个測试mem02,依据阅读testcases/kernel/mem/mem/mem02.c 源码,可将他改动为mem02 -m 15,意思是測试15m内存。
     相同的也能够在 stress.part1,stress.part2,stress.part3 中加入、删除一些測试,
如我们測试时就把
stress.part3中关于swap交换分区的去掉
#swapoff01 swapoff01
#swapoff02 swapoff02
#swapon01 swapon01
#swapon02 swapon02
#swapon03 swapon03
改动方法二:
前面提到的初始測试或者压力測试都是測试的默认的,假设想測试其它的或者自己的測试案例,须要改动testcase的
Makefile,由于通过它的Makefile能够看到
SUBDIRS = `ls */Makefile | sed "s/Makefile//g" | grep -v open | grep -v pounder | grep -v DOTS | grep -v kdump | grep -v realtime`
sed 's//:/ /g' :想把文本中的冒号替换成空格
grep -v:显示全部与指定模式不匹配的行
     
也就是说open,pounder,DOTS,kdump,realtime没有測试,当然你能够选上或者,加入上自己的測试案例。
5.工具介绍
Gcov,lcove:
分析代码覆盖率
sar:
帮助我们掌握系统资源的使用情况,特别是内存和CPU 的使用情况,
是UNIX系统使用者应该掌握的工具之中的一个
在我们的測试中,sar工具每 10 秒(当然时间间隔能够改动)钟截取一次系统利用率的快照,并保存到结果文件。
针对sar生成的sar.data用法:
 sar -u sar.data  //查看cpu使用情况
 sar -r sar.data  //看看memory,swap使用情况
 ……………………
Top:
跟sar差点儿相同的功能,这里我们就用sar 了。
Rsh:
用处就不用介绍了,主要介绍建立信任主机
http://blog.chinaunix.net/u/7121/showart_576215.html 这个比較全面
http://gforge.loogson.com/forum/forum.php?thread_id=59&forum_id=53  
    我们自己211server上写的也比較全面,但特别注意的细节就是/root/.rhosts权限600这个问题。由于我为它浪费了半天时间。
#aptitude install openssh-server openssh-client
1、a>更改/etc/hosts文件  http://download.zdnet.com.cn/software_zone/2007/0831/481970.shtml
#vi /etc/hosts 打开hosts文件,更改例如以下:
127.0.0.1 localhost.localdomain localhost
192.168.4.211 ub-server
192.168.4.40 gengmj-desktop
192.168.4.32 zjx-desktop   //ip:被信任主机的IP,zjx-desktop:被信任主机的username
b>更改 /etc/hosts.equiv文件   // /etc/hosts.equiv里的主机不须要提供password就能够訪问本机.
# vim /etc/hosts.equiv
# /etc/hosts.equiv: list of hosts and users that are granted "trusted" r
# command access to your system .
#127.0.0.1 localhost.localdomain localhost
ub-server mpich    
debian mpich
gmj-desktop mpich
zjx-desktop mpich    //被信任的zjx-desktop用户,以mpich用户登录本机
festival-desktop mpich
liu-desktop mpich
yym-desktop mpich
2、在node01生成SSH秘钥对.
$ssh-keygen -t rsa 一路回车就可以
产生.ssh文件,
$ls -a 查看是否有.ssh文件夹/cluster/server/
3、进入.ssh文件夹
$cd .ssh
4、生成authorized_keys文件
$cp id_rsa.pub authorized_keys
5、退出到root文件夹
$cd ..
6、建立本身的信任连接
$ssh ub-server 按提示输入yes(三个字母要打全)
7、设置node02(node02的root文件夹下)
$ssh-keygen -t rsa 生成.ssh文件夹
$scp mpich@ub-server:/home/mpich/.ssh/* ~/.ssh/ 拷贝ub-server上的.ssh文件夹覆盖本地的
#scp root@ub-server:/etc/hosts /etc/hosts 拷贝node01上的hosts文件覆盖本地的
$ssh node01 提示处输入yes回车
8、确认机器的信任连接已建立
对每一个节点运行:
$ssh ub-server
$ssh gengmj-desktop
在提示处输入yes回车,最后确定无需输入password而且没有不论什么提示信息就可以登陆("Last login:时间日期"提示信息除外)
6.环境搭建
开发板: v1.2
CPU:
内核:Linux 2.6.22.8  交叉编译时须要选上ide,nfs server support
LTP 版本号:20080831  交叉编译
 
pc机:
CPU:Intel(R) Celeron(R) CPU 2.26GHz
内核:2.6.24-16-generic
        LTP 版本号:20080831
pc机做server使用
 
7.须要改动地方
改动一:/ltp-full-20080831/testcases/network/nfs
    下的nfs01 , nfs01 ,nfs03 nfs04 , nfsstress,将改动RHOST=192.168.4.68,让它測试远程的主机
   nfs04: 中139行nfs04_create_file--绝对路径
改动二:/ltp-full-20080831/testcases/network/rpc/basic_tests/rpc01
        中rpc01 ,    将改动RHOST=192.168.4.68,让它測试远程的主机
改动三:/ltp-full-20080831/testcases/kernel/mem/mem/mem02.c --->#define MEMSIZE 15*1024*1024  #15M
改动四:fork09: 最多能OPEN 800 个文件,然后才干创建进程 
………………等
8.測试结果分析
默认情况下,測试结果放在/tmp
ltpstress.log---记录相关日志信息,主要是測试是否通过(pass or fail)
ltpstress.data ----sar工具记录的日子文件,包含cpu,memory,i/o等
ltpstress.611.output1---相应stress.part1,測试命令的一些输出信息  
ltpstress.611.output2---相应stress.part2,測试命令的一些输出信息
ltpstress.611.output3---相应stress.part3,測试命令的一些输出信息
cpu 平均使用率:sar -u -f ltpstress.data
memory 平均使用率:sar -r -f ltpstress.data
fail分析:
     ltpstress.log 将全部FAIL过滤出来,得到完整的全部FAIL的testcase。
方法例如以下:用sort把FAIL的项排序,再用uniq排除反复项输出到一个文件就能够了:
       grep FAIL ltpstress。log | sort | uniq >failcase.txt
    至此,得到的failcase.txt为全部FAIL的testcase名字。要注意分析case失败的原因是什么,并下结论:是配置的问题,还是稳定性的问题(有失败也有成功)。并将结论加注在failcase.txt中,方便查看。
9.软件操作流程
1.下载源代码包
对开发板
tar zxzf ltp-full-20050608.tgz
cd ltp-full-20050608
make cross_compile=mipsel-linux-;
make install cross_compile=mipsel-linux-;
copy到硬盘文件系统的/ 根文件夹下
对pc机
tar zxzf ltp-full-20050608.tgz
cd ltp-full-20050608
make;
make install;
 注意:ltp-full-20050608 必须跟开发板上路径一样,即在/ 根文件夹下
2.測试执行
初始測试
./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.结果分析
默认 情况下
 cd /tmp
 sar -u -f ltpstress.data  //cpu 平均利用率
 sar -r -f ltpstress.data  //内存平均利用率
 grep FAIL ltpstress.log | sort | uniq >failcase.txt   //失败情况分析
    计算出成功率
压力測试參考结果( DVR)
    測试工具是 LTPstress,測试用例以并行和串行方式运行
    时间24h
    cpu 平均利用率:99.99% (用户:33.21%  系统:66.78%)
    memory 平均利用率:68%
    成功率:96.17%
    没有严重的系统故障
 
10.总结linux内核的可靠性添加,可是这些測试用例的完整性还有待于分析和加强,假设内核开发者和測试人员可以勤于提交他们发现的測试缺陷,那么该套件将更能帮助降低在linux中发现的回归缺陷。
 
本文转载别人的。。。

LTP介绍的更多相关文章

  1. [转贴]LTP--linux稳定性测试 linux性能测试 ltp压力测试 ---IBM 的 linux test project

    https://blog.csdn.net/melody157398/article/details/24354415   LTP--linux稳定性测试 linux性能测试 ltp压力测试 ---I ...

  2. 哈工大LTP语言分析:分词、词性标注、句法分析等

    1. LTP介绍和安装 LTP语言云官网  在线演示 | 语言云(语言技术平台云 LTP-Cloud) 安装LTP的python接口包 $ sudo pip install pyltp 模型文件下载 ...

  3. LTP--linux稳定性测试 linux性能测试 ltp压力测试 ---IBM 的 linux test project

    LTP--linux稳定性测试 linux性能测试 ltp压力测试 ---IBM 的 linux test project Peter盼 2014-04-23 11:25:49  20302  收藏  ...

  4. LTP--linux稳定性测试 linux性能测试 ltp压力测试 内核更新 稳定性测试

    LTP--linux稳定性测试 linux性能测试 ltp压力测试 zhangzj1030关注14人评论33721人阅读2011-12-09 12:07:45   说明:在写这篇文章之前,本人也不曾了 ...

  5. LTP--linux稳定性测试 linux性能测试 ltp压力测试 ltp-pan

    LTP--linux稳定性测试 linux性能测试 ltp压力测试 zhangzj1030关注14人评论33710人阅读2011-12-09 12:07:45   说明:在写这篇文章之前,本人也不曾了 ...

  6. ltp 测试流程及测试脚本分析

    LTP介绍 (2011-03-25 18:03:53) 转载▼ 标签: ltp linux 压力测试 杂谈 分类: linux测试 LTP介绍 一.LTP介绍1.简介LTP(Linux Test Pr ...

  7. windows下使用LTP分词,安装pyltp

    1.LTP介绍 ltp是哈工大出品的自然语言处理工具箱, 提供包括中文分词.词性标注.命名实体识别.依存句法分析.语义角色标注等丰富. 高效.精准的自然语言处理技术.pyltp是python下对ltp ...

  8. DLNA介绍(包含UPnP,2011/6/20 更新)

    这部分的内容大多来源于网络及官方文档,依照自己的翻译理解整理所成.东西比較多,从头慢慢看还是能够懂个大概的. 文件夹: 一.DNLA的建立 二.DLNA的成员 三.DLNA标准的制定 四.DLNA的设 ...

  9. NLP入门(六)pyltp的介绍与使用

    pyltp的简介   语言技术平台(LTP)经过哈工大社会计算与信息检索研究中心 11 年的持续研发和推广, 是国内外最具影响力的中文处理基础平台.它提供的功能包括中文分词.词性标注.命名实体识别.依 ...

随机推荐

  1. 查看LINUX系统版本和硬件信息

    查看发行版本 # cat /etc/issue Red Hat Enterprise Linux Server release 6.2 (Santiago) 查看内核 # uname -a Linux ...

  2. Windows平台下C++插件系统实现的几个关键技术问题及其解决思路

    根据我的实践,在Windows平台下设计并实现一个C++插件系统,需要解决几个关键技术问题.下面我谈谈需要解决的几个关键技术问题以及我想到的简单的解决思路.由于我主要专注于Windows平台C++程序 ...

  3. C++头文件的包含顺序研究

    一.<Google C++ 编程风格指南>里的观点 公司在推行编码规范,领导提议基本上使用<Google C++ 编程风格指南>.其中<Google C++ 编程风格指南 ...

  4. 使用python网络库下载

    下载1000次网页资源 1,普通循环方式下载1000次,非常慢 #!/usr/bin/python # -*- coding: utf-8 -*- import sys import os impor ...

  5. CALayer3-层的属性

    一.隐式动画属性 * 在前面几讲中已经提到.每个UIView内部都默认关联着一个CALayer,我们可用称这个Layer为Root Layer(根层). 全部的非Root Layer.也就是手动创建的 ...

  6. Connection for controluser as defined in your configuration failed.

    在mysql中使用事件调度器(计划任务), 语句写好了,运行也ok,可是却没有预期的结果.网上总结了非常多计划任务失效的原因.没有一种适合我. 在phpmyadmin中打开事件表,发现以下一串红色的提 ...

  7. Ownership qualifiers of Objective-C: In Details

    虽然这里讲的大部分知识以前都看过,但是时不时出现某些点让我如茅塞顿开: 以前经常会忘记一些细节,这篇文章可以更好的理解细节,巩固知识体系. Ownership qualifiers In Object ...

  8. php随笔7-thinkphp OA系统 JS 文本框输入实时控制字数

    JS: //多行文本输入框剩余字数计算 function checkMaxInput(obj, maxLen) { if (obj == null || obj == undefined || obj ...

  9. 复制virtualenv环境到其他服务器环境配置的方法

    要在n多服务器端部署python的应用,虽然python本身是跨平台的,当时好多第三方的扩展却不一定都能做到各个版本兼容,即便是都是linux,在redhat系列和ubuntu系列之间来回导也是个很让 ...

  10. foreach遍历对象的属性

    <?php class MyClass { public $var1 = 'value 1' ; public $var2 = 'value 2' ; public $var3 = 'value ...