LTP--Linux Test Project

2023-10-31

简介:
 LTP套件是由 Linux Test Project 所开发的一套系统测试套件。它基于系统资源的利用率统计开发了一个测试的组合,为系统提供足够的压力。
 通过压力测试来判断系统的稳定性和可靠性。
 压力测试是一种破坏性的测试,即系统在非正常的、超负荷的条件下的运行情况 。用来评估在超越最大负载的情况下系统将如何运行,是系统在正常的情况下对某种负载强度的承受能力的考验 。
使用LTP测试套件对Linux操作系统进行超长时间的测试,重点在于Linux用户环境相关的工作负荷。而并不是致力于证明缺陷。
压力测试的设计
1. 测试选择--包括达成两方面目的的测试:
- 测试应该可以得到 CPU(s)、内存、I/O 和网络等主要内核区域的高水平的资源利用率。
- 测试应该充分地覆盖内核代码,以帮助支持自其结果中生成的稳定性声明。
2. 评价系统资源利用率
所选择的测试的组合必须给系统的资源带来足够的压力。Linux 内核的四个主要方面可以影响系统的 响应和执行时间:
- CPU:用于在机器的 CPU(s)上处理数据的时间。
- Memory:用于自真实存储器中读写数据的时间。
- I/O:用于自磁盘存储器读写数据的时间。
- Networking:用于自网络读写数据的时间。
系统资源利用率评价阶段通常需要多次尝试才能得到合适的测试组合,并得到期望水平的利用率。当确定测试组合时,过度利用总是一个至关重要的问题。例如,如果选择的组合过于受 I/O 所限,可能会 导致 CPU 的测试结果不好,反之亦然。方法的这一部分主要是大量的试验和出错,直到所有资源达到期望水平。
当选定一个组合后,测试必须长时间运行以准确评价资源的利用率。测试运行的时间长短取决于每个测试的长度。假如多个测试同时运行,则时间必须足够长以使得这些测试中最长的那个可以完成。在这个评价过程中,sar 工具也应该在运行。在评价运行的结论中,您应该收集并评价所有四种资源的利用率水平。
3. 分析内核代码覆盖率
获得足够的内核覆盖率是系统压力测试的另一个职责。尽管所选的测试组合充分地利用了四种主要资源,它也有可能只是执行了内核的一小部分。因而,应该对覆盖率进行分析以确保组合可以成为一个系统压力测试,而不是一个系统负载生成器。
4.评价最终压力测试。
之所以要执行方法中的这最后一步,是为了对系统压力测试进行核实。在一个被认为是稳定的内核上执行压力测试; 通常,发行版本中的内核可以满足这一要求,但不总是如此。要长时间地执行压力测试,同时运行sar 工具,原因有以下两点:
-长时间运行有助于发现组合中的所有问题,否则,在短时间的“取样测试(sniff test)”中这些问题可能会被忽略。
-sar 生成的数据构成以后测试运行中进行比较的基线。
长时间运行结束后,现在可以基于收集的所有数据来决定这个测试组合是否是系统压力测试的合适候选者。
LTP 测试方法
测试方法有两个阶段:
阶段1: 初始测试
阶段2: 压力测试
初始测试 --- 是开始测试的必要条件。初始测试包括LTP测试套件在硬件和操作系统上成功运转,这些硬件和操作系统将用于可靠性运转。LTP测试套件包附带的驱动程序脚本runalltests.sh用于验证内核。这个脚本串行地运行一组成包的测试,并报告全部结果。也可以选择同时并行地运行几个实例。在执行runltp脚本的时,可以指定参数添加需要的测试的项目(在/testscripts内),初始测试的测试脚本是runalltests.sh或runltp(runltp默认执行的内容与runalltests相同),默认地,这个脚本执行:
- 文件系统压力测试。
- 硬盘 I/O 测试。
- 内存管理压力测试。
- IPC 压力测试。
- SCHED 测试。
- 命令功能的验证测试。
- 系统调用功能的验证测试。
压力测试 --- 可以验证产品在系统高使用率时的健壮性。作为runalltests.sh的补充,特别设计了一个名为ltpstress.sh的测试场景,在使用网络与内存管理的同时并行地运行大范围的内核组件,并在测试系统上生成高压力负荷。
ltpstress.sh也是LTP测试套件的一部分。这个脚本并行地运行相似的测试用例,串行地运行不同的测试用例,这样做是为了避免由于同时访问同一资源或者互相干扰而引起的间歇性故障。测试内容同runltp,不同点在于runltp可以指定测试项进行组合测试,而runalltests.sh则会全部执行。默认地,这个脚本执行:
- NFS 压力测试。
- 内存管理压力测试。
- 文件系统压力测试。
- 数学 (浮点) 测试。
- 多线程压力测试。
- 硬盘 I/O 测试。
- IPC (pipeio, semaphore) 测试。
- 系统调用功能的验证测试。
- 网络压力测试。
LTP工作组在设计Linux 内核压力测试脚本 ltpstress.sh 时使用了这一设计方法,为给系统提供足够的压力,LTP工作组对这个组合测试进行了分析,以确定 Linux 内核的哪些部分在测试执行中得到了使用。然后,修改了组合测试,在保持期望的高强度系统压力的同时提高代码覆盖率的百分比。最终得到的压力测试涵盖了Linux 内核的足够多部分,有助于稳定性声明,并且有系统使用情况和内核代码覆盖情况的数据来支持它。
有两个开放源代码工具可以帮助进行 Linux 内核的代码覆盖率分析:
- gcov:一个由 LTP 维护的开放源代码工具。这个工具分析内核代码的覆盖率,并报告哪些行、函数和分支被覆盖以及它们被访问了多少次。
- lcov:另一个由 IBM 开发,由 LTP 维护的开放源代码工具。 这个工具由一组构建于基于文本的 gcov 输出之上的 Perl 脚本构成,以实现基于 HTML 的输出。输出包括覆盖率百分比、图表以及概述页,可以快速浏览覆盖率数据。可以自LTP主页找到这两个工具。
lcov 工具会生成一棵完整的HTML 树,其中包含有内核中代码的每一行以及关于每一行执行了 多少次的数据(如果有的话)。这个工具会量化覆盖率数据并生成关于内核中每一部分和 文件覆盖率的百分比数字。
内核的代码覆盖率分析只是在ltpstress.sh的设计和开发过程中用到,目的是保证lptsress.sh的可用性,我们在实际测试的时候就不需要再做内核的代码覆盖率分析了。
系统监控
LTP 测试套件附带的 top 工具是经过修改的,用作系统监控工具。使用 top 可以实时地观察处理器的行为。改进的 top 工具具有附加的功能,可以将 top 结果的快照保存到文件中,并给出结果文件的平均总结,包括 CPU、内存和交换空间利用率等信息。
在我们的测试中,sar工具每 10 秒钟截取一次系统利用率的快照,并保存到结果文件。
测试之前所有选定的测试系统的硬件配置尽可能相同。去掉额外的硬件以减少潜在的硬件故障。在映像安装过程中选择最低的安全选项。预留至少 2 GB 的硬盘空间以保存 top 数据文件和 LTP 日志文件。
在测试期间系统不要受到干扰。偶尔访问一下系统以确认测试仍在进行是可以接受的。确认的手段包括使用 ps 命令、检查 top 数据和检查 LTP 日志数据。
测试运行
1. 初始测试
./runltp -p -l /tmp/resultlog.20111207 -d /tmp -o /tmp/ltpscreen.20111207 -t 24h
或者: ./runalltests.sh                   
-p:人为指定日志格式,保证日志为可读格式      
 -l:记录测试日志的文件
