软件性能测试(连载12)

本文涉及的产品
性能测试 PTS,5000VUM额度
简介: 软件性能测试(连载12)
3Linux I/O分类

Linux I/O分类请参见表3-12所示,


3-12 Linux I/O分类

分类标准

分类名

解释

缩写

是否利用操作系统的页缓存

直接I/O

读写操作<—>文件系统来访问文件


非直接I/O

读写操作<—>系统的页缓存<—>写入磁盘


是否等待响应结果

I/O

跳过文件系统,直接访问磁盘

O_DIRECT

同步I/O

等到整个I/O完成后才获得I/O响应

O_SYNC

异步I/O

不用等待完成和完成后的响应,完成后以通知的方式告知

O_ASYNC

是否利用标准库缓存

缓冲I/O

用标准库(数据<—>流缓存区<—>内核缓存区<—>磁盘)

Buffered I/O

非缓冲I/O

不用标准库(数据<—>内核缓存区<—>磁盘)

NoBuffered I/O

是否阻塞自身的运行

阻塞I/O

没有获得响应,就会阻塞当前的进程

O_BLOCK

非阻塞I/O

没有获得响应,不会阻塞当前的进程,通过轮询

O_NONBLOCK


下面对这几种分类。


缓冲I/O

缓冲I/O是指通过标准库缓存来加速文件的访问,而标准库内部再通过系统调度访问文件。带缓存I/O也叫标准I/O,它符合ANSI C的标准I/O处理,是不依赖系统内核的,所以移植性是比较强的,在使用标准I/O操作的时候为了减少对read()write()系统调用次数,带缓存I/O就是在用户层再建立一个缓存区,这个缓存区的分配和优化长度等细节都是标准I/O库处理好的,用户不用去关心。


非缓冲 I/O

非缓冲 I/O是指直接通过系统调用来访问文件,不再经过标准库缓存。它不是直接对磁盘文件进行读取操作,比如read()write()函数,都属于系统调用,在用户层是没有缓存的,所以称作无缓存I/O。但对于内核而言,还是进行了缓存,只是用户层看不到。


阻塞I/O

阻塞I/O进程发起请求后,如果内核没有准备好数据,进程就会被block住,进入等待阶段,一旦等待内核将数据准备好,返回数据,解除阻塞。


非阻塞I/O

非阻塞I/O进程发起请求后,如果内核没有准备好数据,直接返回一个error信息,进程不需要阻塞等待,然后进程会轮询发送请求,如此往复,一直等到内核准备好数据,才把数据拷贝并返回给进程,结束到此轮询。非阻塞I/O只有是检查无数据的时候是非阻塞的,在数据到达的时候依然要等待复制数据到用户空间。


非阻塞又分为异步非阻塞(I/O复用)和异步非阻塞(信号驱动式I/O)。

Ø异步非阻塞(I/O复用)。


异步非阻塞(I/O复用)由Linux提供select/poll,进程通过将一个或多个fd传递给selectpoll系统调用,阻塞在select这样select/poll可以帮助侦测多个fd是否就绪。但是select/poll是顺序扫描fd是否就绪,并且支持的fd数量是有限的。Linux还提供了一个epoll系统调用,epoll是基于事件驱动方式的,而不是顺序扫描,当有fd就绪时,立即调用函数rollback


Ø异步非阻塞(信号驱动式I/O)。

异步非阻塞(信号驱动式I/O)是指在内核在描述符就绪时发送SIGIO信号通知进程,进程通过信号处理函数接收数据。


同步I/O

同步I/O是指I/O请求导致请求进程阻塞,直到I/O操作完成。阻塞I/O模型、非阻塞I/O模型、异步非阻塞(I/O复用)、异步非阻塞(信号驱动式I/O)都属于同步I/O


异步I/O

异步I/O进程是指I/O请求发生,发起请求,内核数据已经准备好,并且复制到用户进程空间后执行事先指定好的函数。异步I/O不会导致请求进程阻塞。只有异步I/O模型是才是真正意义上的非阻塞I/O


I/O

I/O是指不通过文件系统,直接访问磁盘。


直接 I/O

直接 I/O是指不通过操作系统的页缓存,直接跟文件系统的交互来访问文件。


非直接 I/O

非直接 I/O是指文件读写的时候,先要经过系统的页缓存,然后再由内核或额外的系统调用,真正写入磁盘。


4)磁盘的性能指标

Linux的磁盘性能指标包括以下内容。

使用率。

