操作系统性能调试.docx
《操作系统性能调试.docx》由会员分享,可在线阅读,更多相关《操作系统性能调试.docx(28页珍藏版)》请在冰豆网上搜索。
操作系统性能调试
操作系统性能优化管理
系统性能管理
要对系统进行性能分析和调试,其前提条件是知道好的性能是什么含义,一般我们可以从以下两个角度来衡量系统性能状态:
1)响应时间(ResponseTime)
从用户的角度来看,系统处于良好的性能状态是指系统能够快速响应用户的请求,即系统响应时间短。
具体地说,响应时间是指发出请求的时刻到用户的请求的相应结果返回用户的时间间隔。
2)吞吐量(Throughput)
从系统管理员角度来看,系统的吞吐量成为系统处于良好的性能状态的指标。
具体地说,吞吐量是在给定时间段内系统完成的交易数量。
即系统的吞吐量越大,说明系统在单位时间内完成的用户或系统请求越多,系统的资源得到充分利用。
系统管理员的使命
一般地,系统管理员的主要功能为:
Makingthesystemavailabletoothers
Monitoringtheusageofthesystem
Maintainingacertainlevelofperformance
Planningforfutureprocessingneeds
资源与瓶颈
要使系统处于良好性能状态,就必须让所有的系统资源协调工作。
1)系统资源(SystemResource)
计算机组成十分复杂,但关键的系统资源不外如下这些:
CPU
内存
磁盘
输入输出,尤其是网络和串行通信
2)瓶颈(Bottleneck)
在计算机的众多资源中,由于系统配置的原因,某种资源成为系统性能的瓶颈是很自然的事情。
当所有用户或系统请求对某种资源的需求超过它的可用数量范围时,我们称这种资源成为瓶颈。
当系统出现瓶颈时,消除瓶颈是方法通常有两种:
增加成为瓶颈的资源的数量;
减少请求的数量;
影响系统性能的因素
应该说,影响系统性能的因素很多,但归纳起来主要有以下几个因素:
硬件因素:
CPU个数够不够?
内存够不够?
等等
操作系统:
操作系统的配置是否合理?
应用软件:
应用系统设计得如何;
人的因素:
操作人员是否有充分的培训,以完全懂得操作系统?
经常性的变化因素:
用户的需求是否经常性变化?
用户对系统负载的要求是否经常性变化?
系统性能调试的一般原则
对系统进行性能调试必须遵循一定的原则,这些原则都经验丰富的工作师经过多年的实践总结出来的。
性能调试是一件严肃的事情,不要对系统的各种参数进行随意的改动;
一次只对某个领域进行性能调试,例如对CPU的使用情况进行分析;
每次只改动一个设置;
每次对系统性能进行分析时,至少使用两种性能分析和调试工具;
经验是最好的分析和调试工具;
知道什么情况下该停止操作;
一般地,我们有以下四条性能调试的规则:
1)当你回答一个关于计算机系统性能的问题时,最初的回答总是“可能吧,视具体情况而定(Itdepends)”。
当然这个回答不会让用户满意的,因此,我们必须进一步可能对系统性能产生影响的各种因素进行分析,它们所有作用是什么,起多大的作用。
2)性能分析和调试总是存在着折衷。
当系统管理员试图对计算机系统的性能进行调整时,们可能需要修改系统参数,或修改应用。
然而,性能调试不存在唯一回答或最优答案。
比如:
tuningtoimprovememoryutilizationmaydegradefilesystemperformance;ChoosingRAIDdiskcomfigurationsfordataintegritymaybelessexpersivethanaltternativemirroringsolutionsthatoftenimproveperformance.Itismaybemorecost-effectivetopurchaseaCPUupgraderatherthanspenddaysorweeksanalyzinghowtheapplicationcouldbechangedtoimproveperformance.
3)在分析系统性能的同时,系统性能将会受到影响。
由于在进行系统性能分析时,性能分析工具本身将会占用一定的系统资源,如CPU资源、内存资源等等。
我们必须注意到这点,即分析工具本身运行可能会导致系统某方面的资源瓶颈情况更加严重。
4)只用一种工具是无法全面、正确地分析出系统的资源瓶颈所在。
1:
性能分析工具综述
2:
如何知道系统安装了哪些性能分析工具?
3:
SAR
4:
time和timex
5:
iostat
6:
vmstat
7:
GlancePlus
性能分析工具综述
目前,对系统进行性能调试的工具有很多,这些可以两大类:
一类是标准的分析工具,即所有的UNIX都会带的分析工具;另一类是不同厂商的UNIX所特有的性能分析工具,比如HP-UX就有自己的增值性能分析工具。
标准的分析工具,即所有的UNIX都会带的分析工具:
sar
iostat
vmstat
time
ps
bdf
top
ipcs
uptime
HP-UX自己的增值性能分析工具:
glance/gpm
puma
xps
按性能分析工具的用途来说,它可以分为:
CPU的使用情况:
sar,time,top,ps,puma,xps
内存的使用情况:
vmstat,ipcs
文件系统状态:
dbf,iostat,sar,swapinfo,nfsstat
I/O子系统状态:
iostat
网络性能:
netstat
按分析时间点来分,性能分析工具可以分为:
日志型分析工具,如puma,xps,它们将在对系统在某一段时间的运行情况进行取样,然后得出某此结果。
这种分析工具非常适合于针对那些时断时续发生的问题进行分析,因为通过取样,可以得出结论;
实时型分析工具,如glance,它们又称“快照型分析工具”,即它们将实时取出系统运行环境的数据,这种分析工具非常适合于那些在分析工具正在运行时发生的问题,或一直发生的问题。
如何知道系统安装了哪些性能分析工具?
想知道系统中安装了何种性能分析工具,运行命令:
#/opt/perf/perfstat-v
SAR-SystemActivityReporter
顾名思义,SAR工具将对系统的当前状态进行取样,然后通过计算数据和比例来表达系统的当前运行状态。
它的特点是:
SystemV-based,在很多的UNIX版本中都存在;
可以连续对系统取样,获得大量的取样数据;
取样数据和分析的结果都可以入文件;
自己所需的负载很小
SAR也有一个致命的不足,这就是:
SAR不能对某个进程进行深入分析,它仅是一对系统的整体情况进行分析。
SAR的语法为:
#sar[-ubdycwaqvmAMS][-ofile]t[n]:
每隔t秒取样一次,共取样n次,其中-ofile表示取样结果将以二进制形式存入文件file中;
#sar[-ubdycwaqvmAMS][-stime][-etime][-isec][-ffile]:
表示从file文件中取出数据,如果没有指定-ffile,则从标准数据文件/var/adm/sa/sadd取数据,其中dd表示当前日子。
另外,-stime表示起始时间;-etime表示停止时间;-isec表示取样的时间间隔,如果不指定则表示取文件中所有的数据。
对[-ubdycwaqvmAMS]的解释请参阅相关的系统分析领域,如-u表示对CPU的分析;-A表示汇总所有数据,即等于-ubdycwaqvm,-M表示对多个CPU环境中每个CPU都进行各自的分析,一般它与-q和-u联合使用,以对每个CPU的使用情况进行分析
从前面的命令语法中可知,sar可以从一个文件中读取性能数据,这个文件可以通过sar来产生(如sar-ofile23),也可以通过其他的命令来产生,具体地说,可以通过以下几个命令来产生:
#/usr/lbin/sa/sadc[tn][ofile]:
以t秒为时间间隔,共取样n次,所有数据存入文件ofile。
如果我们要对系统进行分析,则通常的做法是:
第一步,mkdir/var/adm/sa;第二步,chownadm:
adm/var/adm/sa;第三步,/usr/lbin/sa/sadc/var/adm/sa/sa`date+%d`,它会在/var/adm/sa目录下创建一个sadd文件,其中dd表示当前日期,这个命令将对以前取样进行清零。
运行shell命令:
#/usr/lbin/sa/sa1[tn]:
表示以t秒为时间间隔,共取样n次,所有数据存入文件/var/adm/sa目录下的sadd文件,其中dd表示当前日期;
运行shell命令:
#/usr/lbin/sa/sa2[-ubdycwaqvmA][-stime][-etime][isec]:
一个通过crontab命令来设置定时执行的方案:
0***0,6suadm-c"/usr/lbin/sa/sa1":
表示以adm用户执行sa1,每个星期的日、六两天是每小时执行一次sa1命令;
08-17**1-5suadm-c"/usr/lbin/sa/sa133"
08-17**1-5suadm-c"/usr/lbin/sa/sa1"
在通过sadc或sa1、sa2等后台命令收集数据时,我们必须注意如下两点:
/usr文件系统的空闲空间够不够
本月数据将覆盖上月所取样的数据,因此,在系统即将进入下一个月时,必须对本月数据进行备份;
sa1和sa2是两个shell命令,在目录/usr/lbin/sa下,我们可以修改这两shell文件,以改变缺省的取样方法。
time和timex
TIME
Time命令可以汇报出执行某条命令所花的时间。
它的输出包括:
实际时间,用户时间和系统时间。
它的语法:
#timels
TIMEX
和time一样,timex可以汇报出执行某条命令所花的时间,不过它可以给出更多的信息。
选项-s:
printssardatafortheintervalinwhichtheprogramran.
option-p:
Listprocessaccountingrecordsforcommandandallitschildren.Thisoptionworksonlyiftheprocessaccountingsoftwareisinstalledand/usr/lib/acct/turnaccthasbeeninvokedtocreate/var/adm/pacct
iostat-I/OstatisticsReporter
iostat(输入/输出统计)工具将对系统的磁盘操作活动进行监视,它的输出结果会比sar-d的输出结果更有用。
它的特点是:
Berkeley-based,在很多的UNIX版本中都存在;
汇报磁盘活动统计情况,同时也会汇报出终端和CPU使用情况;
looksatinformationonaper-spindlebasis
和SAR一样,它也有一个致命的不足,这就是:
iostat不能对某个进程进行深入分析,它仅是一对系统的整体情况进行分析。
iostat的语法为:
iostat[-t][interval[count]]
interval:
Displaysuccessivelineswhicharesummariesofthelastintervalseconds.Thefirstlinereportedisforthetimesincearebootandeachsubsequentlineisforthelastintervalonly.
count:
Repeatthestatisticscounttimes.
-t:
Reportterminalstatisticsaswellasdiskstatistics.
vmstat-VirtualMeomoryStatistics
vmstat工具将对系统的虚拟内存、进程、CPU活动进行监视,同时它也对磁盘和forks和vforks操作的个数进行汇总。
它的特点是:
Berkeley-based,在很多的UNIX版本中都存在;
汇报虚拟内存、进程、CPU活动统计情况,同时也会汇报出磁盘活动情况和forks和vforks操作的个数;
和iostat一样,它也有一个致命的不足,这就是:
vmstat不能对某个进程进行深入分析,它仅是一对系统的整体情况进行分析。
vmstat的语法为:
vmstat[-dnS][interval[count]]
vmstat-f|-s|-z
GlancePlus
GlancePlus是HP公司的性能分析工具,它是一个联机性能分析和诊断工具,用于监控正在发生的系统活动情况。
它的特点是:
联机性能分析和诊断;
监控系统资源的使用情况;
多屏幕输出;
带有联机帮助;
进程阀值识别和报警,这个阀值可以基于被监控的进程、资源的利用率、用户、进程名或者终端名;
和前面介绍的其他性能分析工具,如:
SAR,iostat,vmstat等相比,GlancePlus有一最大好处,这就是:
GlancePlus不仅能对系统的整体情况进行分析,而且还可以对某个进程进行深入分析。
GlancePlus所有监控的系统资源主要有以下这些,应该说,它们已经包括了主要的系统资源。
CPU、磁盘、内存和交换区的整体使用情况;
全局进程的活动情况;
CPU的详细使用情况;
内存的详细使用情况;
文件系统、设备和逻辑卷的磁盘输入/输出;
磁盘队列和长度;
交换区的详细使用情况;
系统表的使用情况;
单个进程的活动情况;
GlancePlus的运行形式有两种:
图形方式:
#/opt/perf/bin/gpm,或以后台方式运行#gpm&;不过,我们必须先设置环境变量DISPLAY,因为它是图形输出的目的地,比如:
exportDISPLAY=主机名(IP地址):
0.0;如果是工作站telnet别的主机上,则本工作站还要运行#xhost+,表示别的机器上输出可以到本工作站;
终端方式:
#/opt/perf/bin/glance
GlancePlus的界面主要有两部分,上面部分是系统资源的整体使用情况,下面部分则按不同的资源的详细使用情况。
GlancePlus的界面的上面部分的详细说明,其中字母表示谁用了资源,而字母之间的长度资源占用率。
CPU的利用率:
S-系统CPU利用率,U-用户CPU利用率,R-实时CPU利用率,N-niceCPU利用率,A-negative-niceCPU利用率;
磁盘的利用率:
F-文件系统I/O,V-虚拟内存I/O
内存的利用率:
S-用于系统代码和数据的内存,U-用于用户代码和数据的内存,B-用作缓存的内存
交换区的利用率:
U-正在使用的交换区,R-预留的交换区
前面讲到,GlancePlus是一个联机分析诊断工具,其实,GlancePlus还可以与MeasureWareAgent一起使用,MeasureWareAgent将可以在一段时间内帮助GlancePlus收集基本数据,然后由GlancePlus进行分析。
Glance可以运行在HP-UX,Solaris和AIX上。
与其他的工具相比,Glance占用的系统资源会更多一些。
通常情况下,启动工具的命令的语法如下:
#glance[-jinterval][-pdest][-fdest][maxpagersn][-command][-nicen][-nosort][lock][]
其中,各选项的含义为:
-j:
指定数据刷新的时间间隔;
-p:
使得结果送到打印机队列;
-f:
enblesprintingtoafile;
-maxpages:
limitsthenumberofpagestobeprinted;
-command:
selectstheinitalmetricscreen;
-nice:
nicevalueatwhichglanceruns;
-nosort:
don'tsortprocessesonthescreen;
-lock:
locksglanceintomemory
1:
CPU的体系结构和工作原理
2:
操作系统和进程
3:
衡量CPU闲忙程度的指标
4:
CPU资源成为系统性能的瓶颈的征兆
5:
哪些进程是占用CPU资源的大户?
6:
利用SAR工具分析CPU的利用率
7:
利用SAR工具分析运行进程队列长度
8:
利用SAR工具分析系统调用
9:
利用time命令测试某个命令和程序的执行效率
10:
利用top命令查看最耗CPU资源的进程
11:
利用uptime命令查看系统整体情况
12:
利用GlancePlus分析系统CPU资源利用率
13:
对CPU需求密集型系统的性能调试
CPU的体系结构和工作原理
我们所说的CPU一般是指微处理器,即Microprocessor,一般地,一个CPU的主要组成部分为:
CPU(centralprocessingunit)
cache:
cache就是高速内存,它的存取时间一般是10-20微秒(ns),这样,CPU可以在一个时钟周期内访问一次cache;而一般的内存的存取时间为80-90微秒(ns),它的大小对CPU的性能有很大的影响。
TLB(translationlookasideboffer):
TLB是高速cache,它用于存放最近访问的虚拟地址和与其对应的物理地址对,这样TLB将可以把虚拟地址转换为物理地址。
TLB是内存中系统转换表的一个子集;TLB通常是指向一个内存页面,而不是一个内存地址;它的大小对CPU的性能有很大的影响。
coprocessor
不同的CPU,一般有不同的时钟频率和高速缓存容量。
CPU在一次时钟周期内一般可以从高速缓存内取到一个指令并执行它。
因此,从理论上说,只要CPU的主频越快,单位时间内所能执行的指令则越多。
目前,有些CPU可以在一个时钟周期内执行多条指令,如PA8500可以执行4条指令。
高速缓存的大小会制约CPU的执行效率,虽然CPU主频很快,但它取不到数据,则只有空运行。
因此,高速缓存的大小很重要;高速缓存又分数据高速缓存和指令高速缓存,分别存放从内存预先取来的即将执行的数据和指令单元。
虚拟寻址
一般,系统中的虚拟地址空间要比物理地址空间大得多,例如,如果系统是64位的,则理论上,它的寻址空间可以达到2的64次幂(2**64=18,447PB),但由于受费用的因素的影响,实际上的物理内存最大只有十几GB的内存。
每个进程都有自己的唯一虚拟地址空间,然而,进程的运行必须把虚拟地址映射到物理地址,这需要TLB、高速缓存和内存三者的配合。
如果需要的信息不在内存,则导致一个页面错。
流水线(Pipelining)
TLB和高速缓存试图在一个时钟周期内给CPU提供它所需的信息,然而,这个过程是100%的利用率,对CPU来说,它必须先用一个时钟周期去取下一个指令,再一个时钟周期去执行这条指令,这样,CPU的利用率也只有50%。
为了让CPU更忙,通常的做法是,采用流水线的方法。
如PA8500是采用7个步骤的流水线。
操作系统和进程
HP-UX一个多用户、多任务的UNIX操作系统。
它的性能依赖于用户数的多少、用户任务的类型、硬/软件件的配置。
HP-UX有两种运行级别:
用户级:
系统用户可以与操作系统进行交互操作,如运行应用和系统命令。
用户级通过系统调用接口访问内核级。
内核级:
操作系统自动运行一些功能,它们主要对硬件进行操作。
在操作系统中,用户程序是以进程方式运行。
进程的状态有以下几种:
SRUN
SSLEEP
SZOMB
SIDL
SSTOP
CPU的调度
一旦进程所需的数据调入内存后,它将等待CPU调度者来分配CPU时间。
一般,在HP-UX中,每个进程都可以得一个固定的时间片来运行,这个时间片的长度为十分之一秒(1/10秒)。
由于HP-UX是一个多任务的操作系统,它需要一种手段来进程的执行次序,这就是中断。
在系统中,时钟中断处理器是用来处理时钟中断的系统软件。
具体地说,它将收集系统和accountingstatisticsanddoescontextswitching.系统性能也与这种中断发生的频率有关。
进程何优先级
每个进程都有自己的优先级;
实时优先级:
-32~127,一个进程如果想以实时优先级运行,则必须用命令#rtprio来设置;
分时系统优先级:
128~177;
分时用户优先级:
178~251;
优先级:
252~255areusedbythesystemasvirtualmemorymanagementprioritiesforprocessdeactivation.
分时进程在初始优先级是由系统分配的,为一个定值。
用户可以通过改变进程的nice值来改变分时进程的优先级。
因为进程会随着它的执行,将以nice值来降低它的优先级,当它在等待执行时,又将以nice值来增加其优先级。
nice值的系统缺值为20。
在系统性能分析过程中,我关心不仅仅在完成一个进程耗时多少,还包括时间花在哪以及它的时间多少。
衡量CPU闲忙程度的指标
要分析系统的CPU资源是否够的前提谁占用了CPU资源,占用了多少,时间多长。
下面是一些衡量CPU闲忙程度的经用指标:
1)用户使用CPU的情况
CPU运行常规用户进程
CPU运行nicedprocess
CPU运行实时进程
2)系统使用CPU的情况
用于系统调用
用于I/O管理:
中断和驱动
用于内存管理:
pagingandswapping
用于进程管理:
contextswitchandprocessstart
3)WIO:
由于进程等待I/O而使CPU处于空闲状态的比率,这些I/O主要指blockI/O,rawI/O,VMpaging/swapins;
4)CPU的空闲率,即除了上面的WIO以外的空闲情况;
5)CPU用于上下文交换的比率(ContextS