-d:指定临时存储目录,默认为/tmp
-o:直接打印测试输出到/tmp/ltpscreen.20111207
 -t:指定测试的持续时间
 -t 60s = 60 seconds
 -t 45m = 45 minutes
 -t 24h = 24 hours
 -t 2d  = 2 days
2. 压力测试
在使用testscripts/ltpstress.sh脚本之前需要对系统进行配置
-rsh必须配置完毕并在运行。
-内核支持NFS,并且安装NFS软件,通过网络测试。
-"sar"或"top"工具需要被安装,执行ltpstress时需要添加"sar"或"top"工具。 # yum install sysstat
./ltpstress.sh -d /tmp/sardata -l /tmp/ltpstress.log -I /tmp/iofile -i 5 -m 128 -t 24 -S
 -d:指定sar或top记录文件,默  认/tmp/ltpstress.data
-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: 指定测试时间   
测试结果分析
默认情况下,测试结果放在/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
分析:
ltpstress.log 将所有FAIL过滤出来,得到完整的所有FAIL的testcases。
方法如下:用sort把FAIL的项排序,再用uniq排除重复项输出到一个文件就可以了:
grep FAIL ltpstress.log | sort | uniq >failcase.txt
至此,得到的failcase.txt为所有FAIL的testcases名字。要注意分析case失败的原因是什么.
并下结论:是配置的问题,还是稳定性的问题(有失败也有成功)。并将结论加注在failcase.txt中,方便查看。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LTP--Linux Test Project 的相关文章

  • 将控件转换成圆形

    有点儿鸡肋的感觉 System Runtime InteropServices DllImport gdi32 private static extern IntPtr BeginPath IntPtr hdc System Runtime
  • git提交远程代码时容易出现的错误

    git push 推送代码到远程分支时 出现以下错误 Merge branch dev of http xxx into dev Please enter a commit message to explain why this merge
  • ​Mirth调用存储过程报错ORA-01861: 文字与格式字符串不匹配​

    Mirth调用存储过程报错 ORA 01861 文字与格式字符串不匹配 这种绝对是日期的错误 要进行日期格式转换 具体呢需要自己一步步测试 上业务场景 function func CreateCardPatInfo request var
  • 【mmdetection系列】mmdetection之loss讲解

    目录 1 configs 2 具体实现 3 调用 3 1 注册 3 2 调用 配置部分在configs base models目录下 具体实现在mmdet models loss目录下 1 configs 有的时候写在head中作为参数 有
  • npm 报错ERR Host key verification failed.

    问题 npm install 时报错npm ERR Host key verification failed npm ERR Error while executing npm ERR C Program Files Git cmd git
  • UE4 (旧版4.15-4.24)安卓打包报错license not accepted

    UE4 25 UE5新版直接下载Android Studio的包 不适用NVPACK方式 NVPACK文件夹一定要放在默认磁盘根目录下C NVPACK 否则会出一系列报错 错误状态 解决方法 1 查看是否已经点击Accept SDK Lic
  • 准备全面进行了

    根据这两个月的试用期 带我的那哥们告诉我应该转正没问题 另外 转了UE4后 发现找的猎头和HR很多 看来 也要好好重视了 不能只把UE4当UI使用了 当然 由于刚转 猎头和HR提供的薪水基本上都是20k起步 极个别过30k的 不如现在25K
  • JVM--基础--26.3--工具--jinfo

    JVM 基础 26 3 工具 jinfo 1 介绍 查看运行中jvm的全部参数 还可以设置部分参数 2 语法 2 1 格式 jinfo option pid jinfo option executable core jinfo option
  • CountDownLatch 简单介绍

    CountDownLatch 是多线程控制的一种工具 它被称为 门阀 计数器或者 闭锁 这个工具经常用来用来协调多个线程之间的同步 或者说起到线程之间的通信 而不是用作互斥的作用 下面我们就来一起认识一下 CountDownLatch 认识
  • qt信号和槽避免多次连接

    qt同一个信号和槽多次连接 则槽函数会触发多次 默认 可能不是我们想要的结果 有3种方法可以解决这个问题 1 仅在初始化函数中进行连接 因为初始化函数在在整个程序中只运行一次 所以这里面连接信号和槽 就能避免重复连接问题了 2 连接函数写上
  • 投屏为什么显示无法连接服务器,乐播投屏为什么连不上? 乐播投屏无法连接如何解决?...

    随着乐播投屏吸引的新用户逐渐增多 有些朋友发现自己的手机与电视无法成功连接到一起 更别说进行投屏了 而下面小编就为大家介绍了乐播投屏无法连接电视的原因 希望对你有所帮助 乐播投屏无法连接的处理教程 面对无法连接电视的情况 我们需要先保证自己
  • shell编程100例

    1 编写hello world脚本 bin bash 编写hello world脚本 echo Hello World 2 通过位置变量创建 Linux 系统账户及密码 bin bash 通过位置变量创建 Linux 系统账户及密码 1 是
  • 一分钟学会对合并单元格填充数据(Excel)

    问题描述 大家有没有发现 我们在使用Excel时有很多情况下需要对某列几行的内容进行合并 但是其他列中需要填写的内容却又完全相同 本文用两种方法解决这一问题 重点是方法二哦 一分钟可搞定数百条数据 如下图 需要按照专业进行单元格合并 但是他
  • vue高德地图初体验地图初始化(一)

    vue高德地图初体验地图初始化 安装依赖 引用依赖 地图初始化 AMap Map参数说明 安装依赖 npm i amap amap jsapi loader save 引用依赖 import AMapLoader from amap ama
  • A level数学真题解析及运用

    在A level考试9709数学科目中pure mathematics 3考卷考察范围内有一章节名为complex number 即复数章节 这部分知识点虽然理解难度不大 但是在我国普通高中的数学学习中涉及的较少 考生在接受上有比较大的难度
  • java设计模式-单例模式

    Java中单例 Singleton 模式是一种广泛使用的设计模式 单例模式的主要作用是保证在Java程序中 某个类只有一个实例存在 一些管理器和控制器常被设计成单例模式 单例模式有很多好处 它能够避免实例对象的重复创建 不仅可以减少每次创建
  • C++ operator == 的一些思考

    最近写代码的时候 需要重载 以前也没有进行过太多的思考 都是顺手就写了 在这里就总结一下 下面的代码是 应该是重载 用的最多的写法了 class Demo public Demo int a a a Demo bool operator c
  • java poi读取pdf word excel文档,读取pdf文字图片

    文章目录 依赖 读取pdf文本和图片 简单读取word docx doc文字 读取word doc表格内容 读取word doc图片 读取excel 输出到excel office转pdf 依赖
  • springCloud Eureka 报错解决方案

    在根据大神的文章安装eureka过程遇到些报错 这里记录下比较好的解决方案 史上最简单的 SpringCloud 教程 终章 方志朋的博客 CSDN博客 springcloud 启动Eureka server 直接启动报错 EMERGENC
  • html5图片并列排版,小编,图片与文字并排怎么排版呢?

    图文排版 H5秀 手机图文 小伙伴 小米 我想左边放图片 右边是文字 但是图片插入之后 再编辑文字只能在下一行 我就直接调整段前距 但有时候预览它会错位 想问图片与文字并排如何排版出来呢 这是一个日经题 设置段前距或许是一个方法 但设定的数