是指磁盘处理 I/O 的时间百分比。过高的使用率(比如超过 80%),通常意味着磁盘 I/O 存在性能瓶颈。

饱和度。

是指磁盘处理 I/O 的繁忙程度。过高的饱和度,意味着磁盘存在严重的性能瓶颈。当饱和度为 100% 时,磁盘无法接受新的 I/O 请求。

IOPS。(Input/Output Per Second)。

是指每秒的 I/O 请求数。多用于数据库、大量小文件等这类随机读写。

吞吐率。

是指每秒的 I/O 请求大小。多用于多媒体等顺序读写。

响应时间。

是指 I/O 请求从发出到收到响应的间隔时间。


①  磁盘操作活动进行监视

对系统的磁盘操作活动进行监视需要使用iostat工具(需要安装sysstat插件)。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。iostat指标实际上来自/proc/diskstats。经常结合-x -d参数使用,表示显示所有磁盘的I/O的指标。


# iostat -d -x 1
Linux 4.15.0-66-generic (ubuntu) 12/10/2019_x86_64_(4 CPU)
Device           r/s     w/s     rkB/s    wkB/s   rrqm/s   wrqm/s %rrqm  %wrqm r_await w_awaitaqu-sz rareq-sz wareq-sz  svctm  %util
loop0           0.00    0.00      0.00     0.00     0.00     0.00  0.00   0.00    2.80   0.00   0.00     2.35    0.00   0.00   0.00
loop1           0.01    0.00      0.02     0.00     0.00     0.00  0.00   0.00    1.08   0.00   0.00     1.80    0.00   0.08   0.00
loop2           0.00    0.00      0.00     0.00     0.00     0.00  0.00   0.00    5.37   0.00   0.00    2.76     0.00   0.00  0.00
loop3           0.00    0.00      0.00     0.00     0.00     0.00  0.00   0.00    4.60   0.00   0.00     2.42    0.00   0.08   0.00
loop4           0.01    0.00      0.08     0.00     0.00     0.00  0.00   0.00    2.28   0.00   0.00     7.57    0.00   0.36   0.00
loop5           0.42    0.00      0.46     0.00     0.00     0.00  0.00   0.00    0.54   0.00   0.00     1.11    0.00   0.02   0.00
loop6           0.02    0.00      0.03     0.00     0.00     0.00  0.00   0.00    0.44   0.00   0.00     1.59    0.00   0.04   0.00
loop7           0.00    0.00      0.00     0.00     0.00     0.00  0.00   0.00    5.17   0.00   0.00     2.83    0.00   0.00   0.00


其中参数解读如表3-13所示。


3-13 iostat参数

性能指标

含义

注释

r/s

每秒发送给磁盘的读请求数

合并后的请求数

w/s

每秒发送给磁盘的写请求数

合并后的请求数

rkB/s

每秒从磁盘读取的数量

