√三个月历练,成功迈入软件测试行业
学科介绍
课程大纲
就业薪资
师资力量
√性能调优来助力,成功摆脱点点点
√懂测试更懂开发
√让黑客无机可乘
√打开焕然一新的全场景世界
√培训与就业一站式服务
一、CPU监控
在单用户多任务的操作系统中,或者多用户多任务的操作系统中,系统同时运行多个程序,这些程序的并行运行势必形成对系统资源的竞争使用。因此,操作系统必须能够处理和管理这种并行运行的程序,使之对资源的使用按照良性的顺序进行
进程是一个程序关于某个数据集的一次运行。进程是程序的一次运行活动,是一个动态的概念,而程序是静态的概念,是指令的集合。进程具有动态性和并发性,程序是进程运行所对应的运行代码,一个进程对应于一个程序,一个程序可以同时对应于多个进程。一个进程从创建而产生至撤销而消亡的整个生命周期,可以用一组状态加以刻画。为了便于管理进程,把进程划分为几种状态,分别有三态模型和五态模型。
当处理器不能即时处理进程时,就会出现进程排队的现象,如果出现持续排队的现象就说明CPU当前处于繁忙状态,所以分析CPU是否处于繁忙状态的第一个指标是CPU的队列长度。
进程的三态模型如图9-18所示。
图9-18进程三态模型及其状态转换
按照进程在执行过程中的不同状况,至少可以定义三种不同的进程状态。
1)运行态:占有处理器正在运行。
2)就绪态:具备运行条件,等待系统分配处理器以便运行。
3)等待态(阻塞态):不具备运行条件,正在等待某个事件的完成。
一个进程在创建后将处于就绪状态。每个进程在执行过程中,都处于上面三种状态中的某一种状态。同时,在一个进程执行过程中,它的状态将会发生改变。
运行状态的进程将由于出现等待事件而进入等待状态,当等待事件结束之后等待状态的进程将进入就绪状态,而处理器的调度策略又会引起运行状态和就绪状态之间的切换。引起进程状态转换的具体原因如下:
1)运行态→等待态:等待使用资源,如等待外设传输;等待人工干预。
2)等待态→就绪态:资源得到满足,如外设传输结束;人工干预完成。
4)就绪态→运行态:CPU空闲时选择一个就绪进程。
进程的五态模型如图9-19所示。
图9-19进程五态模型及其状态转换
相对于三态模型,五态模型增加以下两种状态:
挂起就绪态:表明进程具备运行条件但目前在二级存储器中,当它被对换到主存才能被调度执行。
挂起等待态:表明进程正在等待某一个事件且在二级存储器中。
引起进程状态转换的具体原因如下:
1)等待→挂起等待:没有进程处于就绪状态或就绪进程要求更多内存资源时,发生这种转换,以提交新进程或运行就绪进程;
2)就绪→挂起就绪:当有高优先级阻塞(系统认为会很快就绪的)进程和低优先级就绪进程时,系统会选择挂起低优先级就绪进程;
3)运行→挂起就绪:对抢占式系统,当有高优先级阻塞挂起进程因事件出现而进入就绪挂起时,系统可能会把运行进程转到挂起就绪状态;
4)挂起就绪→就绪:没有就绪进程或挂起就绪进程优先级高于就绪进程时,发生转换;
5)挂起等待→等待:当一个进程释放足够内存时,系统会把一个高优先级挂起阻塞(系统认为会很快出现所等待的事件)进程转换为等待状态;
vmstat命令的基本使用方法如下:
vmstatintervalcount
Count指需要输入多少次结果。
例如:vmstat210表示每隔2秒输出一次结果,一共输出10次结果。
下文切换的显著增加,如cs比磁盘I/O和网络信息包速率高得多,这些都应该进一步检查。
分析完成CPU队列值之后需要进一步分析CPU的繁忙程度,分析CPU的繁忙程度主要从以下几个方面分析:
-us
-sy
-id
-wa
分析了CPU细分的百分比后,接下来应该继续分析CPU密集程序,分析CPU密集程序有两个标准工具,ps命令和top命令。
ps命令是一个灵活的工具,用来识别系统中运行的程序和它们使用的资源,它显示关于系统中进程的统计信息和状态信息,如线程或线程标识、I/O活动、CPU或内存利用情况。
一般使用ps命令需要分析三个可能输出的列:
需要获得最近使用CPU高度密集的用户进程,可以使用以下命令:
ps–ef报告如图9-20所示。
图9-21psau报告
通过top命令也可以获取CPU密集程序,top命令可以动态监控系统资源使用情况。
二、内存监控
VMM在处理虚拟地址空间时,会将虚拟地址空间划分成段,每段的大小是256MB,它是虚拟内存地址空间中一个邻接的部分,数据对象可以映射到该空间。进程对数据的寻址能力按段(或对象)的级别进行管理,所以段既可以在进程间共享,也可以进行专门维护,如进程可以共享代码段但拥有独立和专用的数据段。
虚拟内存段划分成固定大小的单元,把这种单元叫做页,缺省值页面大小为4096字节,但有一些系统也支持大页面,通常只能通过系统调用shmat访问。段中的每页在需要之前可位于内存(RAM)中,或存储在磁盘上,同样,实内存也可以划分成4096字节的页面帧,VMM的角色是管理分配实内存页面帧并且解析程序对虚拟内存页面的引用,这些页面当前不在实内存中或还不存在(例如,当进程第一次引用其数据段的某一页时),在任何给定时刻使用的虚拟内存数量可能比实内存大,所以VMM必须将余量存储在磁盘上。
SWAP又被称为交换分区,它的作用是在物理内存使用完之后,将磁盘空间(也就是SWAP分区)虚拟成内存来使用。它和Windows系统的交换文件作用类似,但是它是一段连续的磁盘空间,并且对用户不可见,但其访问速度远远慢于实内存的访问速度。
Active/inactive:活动和非活动内存,当前被process使用内存为活动内存,已经分配但是未被使用内存为非活动内存。
KernelUsageofMemory:在操作系统过程中,内核也需要使用内存,该值记录内核使用内存的情况。
监控内存使用情况的工具通常有:vmstat和ps。
Vmstat命令总结了系统中所有进程使用的总活动虚拟内存,以及空闲列表上实内存页帧的数量,活动的虚拟内存定义为虚拟内存中实际可以得到的工作段页面的数量。
vmstat210报告如图9-22所示。
图9-22vmstat210报告
从图9-22中到可以看出内存中buffer和cache分配情况,其中free是指空闲的内存,一个页面是实内存4KB的区域,系统维护内存页面的缓冲区,称为空闲列表,当VMM需要空间时可以很方便地访问此空闲列表。一般情况下如果free的值较大时swap的值则显示为零,因为当内存够用时就没有必须使用交换分区了,所以看到swap栏中的si/so两列的值也为零。
si:Therateofmemory(inKB/s)thathasbeenswappedinfromdiskduringthelastsample。自上次取样以来从磁盘交换进来内存比特率。
so:Therateofmemory(inKB/s)thathasbeenswappedouttodiskduringthelastsample。自上次取样以来交换到磁盘的内存比特率。
vmstat-s报告如图9-23所示。
图9-23vmstat-s报告
该报告详细列出了内存的使用数据,其中页面调进和页面调出的数量代表虚拟内存从页面空间和文件空间调进或调出页面的活动。
缺页故障;
工作段已经达到的大小;
内存中工作段和代码段的大小;
文本段的大小;
驻留集的大小;
进程合作的实内存百分比;
如实例psv,报告如图9-24所示。
图9-24psv报告
结果报告中重要列描述如下:
-PGIN
缺页故障引起的页面调进的数目,操作系统把所有I/O归于缺页故障,所以该项主要是I/O量的测量。
-SIZE
进程数据区的虚拟大小(在调页空间),用千字节表示(在其它标志中用SZ来表示),这个数目等于进程可用的工作段页数目的4倍。如果一些工作段页当前被调出,这个数字将大于所使用的实内存量,SIZE包含了私有段的页面和进程的共享库数据段。
-RSS
进程实内存(驻留集合)的大小,用千字节表示。这个数值等于内存中的工作段页和代码段页数和的4倍,代码段页是为所有当前程序运行的实例所共享的,如果26个ksh进程正在运行,那么只能是ksh可执行程序的任何给定页面的一份副本位于内存中。
-TSIZ
文本(共享程序)映像的大小,这是可执行文件的文本区域的大小,可执行程序文本区的页面是只能在用到时带入内存中的,即转移到内存或从内存装入。这个值表明可以装入的文本量的上限,TSIZ的值并不反映实内存的使用情况。
-TRS
文本驻留集合(实内存)的大小,这个值等于进程可用的代码段页数值的4倍。
%MEM
由内存中工作段和代码段页和的4倍(即RSS的值),再除以机器实内存的大小(单位为KB),再乘以100,四舍五入到最接近的百分点,这个指表明了进程使用的实内存,它不会夸大一个进程与其它进程共享程序文本的开销。
注意:ps命令并不表明共享内存段或内存映像段消耗的内存,因为许多应用程序使用共享内存或内存映像段。
如果需要获得物理内存和swap交换分区的详细信息可以使用procinfo命令。
三、磁盘监控
在介绍磁盘监控前,先介绍固定磁盘存储管理的性能,固定磁盘存储器的结构层次如图9-25所示。
图9-25固定磁盘存储器的层次结构
每个单独的磁盘驱动器称为一个物理卷(PV),它们各有一个名称,例如/dev/hdisk0,如果物理卷在使用,那么它属于一个卷组(VG),卷组中所有物理卷划分成相同大小(如果卷组包含的物理卷小于4GB,则缺省值是4MB,对于更大的磁盘该值为8MB或更多)的物理分区(PP)。
根据空间分配的用途,每个物理卷可以分成五个区域,根据磁盘驱动器的不同,每个区域中物理分区的数量也不同。在每个卷组中定义一个或多个逻辑卷(LV),每个逻辑卷由一个或多个逻辑分区组成,每个逻辑分区至少对应一个物理分区,如果指定为逻辑卷制作镜像,就需要分配额外的物理分区存储每个逻辑分区的额外副本,虽然逻辑分区是连续编号的,但底层的物理分区不必连续或邻接。
逻辑卷为系统用途提供服务(例如页面调度),但是每个容纳常规系统数据或用户数据或程序的逻辑卷都包含一个单独的日志文件系统(JFS或增强型JFS),每个JFS由页大小(4096字节)块的池组成。当数据要写入某个文件中时,会为这个文件分配一个或多个额外的块,这些块彼此和与先前分配给这个文件的其它块之间可能邻接也可能不邻接。
关于磁盘的监控应该重点考虑以下几方面的内容:
第一:查找当前最活跃的文件、文件系统和逻辑卷
a)“热”文件系统是定位在一个物理驱动器上还是分散在多个物理驱动器上;
b)调页空间是否支配磁盘应用
c)是否有足够的内存来高速缓存那些由正在运行进程使用的文件页面
d)应用程序是否执行许多同步(非高速缓存)的文件I/O
第二:查看使用率最高的物理卷
一般的在对磁盘配置或调整参数做出重要改动之前,需要先对当前的配置和性能进行监控,得到一条评估的基线数据。
iostat53报告如图9-26所示。
图9-26iostat53报告
注意:如果在Linux未发现该命令,那么需要先安装sysstat包,安装命令为rpm–ivhsysstat-7.0.2-3.el5.i386。sysstat包中包括iostat、mpstat、sar和sa四个工具。
如果需要指定磁盘名称,可以使用-d选项。
例如:iostat–dsda1,报告如图9-27所示。
图9-27iostat-dsda1报告
-tps
表示每秒钟物理磁盘传送的次数,一次传送是从设备驱动程序到物理磁盘的一次I/O处理请求,多重逻辑请求可以组合成单一的磁盘I/O请求,传送的大小是不确定的。
-Blk_read/s
显示在测量间隔中每秒钟从物理卷中读取的数据量(以KB/s为单位)。
-Blk_wrtn/s
显示在测量间隔中每秒写入物理卷的数据量(以KB/s为单位)。
-Blk_read
显示在测量间隔中总的从物理卷中读取的数据量(以KB为单位)。
-Blk_wrtn
显示在测量间隔中总的写入物理卷的数据量(以KB为单位)。
sar命令是用来收集关于系统的统计数据的标准UNIX命令,通过该命的-d选项,可以详细的查看磁盘I/O的统计信息。
例如sar–d33的报告如图9-28所示。
图9-28sar-d33报告
%busy
avque
r+w/s
进出设备的读/写传送次数,这同iostat命令中的tps列内容一致。
blks/s
以512字节为单位传送的字节数。
Avwait
avserv
如果需要测试磁盘写能力,使用以下命令
timeddif=/dev/zeroof=/test.dbfbs=8kcount=300000
因为/dev/zero是一个伪设备,它只产生空字符流,对它不会产生I/O,所以I/O都会集中在of文件中,of文件只用于写,所以这个命令相当于测试磁盘的写能力。其中300000表示写的次数。
如果需要测试磁盘读能力,使用以下命令
timeddif=/dev/sda1of=/dev/nullbs=8kcount=300000
因为/dev/sda1是一个物理分区,对它的读取会产生I/O,/dev/null是伪设备,相当于黑洞,of到该设备不会产生I/O,所以,这个命令的I/O只发生在/dev/sdb1上,也相当于测试磁盘的读能力。其中300000表示读的次数。
如果需要测试磁盘同时读写能力,使用以下命令
timeddif=/dev/sda1of=/test1.dbfbs=8kcount=300000
这个命令下,一个是物理分区,一个是实际的文件,对它们的读写都会产生I/O(对/dev/sda1是读,对/test1.dbf是写),假设他们都在一个磁盘中,这个命令就相当于测试磁盘的同时读写能力。其中300000表示读的次数。
一般来说,高的%iowait表明系统存在一个应用程序问题、缺少内存问题或低效的I/O子系统配置,例如,应用程序的问题可能是由于许多I/O请求,而不是处理许多数据。理解I/O瓶颈并且要清楚解决瓶颈问题的关键在于提高I/O子系统的效率。磁盘的灵敏度可以以下几种方式出现,并具有不同的解决方法,一些典型的解决方案如下:
限制在特定的物理磁盘上活动逻辑卷和文件系统的数目,该方法是为了在所有的物理磁盘驱动器中平衡文件I/O;
在多个物理磁盘间展开逻辑卷,该方法在当有一些不同的文件被存取时特别有用;
为一个卷组创建多个Journaled文件系统(JFS)日志并且把它们分配到特定的文件系统中(最好在快速写高速缓存驱动器中),这对应用程序创建、删除或者修改大量文件特别是临时文件来说十分有用;
如果有迹象表明一小部分文件被一次又一次地读取,可以考虑附加的实存是否允许那些文件更加有效地缓存;
如果负载的存取模式是随机占主导地位,可以考虑增加磁盘并把将那些随机存取的文件分布到更多更好多的磁盘中;
如果负载的存取模式是顺序占主导地位并且涉及多个磁盘驱动器,可以考虑增加一个或多个磁盘适配器,也可以适当地考虑构建一个条带状逻辑卷来适应大型并且性能关键的顺序文件;
使用快速写高速缓存设备;
使用异步I/O;
四、网络监控
如果系统的性能出现问题了,但发现其它指标并没任何问题,那么这很可能是由于网络原因导致系统的性能出现问题。如何判断是否是由于网络的原因导致系统性能受影响呢一个简单的办法是比较涉及网络的操作和与网络无关的操作,如果正在运行的程序在进行一定距离的远程读取和写入,而且运行很慢,但其它的操作是正常的,那这很可能是网络问题造成的,一些潜在的网络瓶颈可能由以下因素造成:
客户端网络接口;
网络带宽;
网络拓扑结构;
服务器端网络接口;
服务器CPU负载;
服务器存储器使用状态;
服务器带宽;
配置效率低下;
ping命令,在下面这些情况下ping命令有帮助:
确定网络的状态和各种外部主机;
跟踪并隔离硬件和软件故障;
对网络的检测、测定和管理;
关于ping命令常用参数项如下:
-c
指定了信息包数,如果有IP记录参数,那么这个参数也有可用的,可以捕捉到ping信息包的最小值。
-s
指定信息包的长度,可以使用这个参数项来检查分段和重新组合。
-f
以10ms的间歇发送信息包或者在每次回应之后立即发送,只有根用户才可以使用这个参数项。
如图9-29所示的实例。
图9-29ping命令报告
注意:ping命令在网络上运行可能很困难,应该小心使用,连续执行ping命令只能由根用户操作。
如果测试过程中发送大量的信息包到目的地址,需要考虑如下几个方面的内容:
发送信息包对系统来说,增加了负载;
使用netstat–i命令可以在试验过程中监测网络接口的状态,通过查看0errs的输出可以发现系统在发送过程中删除信息包的信息;
同时还需要监控其它的资源,如mbuf和发送/接收队列,很难在目标系统上增加一个大的负载,或者在其它的系统过载之前该系统就过载了;
Netstat命令可以用来显示网络的状态,一般来说,它是用来于故障识别作为性能评定用的,通常该命令可以确定网络上的流量,从而可以确定性能故障是否由于网络阻塞所引起。netstat命令显示关于配置网络接上的流量,主要包括以下几方面:
和套接字有关的任何一个协议控制块的地址及所有套接字的状态;
收到、发送出去和通信子系统中丢失的信息包数量;
每个接口的累计统计信息;
路由和它们的状态;
netstat命令格式如下:
netstat选项
常用选项的含义如下:
-a
显示所有socket,包括正在监听的。
每隔1秒就重新显示一遍,直到用户中断他。
-i
显示所有网络接口的信息,格式同“ifconfig–e”。
-n
以网络IP地址代替名称,显示出网络连接情形。
-r
显示核心路由表,格式同“route–e”。
-t
显示TCP协议的连接情况。
-u
显示UDP协议的连接情况。
-v
显示正在进行的工作。
netstat–in命令:显示所有配置接口的状态,如图9-30所示。
图9-30netstat-in命令报告
MTU:最大传输单元,使用接口时可以传输的最大信息包大小,以字节为单位。
RX和TX这两列表示的是已准确无误地收发了多少数据包(RX-OK/TX-OK)、产生了多少错误(RX-ERR/TX-ERR)、丢弃了多少包(RX-DRP/TX-DRP),由于误差而遗失了多少包(RX-OVR/TX-OVR);最后一列展示的是为这个接口设置的标记,在利用ifconfig显示接口设置时,这些标记都采用一个字母。说明如下:
B:已设置了一个广播地址。
L:该接口是个回送设备。
M:接收所有数据包(混乱模式)。
N:避免跟踪。
O:在该接口上,禁用ARP。
P:这是个点到点链接。
R:接口正在运行。
U:接口处于“活动“状态。
图9-31netstat-nr报告
输出结果中,第二列展示的是路由条目所指的网关,如果没有使用网关,就会出现一个星号(*)或0.0.0.0;第三列展示路由的概述,在为具体的IP地址找出最恰当的路由时,内核将查看路由表内的所有条目,在对找到的路由和目标路由比较之前,将对IP地址和genmask进行按位“和”计算;第四列显示了不同的标记,这些标记的说明如下:
Gateway:显示路由条目所指的网关,如果没有使用网关,就会出现一个星号(*)或0.0.0.;
Genmask:显示路由的概述,在为具体的IP地址找到最合适的路由时,内核将查看路由表内的所有条目,在对找到的路由和目标路由比较之前,将IP地址和Genmask进行按位“与”计算;
Flags:显示标记信息,常用标记如下:
G:路由将采用网关;
U:准备使用的接口处于“活动”状态;
H:通过该路由,只能抵达一台主机;
D:如果路由表的条目是由ICMP重定向消息生成的,就会设置这个标记;
M:如果路由表条目已被ICMP重定向消息修改,就会设置这个标记;
Iface:显示该连接所用的物理网卡,如eth0表示用第一张,eth1表示用第二张。
如果需要显示活动或被动套接字的信息,可使用选项-t、-u、-w和-x,其分别表示TCP、UDP、RAW和UNIX套接字连接。如果还需要显示出等待连接(也就是说处于监听模式)的套接字,可以使用-a标记,这样就能得到一份服务器清单,当前所有运行于系统中的所有服务器都会列入其中。
图9-32netstat-nr报告
本章主要讲解了关于“性能测试—Linux/Unix操作系统监控”的内容,大家喜欢的话可以每天来这里和小编一起学习涨薪技能哦。(笔芯)