随机推荐

  • Windows下PyTorch1.5的下载安装

    在安装PyTorch之前要先安装好CUDA cudNN 以及anaconda 还有就是编译器pycharm 然后你才能开始安装PyTorch 目录 1 创建虚拟环境 2 去PyTorch官网 3 发现警告 4 解决办法 5 pip list
  • 解析波士顿动力Handle机器人背后的技术(附PPT+视频)

    转 http www leiphone com news 201703 URrR8CG2tmtghNDl html 导语 Boston Dynamics 在机器人动力方面堪称翘楚 其由双足或多足机器人组成的机器人天团总是时不时能给我们带来惊
  • Python3 pip

    Python3 pip pip 是 Python 包管理工具 该工具提供了对 Python 包的查找 下载 安装 卸载的功能 软件包也可以在 https pypi org 中找到 目前最新的 Python 版本已经预装了 pip 注意 Py
  • Nginx添加SSL模块

    目录 一 SSL 概述 SSL证书 HTTPS SSL工作原理 二 创建SSL证书 安装openssl 生成证书 三 nginx配置 nginx打补丁添加模块 nginx conf配置 四 访问 一 SSL 概述 SSL Security
  • 向日葵权限mac

    问题 权限打开后自动关上 解决 mac上几乎所有远程软件都会出现这种权限设置问题 换了腾讯会议或其他也没用 方法一 试试先打开系统的安全性设置 将向日葵软件从隐私框里移出来 点击 号移除 再重新添加进去 方法二 将权限的勾选去掉 再添加 然
  • EFCore 数据模型 和 值转换

    操作中经常要涉及到模型和值转换的问题 这里记录一下 实际使用过程中遇到过的问题 而非功能的全部 模型 EFCore中支持字段 参考地址 https docs microsoft com zh cn ef core modeling back
  • SpringBoot框架详解,实战入门教程

    SpringBoot作为当下Java开发最常用的技术框架 相信你也一定听过很多次了 那么到底什么是SpringBoot SpringBoot又有什么用呢 跟着动力节点的视频快速入门springboot 视频观看资源 https www bi
  • CIKM 2023|TASTE:通过文本匹配缓解序列化推荐中流行偏差问题

    序列化推荐系统旨在根据用户的浏览历史动态地为用户推荐下一个商品 这在Yelp TikTok Amazon等众多Web应用程序中发挥着至关重要的作用 这些推荐系统通过使用不同的神经网络架构来学习用户 商品交互中商品之间的依赖关系 从而对用户行
  • Qt:文管打开方式:选择并设置默认程序

    默认启动APP配置文件 local share applications mimeapps list config mimeapps list etc gnome defaults list 全局 QAction action choose
  • 整理一些spring常见的扩展点

    一 各种后处理器 1 1 BeanDefinition与BeanFactory扩展 1 1 1 BeanDefinitionRegistryPostProcessor接口 Extension to the standard link Bea
  • 解决Vue前端报错——Error: Cannot find module ‘node-sass‘

    解决Vue前端报错 Error Cannot find module node sass 今天在使用VsCode 导入一个新Vue項目文件夹的时候出现了以下的问题 npm run dev提示 Cannot find module node
  • Winform自定义表单(转)

    出处 http www newlifex com showtopic 167 aspx 好吧 附件真的损坏了 原始代码我也没有了 再提取我也没精力了 不好意思 哪位之前下过可以重发一遍吗 不过即使没有也可以参考下面几个示例很快就可以做出来了
  • docker容器二之Dockerfile详解+镜像的优化

    文章目录 Dockerfile详解 Dockerfile常用指令 Dockerfile示例 实验截图 解决报错 Shell和exec格式的区别 镜像的优化 Dockerfile详解 Dockerfile常用指令 首先先明白 什么是Docke
  • matlab/simulink scope 示波器添加菜单栏的方法

    在用matlab simulink scope 示波器的时候 弹出的图像框没有菜单栏 保存复制等操作极为不便 以下操作可以让示波器的图形窗口显示出菜单栏 在matlab的command window里执行下面两句代码 set 0 ShowH
  • 【华为OD机试】工号不够用了怎么办【2023 B卷

    华为OD机试 真题 点这里 华为OD机试 真题考点分类 点这里 题目描述 3020年 空间通信集团的员工人数突破20亿人 即将遇到现有工号不够用的窘境 现在 请你负责调研新工号系统 继承历史传统 新的工号系统由小写英文字母 a z 和数字
  • spring的ApplicationContext 得到方式

    ClassPathXmlApplicationContext会自己在CLASSes里面找 不过我只是把配置文件放在src文件下成功找到过 String paths applicationContextDataSource xml appli
  • MarkDown中写流程图的方法

    序 Mermaid FlowChat 中译为美人鱼 就好比一条美人鱼在流动构成了流程图 是一种在MarkDown中以特定格式的文字生成流程图或是图标的方法 一种简单的降价式脚本语言 用于通过javascript从文本生成图表 官方文档点这里
  • 【华为OD机试真题】94、猜密码

    文章目录 一 题目 题目描述 输入输出 样例1 二 代码与思路参考 C语言思路 C代码 C 语言思路 C 代码 Java语言思路 Java代码 Python语言思路 Python代码
  • 13-集合框架

    引言 集合框架 理解为集合体系指的是由很多类共同构成 这些类之间存在关系 继承或实现 是成体系的类和接口 一 认识集合 在java程序中 集合是存放数据的容器 它数组一样 但是但是 是存在差异的 从使用上说 集合更为方便 因为集合容量会随着
  • LTP--Linux Test Project

    简介 LTP套件是由 Linux Test Project 所开发的一套系统测试套件 它基于系统资源的利用率统计开发了一个测试的组合 为系统提供足够的压力 通过压力测试来判断系统的稳定性和可靠性 压力测试是一种破坏性的测试 即系统在非正常的