单位(kB

wkB/s

每秒从磁盘写入的数量

单位(kB

rrqm/s

每秒合并的读请求数

%rrqm表示合并的读请求数的百分比

wrqm/s

每秒合并的写请求数

%wrqm表示合并的写请求数的百分比

r_await

读请求处理完成的等待时间

包括队列中的等待时间和设备实际处理的时间,单位(毫秒)

w_await

写请求处理完成的等待时间

包括队列中的等待时间和设备实际处理的时间,单位(毫秒)

apu-sz

平均请求队列的长度

旧版中为angqu-sz

rareq-sz

平均读请求大小

单位(kB

wareq-sz

平均写请求大小

单位(kB

svctm

处理I/O请求所需要的平均时间

不包含等待时间,单位(毫秒),估算值,不保证完全准确

%util

磁盘处理I/O的时间百分比

即使用率,由于并行I/O的存在,100%不一定表明磁盘I/O饱和


在这里,对应上面提到的性能指标与这里的参数如下。

IOPS 。即r/s+ w/s

吞吐量。即rkB/s+wkB/s

响应时间。r_await+w_await

使用率。%util


iostat
Linux 4.15.0-66-generic (ubuntu) 12/10/2019_x86_64_(4 CPU)
avg-cpu: %user   %nice %system %iowait  %steal  %idle
            0.93   0.25    0.72    0.07    0.00     98.03
Device            tps    kB_read/s   kB_wrtn/s    kB_read    kB_wrtn
loop0            0.00         0.00         0.00         47          0


如果%iowait的值过高,表示硬盘存在I/O瓶颈。

如果%idle值高但系统响应慢时,可能是CPU等待分配内存,应加大内存容量。

如果%idle值持续低于10,表明CPU处理能力相对较低,系统中最需要解决的资源是CPU

%util接近100%,说明产生的I/O请求太多,I/O系统已经满负荷。


顾翔老师与云测学院联合推出:软件测试分析与设计,请点击https://v.youku.com/v_show/id_XNDQ3MzkyNjk3Ng==.html?spm=a2hzp.8244740.0.0,收看。有不同观念欢迎与顾翔老师交流!


投票已过期

1.以下你用过哪些集中配置管理系统?(多选)

  • puppet
  • Chef
  • ansible
  • saltstack
  • Cfengine
  • Capistrano
  • Resque
  • Rundeck
  • Rundeck
  • 其他

2.以下你用哪些过虚拟机或容器?(多选)

  • VMware
  • Vagrant
  • Amazon EC2
  • AMI(亚马逊云机器镜像)
  • Vagrant
  • Docker
  • Rkt
  • 裸金属服务器
  • 其他

3.以下你用哪些操作系统自动化配置工具?(多选)

  • Solaris10 JumpStart
  • Kickstart
  • Debian-Preseed
  • 其他

4.以下你用哪些云平台?(多选)

  • Amazon Web Services
  • Google App Engine
  • Windows Azure
  • OpenShift
  • Cloud Foundry
  • AWS CloudFormation
  • Microsoft Azure Stack
  • OpenStack Heat
  • 百度云
  • 阿里云
  • 腾讯云
  • 其他

5.以下你用哪些CI/CD工具?(多选)

  • Jenkins
  • ThoughtWorks GoCD
  • Atlassian Bamboo
  • Microsoft Team Foundation Server
  • TeamCity
  • GitLab CI
  • Travis CI
  • SNAP CI
  • Pivotal的Concourse
  • Etsy的Morgue
  • 其他

6.以下你用哪些管理工具?(多选)

  • JIRA
  • LeanKit
  • Mingle
  • 禅道
  • 其他

7.以下你用哪些安全工具?(多选)

  • Vault
  • Keywhiz
  • credstash
  • Red October
  • Metasploit
  • OSSEC
  • Tripwire
  • Unhide
  • OWASP ZAP Zed Attack Proxy Project
  • Lynis
  • The Browser Exploitation Framework
  • OWASP Xenotix XSS Exploit Framework
  • OWASP Offensive Testing Framework
  • Brakeman
  • WPScan
  • nmap
  • Burp Suite
  • AWVS
  • AppScan
  • CSRFTester
  • SQL Map
  • Pangolin
  • DirBuster
  • 其他

8.以下你用哪些静态扫描工具?(多选)

  • Sonar
  • Brakeman
  • Codeclimate
  • CheckStyle
  • 其他



相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
目录
相关文章
|
1月前
|
测试技术 开发者 Python
自动化测试之美:从零构建你的软件质量防线
【10月更文挑战第34天】在数字化时代的浪潮中,软件成为我们生活和工作不可或缺的一部分。然而,随着软件复杂性的增加,如何保证其质量和稳定性成为开发者面临的一大挑战。自动化测试,作为现代软件开发过程中的关键实践,不仅提高了测试效率,还确保了软件产品的质量。本文将深入浅出地介绍自动化测试的概念、重要性以及实施步骤,带领读者从零基础开始,一步步构建起属于自己的软件质量防线。通过具体实例,我们将探索如何有效地设计和执行自动化测试脚本,最终实现软件开发流程的优化和产品质量的提升。无论你是软件开发新手,还是希望提高项目质量的资深开发者,这篇文章都将为你提供宝贵的指导和启示。
|
2月前
|
机器学习/深度学习 人工智能 监控
提升软件质量的关键路径:高效测试策略与实践在软件开发的宇宙中,每一行代码都如同星辰般璀璨,而将这些星辰编织成星系的过程,则依赖于严谨而高效的测试策略。本文将引领读者探索软件测试的奥秘,揭示如何通过精心设计的测试方案,不仅提升软件的性能与稳定性,还能加速产品上市的步伐,最终实现质量与效率的双重飞跃。
在软件工程的浩瀚星海中,测试不仅是发现缺陷的放大镜,更是保障软件质量的坚固防线。本文旨在探讨一种高效且创新的软件测试策略框架,它融合了传统方法的精髓与现代技术的突破,旨在为软件开发团队提供一套系统化、可执行性强的测试指引。我们将从测试规划的起点出发,沿着测试设计、执行、反馈再到持续优化的轨迹,逐步展开论述。每一步都强调实用性与前瞻性相结合,确保测试活动能够紧跟软件开发的步伐,及时适应变化,有效应对各种挑战。
|
1月前
|
jenkins 测试技术 持续交付
自动化测试框架的构建与优化:提升软件交付效率的关键####
本文深入探讨了自动化测试框架的核心价值,通过对比传统手工测试方法的局限性,揭示了自动化测试在现代软件开发生命周期中的重要性。不同于常规摘要仅概述内容,本部分强调了自动化测试如何显著提高测试覆盖率、缩短测试周期、降低人力成本,并促进持续集成/持续部署(CI/CD)流程的实施,最终实现软件质量和开发效率的双重飞跃。通过具体案例分析,展示了从零开始构建自动化测试框架的策略与最佳实践,包括选择合适的工具、设计高效的测试用例结构、以及如何进行性能调优等关键步骤。此外,还讨论了在实施过程中可能遇到的挑战及应对策略,为读者提供了一套可操作的优化指南。 ####
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
自动化测试的新篇章:利用AI提升软件质量
【10月更文挑战第35天】在软件开发的海洋中,自动化测试犹如一艘救生艇,它帮助团队确保产品质量,同时减少人为错误。本文将探索如何通过集成人工智能(AI)技术,使自动化测试更加智能化,从而提升软件测试的效率和准确性。我们将从AI在测试用例生成、测试执行和结果分析中的应用出发,深入讨论AI如何重塑软件测试领域,并配以实际代码示例来说明这些概念。
63 3
|
2月前
|
敏捷开发 监控 jenkins
自动化测试之美:打造高效的软件质量保障体系
【10月更文挑战第20天】在软件开发的海洋中,自动化测试如同一艘精准的导航船,引领项目避开错误的礁石,驶向质量的彼岸。本文将扬帆起航,探索如何构建和实施一个高效的自动化测试体系,确保软件产品的稳定性和可靠性。我们将从测试策略的制定、工具的选择、脚本的编写,到持续集成的实施,一步步描绘出自动化测试的蓝图,让读者能够掌握这一技术的关键要素,并在自己的项目中加以应用。
38 5
|
2月前
|
测试技术
软件质量保护与测试(第2版)学习总结第十三章 集成测试
本文是《软件质量保护与测试》(第2版)第十三章的学习总结,介绍了集成测试的概念、主要任务、测试层次与原则,以及集成测试的不同策略,包括非渐增式集成和渐增式集成(自顶向下和自底向上),并通过图示详细解释了集成测试的过程。
79 1
软件质量保护与测试(第2版)学习总结第十三章 集成测试
|
2月前
|
测试技术
软件质量保护与测试(第2版)学习总结第十章 黑盒测试
本文是《软件质量保护与测试》(第2版)第十章的学习总结,介绍了黑盒测试的基本概念和方法,包括等价类划分、边界值分析和因果图法,并通过具体例子展示了如何设计测试用例来验证软件的功能性需求。
76 1
软件质量保护与测试(第2版)学习总结第十章 黑盒测试
|
2月前
|
人工智能 人机交互 数据库
软件质量保护与测试(第2版)学习总结第一章
本文是《软件质量保护与测试》(第2版)第一章的学习总结,概述了软件的特征、分类、软件工程的层次化技术、现代软件开发的变化,以及软件质量的概念和评价体系,包括黑盒、白盒和灰盒测试方法。
41 1
软件质量保护与测试(第2版)学习总结第一章
|
2月前
|
Java 测试技术 持续交付
探索自动化测试的奥秘:提升软件质量的关键
【10月更文挑战第20天】 在当今快速发展的软件行业中,自动化测试已成为确保产品质量和加速开发周期的重要工具。本文将深入探讨自动化测试的核心概念、实施策略及其对软件开发生命周期的影响,旨在为读者提供一种全面理解自动化测试的视角,并展示如何有效地将其应用于实际项目中以提高软件质量和效率。
29 2
|
2月前
|
测试技术
软件质量保护与测试(第2版)学习总结第十一章 白盒测试
本文是《软件质量保护与测试》(第2版)第十一章的学习总结,详细讲解了白盒测试中的控制流测试技术,包括语句覆盖、判断覆盖、条件覆盖、判定-条件覆盖和路径覆盖等方法,并通过具体代码示例展示了如何设计测试用例来验证程序中的不同执行路径。
72 2