HPUX性能优化工具的使用_第1页
HPUX性能优化工具的使用_第2页
HPUX性能优化工具的使用_第3页
HPUX性能优化工具的使用_第4页
HPUX性能优化工具的使用_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

HPUX性能优化工具的使用黄金甲按:这篇文档相当老,内容也不是很深入。原文是一套叫UnixPerformanceToolsNotebook的slide.优点是介绍了除Glance之外的一些Unix通用的工具,还是有些用处。目录HPUX性能优化的基本概念

(1)

HPUX性能优化工具的使用

(2)

sarHPUX性能优化工具的使用

(3)

iostat/vmstat/netstat/lanadmin/time/ps/kill/showmo

HPUX性能优化的基本概念(1)影响性能的因素•

硬件•

操作系统•

应用软件•

人•

变更•

上述内容是如何管理的•

网络•

环境系统硬件资源计算机系统的核心部件包括:•

CPU:执行指令的硬件•

内存:程序与它们的数据被加载的地方•

硬盘:程序与数据在未被CPU使用时存放的地方•

网络:计算机之间的接口

其他的部件包括•

终端•

磁带机•

打印机•

图形系统等HPUX操作系统操作系统管理用户应用的硬件资源,将用户需求转换成硬件认识的指令。HPUXkernel基于Berkeley4.2,增加了AT&TSystemV的兼容接口。

HPUX在两个级别执行,user和kernel.在user级别,系统用户可以与OS交互,输入命令调整kernel的运作。

User级别与Kernel级别通过系统调用接口连接。

作为一个Unix系统,HPUX支持多用户与多任务。性能与用户数、用户任务的类型,OS的配置等相关。处理器模块一个典型的HP处理器包含中央处理单元(CPU),cache,Translationlook-asidebuffer(TLB),协处理器,Specialfunctionunit(SFU).这些单元通过总线相联。

Cache(高速缓存)是高速的记忆体(通常访问时间在10-20纳秒,一般的记忆体在80-150纳秒)。高速缓存可以在一个CPU时钟周期内访问,存储CPU最近访问过的,或是预测将要被访问的指令或是数据。缓存的大小可以比CPU的主频对性能产生更大的影响。不同的CPU有不同的缓存大小。

Translationlook-asidebuffer(TLB)用来将虚拟地址转换为物理地址。它实质上是一种高速缓存,包含最近访问过的虚拟地址与物理地址对应关系及访问权限和访问ID。TLB是内存中系统级别的转换表的子集。TLB的大小也会影响系统的性能,不同的CPU也有不同的TBL大小。

TLB通常指示一页内存,而不是某一个点。

HPUX进程的流程图用户通常通过终端(Terminal)来访问主机,通过命令与进程来完成特定的任务。进程在用户输入命令或运行程序以后开始。

CPU将命令移动到内存中,也是它开始执行的地方。将命令移到内存中的时间取决于三个因素。1.数据存在哪里?如果是在buffercache中,CPU可以快速访问到。2.CPU处理指令有多快?3.命令需要的资源是否空闲?

如果命令需要硬盘上的数据,也许需要在队列中等待被其他进程使用的硬盘。

总的流程可能包括一些CPU的运算、几页的内存和一些对硬盘的读写操作。每一步都需要时间。从系统性能管理的角度来看,不是关心完成操作总共用了多少时间,而是看在哪时以及如何消耗了时间。

进程的状态

进程有五个主要的状态:SRUN:

进程可以运行或是正在运行,在kernel模式,内存中或是swap设备上。SSLEEP:

进程正在等待某个事件,在内存中或是swap设备上。SZOMB:

进程已经释放了除了进程表条目(processtableentry)之外的全部系统资源。这个状态不会再改变。SIDL:

进程正在被fork或是exec生成.SSTOP:进程被任务调度或是进程跟踪系统停止,等待继续。CPU调度的概念CPUScheduler:调度各进程对CPU的使用。SystemClock:

系统时钟InterruptHandler:中断管理,执行时钟中断,收集系统的统计信息。ContextSwitching:上下文切换,保存进程的信息,这样进程就可以在中断后开始运行或是继续运行(如果被中断了).CPU调度CPU调度处理下面的事项:•

上下文切换•

中断

当所需的资源就绪后,进程就等待CPU调度程序安排CPU的时间(来运行)。

CPU的调度是多任务、多用户环境的基础。通过在不同的、等待资源如其他的事件、IO等的进程之前切换CPU,操作系统可以处理更多的任务。

HPUX使用轮循调度。CPU让每个进程运行一个预设的时间段,称之为quantum或是时间片,直到它结束或是被其他进程占先运行。CPU保存前一个进程的状态到一个”context”中,切换到下一进程。第一个进程被放到待运行队列的最后,等待下一次被运行。

作为一个多任务的系统,HPUX需要一些变化来做进程间的切换。这个机制通过中断CPU来切换优先级。时钟中断实现几个功能,它收集系统统计信息,进行上下文切换(contextswitching).系统的性能取决于这些操作能否高速有效地进行。

上下文切换发生的条件•

时间片到期•

进程退出•

进程将自己置于sleep或是stopped状态•

进程由系统调用中返回到usermode,但已不是最优先的进程•

另一个实时优先的进程到了运行的时间系统调用当一个进程进行了系统调用后,一系列的流程要进行,这样进程可以在kernelmode中执行系统代码。

优先级队列

运行队列runqueue•

POSIXRealTimen

1wide•

HP-UXRealTimen

1wide•

TimeSharen

4wide

运行队列的‘宽度’是不同的。宽度是指一个队列中优先级值的范围。例如,在time-share级别的队列中,在优先级178到181(宽度为4)之间有一个队列。在这个队列中的所有进程都是同等对待,不管它的优先级实际上是多少,所以一个优先级为181的进程有可能比优先级178的进程得到更快的处理。这个功能只在某一个运行队列中生效。位于182-185队列中的进程不会比位于178-181队列中的进程获得更高的优先。

“bestq”指向队列中下一个进程,这个机制是为了提高运行队列的效率。否则,运行队列就必须查询每一个进程的优先级来确认是否还有其他进程需要优先运行。

多处理器运行队列多处理器环境下每个CPU管理自己的运行队列。但是,POSIXruntime可以让所有的CPU都运行队列中的进程,换句话讲,一个CPU可以运行初始在另一CPU的运行队列中的进程。

处理器时间共享分享处理器时间的进程初始状态下都被分配了相同的优先级。用户可以通过nice的赋值适度调整。

如前所述,分享时间的进程在执行后失去优先级,等待到它的下次执行机会时重新获得优先。进程失去优先级的机率是线性的,但是它重获优先的机会是指数特性的。当CPU负载高时,这个指数值下降。CPU负载低时,这个值升高。

一个进程的nice值被用来作为计算重获优先级的因子。所认,在CPU负载低的时候,nice值的基本没什么作用,相反,在CPU负载高时影响就大了。

Nice的赋值可以让某一个进程获得更低优先级。默认值是20.要让一个进程在更低的优先级运行,可以把nice的值赋高一些,比如说39。

超级用户可以通过赋一个低的nice值给某一个进程,让它在更高的优先级别运行。

时间片/时间轴

一个时间片等于10个‘tick’。每个正在运行的进程每隔4个’tick’会重新计算它的优先级。优先级的计算基于每个进程使用的CPU时间总合。

在时间片结束后,系统决定哪个进程获得CPU。

每一秒钟,每个进程都被重排优先级。

内存管理

当一个进程开始后,就被CPU指向内存来获取所需的数据。

内存访问可能只需通过buffercache或是由磁盘上进行pagein的操作。如果所需的数据在一个硬盘上,而其他的进程正在访问硬盘,这个进程就要在一个队列里等待访问这个硬盘。

内存管理的含义是OS中管理内存的这一部分,它跟踪内存的哪一部分是可用的或是被占用的,为进程申请内存,管理进程的去激活。内存管理的相关概念Paging:虚拟内存空间(叫pages)中的内容由虚拟内存(硬盘)移动到或是移出主内存的技术PageFault:当CPU要访问一个内存中的页面时,它还没有从硬盘(虚拟内存)pagein到主内存时,会发生的一个非法地址错误,或是陷阱。这个页面有可能在这个访问需求之前由主内存中pageout了。

Deactivation:去激活,将一个进程由交换区移到到主内存中,和由主内存移动到交换区的过程

Thrashing:系统颠簸,是这样的一种情况,进程被pagein/pageout的时间,比它本身处理进程本身的内容时间还长,大量的pagefault出现。

内存管理:paging处理page操作的后台进程每0.03秒运行一次。如果空闲内存比LOTSFREE定义的值少,pageout例程就被调用。

Pageout使用‘双手’时钟算法来确定空闲的内存。这个进程在HPUX中叫’vhand’.‘age’hand对每一个内存页面对应的标志位进行老化操作(黄金甲按:我的理解是按一个间隔递增它的值)。如果第二只手扫描到这个标志位时它的值仍然是0,那这个页面就是空闲的,说明在第一只手扫过它之后没有被标志过。如果这个页面是干净的(没有被修改过的),它就被加到freelist中。如果这个页面是脏的(修改过的),在被放到freelist之前需要把它的内容写到交换设备上。

‘手’旋转的速度取决于预期的内存需求。剩余内存越少,扫描的速度越快。当paging操作过多时,deactivation就开始了。

内存管理:paging和DeactivationLotsfree,gpgslim,desfree,

minfree,这几个值在系统启动时计算,每台主机根据内存大小的不同计算出来的值也是不一样的。

当可用内存少于Lotsfree以后,对页面的老化(aging)操作就开始了。然后,当剩余内存低于gpgslim,窃用(stealing)操作就开始了。内存紧张时系统可能调整gpgslim的值。其他的值都是维持不变的。

当可用内存低于desfree以后,系统会非常积极地尝试空出内存,paging是必要的。这时,系统可能会调整双手算法尝试让内存使用稳定一些。这可能包括加速双手算法的过程,减少’老化’与’窃用’之间的时间间隔等。

当可用内存低于minfree之后,进程的deactivation开始。内存已经相当紧张,到了基本上无法恢复的阶段。文件系统–全局图虚拟文件系统virtualfilesystem(VFS)的概念被引入来处理网络上的文件系统。每个文件系统类型有其自己的VFS。相似的,每个文件有虚拟文件结点virtualfilenode(vnode),就像旧的文件系统有inode一样。每个本地文件系统的vnode指向inode,NFS的vnode指向remotenode(rnode).

Inode是指向数据块的指针。Vnode代表多种文件系统,指向一个inode.

注意裸设备不使用buffercache.文件访问在这个例子里,要取得命令行中命令所需的数据,进程必须要访问硬盘上的文件。文件系统的结构类似于相面的框图。对于系统的用户来说,文件系统结构组织在一个树形结构下,从/开始。

文件系统是操作系统软件控制数据存放的部分,控制了数据是如何存放的,如何被内存管理识别。

每一个文件系统中的文件由一个inode表示。一个inode长128字节。它包含了必要的信息来控制访问,比如说文件大小、权限、属主和物理数据块的地址。HPUX通过inode实现文件的安全控制。

因为inode了解数据存放的情况,所以对文件的所有访问都先访问inode.磁盘的输入、输出这些硬盘的特性与文件系统相关:•

如何提高buffercache的命中率来减少对硬盘的访问。•

如何使用文件系统参数如block和fragmentsize,minfree,rotdelay等来控制文件的分布,优化访问时间。•

如何均衡分布硬盘的负载

对文件系统的访问,CPU并不直接由硬盘读取或写入。如果硬盘传输率低,文件系统的响应时间与输出就会很差。Kernel通过buffercache来尽量减少对硬盘的访问。

Buffercache的大小可以通过nbuf和bufpages参数来调整(黄金甲按:在11.31中因为UFC的使用这两个参数已经没用了)。

HPUX性能优化工具的使用(2)HPUX中很多种不同的性能工具。有些工具提供实时的性能信息,其他还有一些在后台收集信息供后续的分析。还有一些工具允许系统参数被调整优化。

这一章节的目的是简介各个工具是如何工作的,可以作为选择工具的一个快速的参考。

注意:这里不包括如何解释工具的输出

标准的UNIX工具标准的工具是在UNIXbase系统上常见的工具,使用标准工具的优点是可以和其他平台上相应工具的结果进行对比。

HPUX特有工具HPUX特有工具是由HP开发的。这些工具通常在其他UNIX平台上是没有的。这样的工具包括像Glance,Measureware,PerfView,NNM和ITO。

注意:本文档中不包含对HPUX特有工具的介绍

sarSar=SystemActivityReporter

Sar工具用来收集一段时间的性能数据(常在cronjob中使用),或是实时显示。

当用来采集一段时间的数据时,常用的是sar相关的命令,sa1和sadc.Sadc是真正用来收集数据的程序,sa1实际上是一个前端程序,每隔几秒种,重复n次来调用sadc.

采样性能数据时,sar对kernel中的变量(也叫计数器)进行采样,包括了资源的请求数、资源的IO访问数、队列长度等。

Sar命令的报告通常用于观察系统中在发生什么,瓶颈在哪里。

sar–采样数据sar对指定周期内的数据采样,可以在crontab里定期进行,也可以由用户发起。

通过crontab来进行,有助于分析一个长期的系统状态。有两种可能的方式:sadc或是sa1.sadc每隔t秒,进行n次,来收集数据,并输出到一个二进制的文件(ofile).如果输出文件名没有指定,就输出到标准输出(也就是终端屏幕上)。如果t和n也没有指定,sadc会写一条特定的记录,用来在系统启动时标记计数器归零的时间。

sa1用t和n参数调用sadc,把输出结果写到/usr/adm/sa/sadd中,其中dd是当时的日期。如果t和n没有指定,sa1会传递t=1,n=1.

sar命令可以按照时间间隔采样,输出到文件中(如果指定了),在标准输出上显示报告。如果n参数没指定,就只采样一次。

sar–报告数据数据收集到以后,有不同的方式来生成报告。如果要自动做,可以用sa2在crontab里运行。sa2是一个脚本程序,调用sar命令,通过较早前收集并存放在/var/adm/sa/sardd的二进制文件生成报告。具体是哪一种类型的报告,通过选项来确定(-ubdyswaqvmA).

同样地,时间区域可以通过指定开始时间(-stime)与结束时间(-etime)来确定。时间间隔也可以用(-Iseconds)来指定,这个间隔可以与收集数据时的时间间隔不同。

用sar命令可以交互式地完成,与sa2的选项相同,再加上(-ffile)来指定输入文件。如果没有指定输入文件,默认采用/var/adm/sa/sadd.报告会输出到标准输出上。

sar–命令的调用Samplecrontabentries:0***0,6

/usr/lbin/sa/sa108-17**1-5

/usr/lbin/sa/sa112003018-7**1-5

/usr/lbin/sa/sa1Userinvocation:#sar-A-osar.out13600>/dev/null&#sar-b-fsar.out

上面的crontab条目可以生成供后续分析的二进制文件,例子里列出来的情况会在每个周六与周日的整点,工作日的工作时间内每20分钟,工作日的下班时间内每小时来收集数据。

第一行用户调用的例子会每秒收集数据,时长为1小时,将输出结果写到sar.out中,是二进制的格式。因为命令会同时输出到标准输出上,所以把它重定向到/dev/null,在后台运行。第二行用户调用的例子会生成一个buffer活动的报告,数据源是前一个例子里生成的文件。

sar–CPU利用率•

sar-u•

%usr=timespentinusermode•

%sys=timespentinsystemmode•

%wio=timespentinblock,raw,andvirtualmemorymanagementI/O•

%idle=CPUtimenotbeingused•

sar-uM:

optionformultiprocessorplatforms.

sar–u会报告CPU的整体利用率。它报告在用户模式下CPU的时间(%usr),系统模式下(%sys),块设备、裸设备和虚拟内存管理的IO(%wio),还有其他的空闲时间(%idle).每行显示一个时间间隔内的数据,最后会有一行平均值。

先看%idle是不是接近0.如果%idle接近0,就看%wio是不是大于7.如果是的话,就要研究是不是有IO的瓶颈。

如果%wio很低,但是%idle并不是0,就要研究%usr和%sys。如果大部分时间用在%usr,可能是用户应用引起的CPU瓶颈。这些应用要检查一下为什么占这么多CPU时间。如果是%sys占用了大部分时间,就要分析系统为什么占用这么多时间。其他的可能性,比如说太多磁盘swapping操作,可能用很多系统时间。

在多CPU环境加上-M选项。

sar–CPU利用率的例子07:00:01%usr%sys%wio%idle08:00:018568209:00:01720433110:00:01411196711:00:01910473412:00:011319513:00:0113295Average592067SuggestedRatios

60

25

0

15

这个例子中,从07:00AM到01:00PM每小时收集一次数据。输出是通过cron生成的。sar需要大概2%的负载来完成这样的事。

建议的比率是一个粗略的估算,太高的比率通常指示下列性能瓶颈。

%usr:

CPU瓶颈%sys:

内存瓶颈(pagingand/orswappingisoccurring)%wio

I/O瓶颈(externaldiskaccess,read/writetotape)

所谓’瓶颈’可能是一个暂时的现象,比如说备份到磁带上时%wio比较高。许多时候合理地安排对性能有强需求的事务可以解决性能问题,比如安排在晚上用户数少的时候进行备份。

sar–磁盘的活动

sar-d•

%busy=portionoftimeadevicewasservicingtransferrequest(s)•

avque=averagenumberofrequestsoutstanding•

avwaitvs.avserv

sar–d报告每个硬盘或磁带驱动器块设备的活动(黄金甲按:原文如此,存疑,裸设备的利用率是可以看到的).它显示设备文件名,忙于传输请求的时间(%busy),在这个期间outstanding的请求的数目(avque),每秒钟数据传输的数据(r+w/s),传数的数据量的大小,以512字节的块为单位(blks/s),在队列中等待的平均时间,以毫秒为单位(avwait),提供服务的时间,以毫秒为单位(avserv).

**man

sar其中对-d参数中r+w/s的解释是

r+w/s

Number

of

data

transfers

per

second

(read

and

writes)

from

and

to

the

device.很明显是说完成的IO数量实验:

dd

if=/dev/rdisk/disk3

of=/dev/null

bs=2k

同时sar

-d

1

10:

22:27:26

device

%busy

avque

r+w/s

blks/s

avwait

avserv

22:27:27

disk3

93.07

0.50

11328

45311

0.00

0.08

...

r+w/s的数值*2k

(每个IO

2K大小)

基本上等于blk/s*0.5K

(每块512字节)

的大小,证明完毕如果一个硬盘设备的%busy>50,就存在硬盘的瓶颈。如果avwait>avserv,也说明有硬盘的瓶颈。avque指示有多少任务在队列中等待。

在观察sar–d输出时,一个优化的系统应该显示不同硬盘之间的负载比较均衡。

sar–磁盘的活动的例子15:31:55device%busyavquer+w/sblks/savwaitavserv15:32:00c0t5d0852.9312485127.215:32:05c0t6d011.201530c0t5d0843.42923271.329.315:32:10c0t6d00101530c0t5d0893.53124574.129.115:32:15c0t5d0822.7302424727.215:32:20c0t5d0822.82923551.728Averagec0t6d0c0t5d001.1003.323.3Average853.1303058.928.1

这个例子显示的是用-d选项来运行sar命令。每5秒收集一次,共20秒。

例中,第一个硬盘非常繁忙,而第二块硬盘则很空闲。所以第一块硬盘存在瓶颈。这是一个很好的负载不均衡的例子。

IO瓶颈的指示可以归纳为:

%busy>50avwait>avserv

sar–bufferactivity•

sar-b•

%rcache=readcachehitratio•

%wcache=writecachehitratio•

pread/s&pwrit/saregenerallyobsoleteduetothelackofdumbterminaluse

sar–b报告系统缓冲区的情况。提供了每秒传送的数据块的数量(bread/s,bwrit/s),每秒对缓冲区读写的数量(lread/s,lwrit/s),cache命中率%rcache=(1-bread/lread)*100,%wcache=(1-bwrit/lwrit)*100),每秒以raw模式传送的数量(pread/s,pwrit/s).pread/s和pwrite/s还可以用来指示裸设备的访问,数据库经常会选择使用裸设备。

主要关注的参数是%rcache和%wcache.要想获得理想的性能,%rcache要高于90,%wcache高于70。

sar–bufferactivity例子###bread/slread/s%rcachebwrit/slwrit/s%wcache15:31:55028610024937415:32:00011410020576515:32:050467100341297415:32:1001141002229215:32:1524301003914873Average1282100249076

本例中,有很好的cache命中率。对于进行很多随机IO操作,或是buffercache很少的系统,这些比率可能会比较低。

指示IO瓶颈的一个快速参考是:•

%rcache<90•

%wcache<70

sar–swappingactivity•

sar-w•

swpin/s&bswin/s=unitstransferredbyswapinspersecond•

swpot/s&bswot/s=unitstransferredbyswapoutspersecond显示以block为单位(512字节)每秒传输的swapin(swpin/s,bswins/s)和swapout(swpot/s,bswot/s),还有每秒钟进程切换的数量(pswch/s).

swpot/s大于0就需要继续分析

sar–swappingactivity的例子

Swpin/sBswin/sSwpot/sBswot/sPswch/s###7.790452304.71327###222722311901307###29483167601519###24490157691345###27590189901681Average223852412021436本例中,平均每秒有22个进程swapin,24个进程swapout,还有很高的进程切换。这说明内存很紧张。内存的使用情况需要被关注,这个例子里是有程序使用了大量数据空间(大形的阵列)造成了瓶颈。

要是主机内存很充沛,上面swpin/s,bswin/s,swpot/s和bswot/s都会是0.适当的进程切换是可以接受的,比如说小于50.

指示内存瓶颈的指标是:swpout/s>0

sar–队列长度•

sar-q•

runq-sz=lengthoftherunqueue•

%swpocc=percentageoftimetheswapqueuewasoccupied这个选项给出运行队列的长度(runqsz),运行队列被占用时间的百分比(%runocc),swap队列的长度(在swap设备上准备运行的进程的数量)(swpq-sz),还有swap队列被占用时间的百分比(%swpocc).

这些数值都是越小越好。如果run-sz大于4或是%swapocc大于5,sar–q的输出就需要和sar–w的输出对照分析

sar–队列长度的例子15:00:10runq-sz%runoccswpq-sz%swpocc15:01:1042.610017.86015:02:1041.51012110115:03:1043.29923.39915:04:1035.710031.410015:05:1043.110340.310215:06:1036.89942.999

本例中,有大量进程在运行队列中,队列的占用率接近100%。这说明主机内存紧张,正在进行过度的swapping.大量的swapping操作也会使得sar–u的输出中%sys偏高。

内存充足的系统中,swpq-sz和%swpocc接近空值。适度的运行队列长度是可以接受的(<5)

指示内存瓶颈的指标:•

runq-sz>4(acrossallCPUs)•

%swpocc>5(acrossallCPUs)

sar–系统调用SystemCall•

sar-c•

scall/s=numberofsystemcallspersecond•

fork/s=numberoffork/vforksystemcallspersecond•

exec/s=numberofexecspersecond

它给出每秒进行的系统调用的次数(scall/s),读系统调用的次数(sread/s),写系统调用的次数(swrit/s),fork与vfork操作的次数(fork/s),exec调用的次数(exec/s),读写调用的字符数量(rchar/s,wchar/s).

如果系统调用的总数很高,需要进行分析,因为这会造成CPU的%sys变高。通过观察fork/s和exec/s可以看到时系统中生成的进程数。

sar–系统调用的例子1:29:48scall/ssread/sswrit/sfork/sexec/srchar/swchar/s1:29:53116134100373965184321:29:586810420061401:30:0369104100716840961:30:086710410081901:30:136710410018430Average77114100768824506

本例中,每25秒收集一次数据。平均的系统调用数为77(scall/s),这是一个中等的数字。另外,没有新的进程生成(fork/s和exec/s).

rchar/s和wchar/s在今天已经基本没用了。这一区域一般是与哑终端相关

指示CPU瓶颈的指标:•

scall/s>3000•

fork/s•

exec/s

sar–系统表SystemTables•

sar-v•

Theonlytool(otherthanHPGlancePlus/UXthatreportsonsystemtables.•

ov=overflows这是除了Glance之外唯一可以报告系统表的工具,显示主要的系统表的大小和占用的条目。它给出文本表的已占用条目数/大小(text-sz),采样时间内溢出的数目(ov),进程表空间的已占用条目数/大小(proc-sz和ov),还有inode表相关的(inod-sz和ov).

如果存在溢出的情况,控制台上与syslog.log中会有报错信息。用sar工具,可以观察不同时间段内各种表的占用情况。

sar–系统表SystemTables的例子0:00:00text-szovproc-szovinod-szovfile-szov1:00:0029/76075/2760137/3560113/59002:00:0027/76075/2760138/3560113/59003:00:0028/76075/2760135/3560113/59004:00:0029/76075/2760142/3560117/59005:00:0029/76075/2760148/3560113/59006:00:0030/76079/2760144/3560121/5900本例中,基本上所有的表都没用到一半。

如果存在溢出overflow,ov会大于0。

sar–文件访问的报告•

sar-a•

iget/s=numberoffilesystemiget()callspersecond•

namei/s=numberoffilesystemlookuppn()(pathnametranslation)callspersecond•

dirblk/s=numberoffilesystemblocksreadperseconddoingdirectorylookup

给出每秒执行iget例程的数量(iget/s)(这时读了多少inode);vfs_lookup例程被调用的数量(namei/s,就是路径解析的数量),还有目录块被读取的数量(dirbk/s).

sar–Message与信号量(semaphore)的报告•

sar-mS•

msg/s=NumberofSystemVmsgrcv()callspersecond.•

sema/s=NumberofSystemVsemop()callspersecond.•

select/s=NumberofSystemVselect()callspersecond.

Requires"-S"option.

它给出每秒钟通过进程间message机制传送的message数量(msg/s)和进程间通信的semphore的数量(sema/s).sema/s值在semop()例程中被增加,这个例程是用来获取和释放semaphore的。所以,这个值至少是semaphore数量的两倍。

sar–其他选项•

sar-y:

ttydeviceactivity•

sar-A:

reportsALLdataoptionssar–y报告tty设备的活动。Itreportsontheinputcharacterrate(rawch/s),theinputcharacterrateprocessedbycanon(canch/s),theoutputcharacterrate(outch/s),thecharacterspresentedbymux(rcvin/s),andthenumberofoutputcharactersprocessedandpassedontothemux(xmtin/s).

HPUX性能优化工具的使用

(3)

iostat/vmstat/netstat/lanadmin/time/ps/kill/showmoiostat-I/OStatisticsReporter•

DevelopedbyBerkeley.•

Reportsdiskactivitystatistics.•

Comparetosar-d.

iostat是主要用来报告磁盘运行状态的工具,它的输出比sar–d可能更有用一些。

iostat给出CPU被IO占用的程度,还有发生在磁盘和终端上的IO的数量

iostat–ReportingStatisticsiostat每隔一个指定的时间间隔(interval)检查HPUX的内部计数器,把结果输出到标准输出上。它会重复(count)次或是一直持续运行。如果interval没有给定,就只运行一次。第一行是从系统启动以来累计的结果,后续的行里是对应这个interval的结果。

对于每一个硬盘,iostat计算磁盘寻道与数据传输完成的数量和传输数据量的大小。每个硬盘的状态每秒钟检查HZ次(黄金甲按:原文如此,HZ是啥意思捏?),如果硬盘是活跃的,就会有它的一个统计值。iostat计算每个设备的平均寻址时间。通过这些数据,可以揭示IO瓶颈还有不同硬盘之间负载是否均衡。iostat报告每个硬盘而不是每个分区,所以swap区必须单独考虑。

如果指定-t参数,iostat会报告终端的输入输出字符数和全局的CPU活动。

利用硬盘的新技术如条带化,数据是分布在多个硬盘上的,平均寻址时间不太可能精确计算。所以,平均寻址时间(以毫秒为单位msps)被置为1.0

iostat–示例iostat5100>iostat.out&iostat-t60>

iostat.out&iostatli

Reminder:

Thefirstreportlinesummarizessystemactivitysincethelastreboot.在第一个例子里,报告数据时间间隔5秒,重复100次,输出被重定向到一个文件在后台运行。

第二个例子中,终端、CPU和硬盘的活动每分钟进行一次,一直重复下去。输出被重定向到一个文件中,在后台运行。这个过程直到进程被kill掉才会停下来。

最后一个例子会将硬盘的状态显示出来,每秒一次,一直进行。

使用iostat时,选择合适的时间间隔很重要。通常选择5秒钟,因为有些统计信息每5秒采样一次。

注意:第一行是从系统启动以来的平均值,所以通常可以忽略。

iostat54devicebpsspsmspsc0t6d030.31c0t5d020.11c0t4d0001c0t6d0303.41c0t5d0001c0t4d0001c0t6d020.61c0t5d030.41c0t4d0001c0t6d0121.21c0t5d0263.41c0t4d0001

这个例子每5秒报告一次,重复4次。系统中有3个磁盘c0t6d0,c0t5d0,andc0t4d0。bps是每秒传输了多少K字节,sps是每秒寻址的次数,msps是寻址的平均时间。上例中前两块硬盘比第三块要忙一些。

注意,第一行是平均值,请忽略它。

vmstat–VirtualMemoryStatisticsReporter•

DevelopedbyBerkeley.•

Reportsvirtualmemory,processandCPUstatistics.Otheroptionaluses

vmstat报告一些关于虚拟内存、进程、陷阱和CPU活动的统计信息。也可选地报告硬盘的活动,系统启动后fork和vfork的数量,每种fork操作引入的虚拟内存页面数量等

vmstat报告的方式与iostat类似。每隔interval秒重复count次。第一条记录是启动后的平均值,后面的每行是对应这个时间间隔的数值。

如果没有选项,vmstat会报告各个状态的进程数(在运行队列中,受阻的,可运行的/短时间sleep但是被swapped),虚拟内存与实际内存的使用情况(活动的虚拟内存页和freelist的大小),paging活动的5秒平均情况(pagereclaim,地址翻译错误,pagein/pageout等),每秒的陷阱与中断数量(设备中断,系统调用,CPU上下文切换率)还有CPU在user/system/idle模式下的使用率。

通过-S参数,vmstat会显示swapin和out的进程数,而不是页面数。通过-f参数,显示系统启动后的fork与vfork数和它们占用的虚拟页面数。-d选项,报告数据传输量每秒。-s参数,显示paging活动相关的sum数据结构。-z选项,清空sum数据结构中的数据。只有超级用户才可以用-z选项。

vmstat示例vmstat-d5100>vmstat.out&vmstat-S60>

vmstat.out&vmstat-fzsvmstatlvmstati

Reminder:

Thefirstreportlinesummarizessystemactivitysincethelastreboot.第一个例子,硬盘信息以及进程、内存、系统调用、CPU信息每5秒一次,重复100次。输出重定向到一个文件,在后台运行。

第2个例子,显示swapping的信息。同样地,输出重定向在后台运行。这个命令只有在接到kill信号后才中止。

其他的命令显示了不同的选项,如果没有interval和count参数,只给出一行总和。

和用iostat一样,选择合适的时间间隔interval很重要。通常选5秒种。

#vmstat55procs

memory

page

cpur

b

w

avm

free

re

at

pi

po

frdefactosr

in

sy

cs

us

sy

id2392

0

27578

0

0

0

0

0

0

54

0

0

31

14

4

1

95712921

29583

7

0

4923

16987

0

19676443

973

9

64

2820843

34441

7

0

2050

93117

0

19630342

583

16

60

24106331

38295

6

0

2221

22

23

0

19671383174316

53

3158

045

40831

7

0

2053

39

44

0

16754235138118

47

3551

072

25362

94365

9418

0

0

0

0

546947502

2

35

43436928

32149

760

4

7

78

42

0

176535411118

23

57

20

本例显示了一个标准的vmstat输出,没有指定其他参数。最重要的数据是活动的虚拟内存(avm)和空余列表大小freelistsize(free)。如果有大量的avm和非常少的free,内存就存在瓶颈。然后vmstat就应该用-S参数来检查是否在发生swapping.

注意:只有很少的free内存,但是活动的虚拟内存页维持在比较高的水平,说明有内存瓶颈。这会伴随着swapping操作,也会有大量的上下文切换,会有大量的进程在运行队列中或是受阻于资源,即使有很多idle的CPU时间

从这个例子还能看到,vmstat和iostat都有一个问题就是大的数字的显示,相近的列挤到一起很难阅读。提醒:第一行应该被忽略。

注意:使用-n选项,显示输出在80列显示的设备上更易阅读。这个格式把默认的输出分成两组:虚拟内存信息与CPU信息。每一组单独一行显示。在多CPU系统中,也会按每个CPU单独显示利用率。

netstatNetworkStatisticsReporter•

Networkstatistics.•

Networkbandwidthcanaffectperformance

asmuchasCPU,memoryorI/O.Notasmuchextraneousinformationasiostatandvmstat

netstat提供网络相关的统计信息。因为网络带宽与性能有很大关联,就像CPU、内存与IO一样,你要对网络的流量有个概念。

netstat不像iostat与vmstat那样提供很多无关的信息。相反地,它的大部分输出是有用的。

netstat提供上次重起之后累积的数据。你可以使用不同的选项,也可以指定报告的时间间隔。通常你需要忽略第一行,因为这是系统重起后的累积值,通常系统最忙时候的数据是最有用的。

netstat–iName

Mtu

Network

Addresslan0

1497

151.150

a4410.e.h.c

Ipkts

Ierrs

Opkts

Oerrs

Col242194

120

107665

23

19884

netstat–i显示自动配置的端口的状态。通常地,你想看lan0的信息,这个命令就有用。

Name:网卡的名字,本例中是lan0MTU:最大传输单元MaximumtransmissionunitNetwork:配置的网络地址Address:hostname,可以和/etc/hosts文件对照Ipkts:接收到的数据包的数量Ierrs:接收错误的数量Opkts:发生的数据包数Oerrs:发出过程中的错误Col:冲突Collisions的数量

netstat-Ilan05(lan0)->input

output

packets

errs

packets

errs

colls

269841735

27

256627585

1

5092223

1602

0

1238

0

49

1223

0

1048

0

25

1516

0

1151

0

42(Total)->input

outputpackets

errs

packets

errs

colls281472199

27

268258048

1

5092223

1673

0

1309

0

49

1235

0

1060

0

25

1560

0

1195

0

42

这个例子每5分钟提供网卡的信息。第一个输出应该被忽略。

你可以指定网卡–I(例子里是lan0),例子里还指定了1时间间隔5秒。

分析netstat的输出是比较直观的。要确定冲突Colls明显少于输出的数据包(Opkts).冲突在传输数据时发生,冲突会降低网络性能。每有一个绝对的公式说多高的冲突是可接受的。但是,如果冲突小于输出数据包Opkts的5%,通常地说情况不错,你可以把注意力放到其他资源上面。如果这个值高的话,你可能要考虑把网络进行segment。

一般说来,如果你输入与输出的数据包越小,你的网络负载与冲突就越少。可以考虑使用’私有’网卡专门用于主机间的连接,另一块网卡用来连接到大的网络中。

netstat–rRoutingtablesDestination

Gateway

FlagsRefsUse

InterfacePmtuhp700

localhost

UH

0

28

lo0

4608default

router1

UG

0

0

lan0

4608128.185.61

system1

U

347

28668lan0

1500

netstat-rnRoutingtablesDestination

Gateway

FlagsRefsUse

InterfacePmtuhp700

UH

0

28

lo0

4608default

UG

0

0

lan0

4608128.185.61

U

347

28668lan0

1500

还可以通过netstat获取路由相关的信息。-r选项显示路由表,-n选项用来显示网络地址而不是主机名。

-r选项显示了有关路由的信息,还有一个输出是Flags,它定义了路由的类型。下面是HPUX手册里描述的通常的Flags.

1=U:通过主机自身路由到一个网络。3=UG:通过另外一台主机路由到一个网络。5=UH:通过主机自身路由到另一台主机。7=UGH:通过另外一台主机路由到一台主机。

第一行是主机本身或是名为lo0的环回接口(地址).UH标志说明目标地址是本机。A类的地址可以使同一台主机上的服务器与客户端通过TCP/IP通信。

第二行是默认路由。这一条是说如果没有特别指定的路径,就把数据包送到router1.这时标志位flag为UG.有些路由器配置为U,另外一些就像本例中配为UG。尝试一下可以确认应该用哪种。比如说你看到标志位为U,但是ping不通,那改成UG通常就解决问题。

第三行是网卡lan0.要使用这个网卡,数据包要发往128.185.61网段。

lanadmin•

Providesadditionalinformationrelatedtonetworkstatistics.•

Menu-driven.•

/usr/sbin/lanadmin提供一些额外的网络信息。运行lanadmin时,出现一个菜单提示相关的选项,其中一个是显示网卡相关的信息。

lanadmin比netstat提供更多关于网卡的信息。网卡的类型,MTU,速度,运行状态还有网卡的硬件地址等。

lanadmin还提供更详细的报错信息。虽然任何类型的错误都会降低网络性能,对具体的错误与冲突了解多一些还是对解决问题有帮助。注意HPUX11.0以后不再显示错误与冲突的信息。

通过lanadmin,你还可以使一块网卡复位,有时能在网络看起来不工作的情况下起作用,比如说网卡ping不通自己。lanadmin菜单LOCALAREANETWORKADMINISTRATIONTestSelectionmode.

lan

=LANInterfaceAdministration

menu

=Displaythismenu

quit

=TerminatetheAdministration

terse

=Donotdisplaycommandmenu

verbose=DisplaycommandmenuEntercommand:

lan

这是一个输出的例子,lanadmin->lan->display:LANINTERFACESTATUSDISPLAYWed,Jan12

16:03:57NetworkManagementID

=4Description

=lan1Hewlett-Packard10/100Base-TXHalfDuplexHWRev0Type(value)

=ethernet-csmacd(6)MTUSize

=1500Speed

=10000000StationAddress

=0x80009d91067AdministrationStatus(value)

=up(1)OperationStatus(value)

=down(2)LastChange

=0InboundOctets

=0InboundUnicastPackets

=0InboundDiscards

=0InboundErrors

=0InboundUnknownProtocols

=0OutboundOctets

=0OutboundUnicastPackets

=0OutboundDiscards

=0OutboundErrors

=0OutboundQueueLength

=0...

其他网络相关的命令nfsstat:

NFS相关统计nettune:

网络调整ndd:

网络动态调整ping:

测试ICMPecho

time/timextime命令很简单,可以用来测量过程的时间。它执行命令,结束后显示命令所耗时间(在systemmode,usermode).

有几个不同版本的time命令。/bin下面有time命令,还有cshtime,kshtime./usr/bin下有timex.timex是增加版本,可以报告一些相关资源的信息。最常用的是/bin/time.

注意:time/timex是HPUX特有的工具。

time如何工作?•

Callstimes(2)&storestobuffer“before”.•

Forksaprocess.•

Executescommand.•

Callstimes(2)&storestobuffer“after”.•

Calculatestime.

time命令首先进行一个系统调用times,times报告进程及它的子进程在usr/sys模式下的时间,存在一个叫’before’的buffer中。然后它fork一个进程,执行命令。子进程结束后,也就是用户指定的命令结束后,time再进行一个系统调用times,把结果存在另一个buffer中’after’.比较’before’与’after’中的时间,显示出来。

timex加上-s选项可以报告命令运行其间的系统活动情况,相当于sar–A的输出。

time示例timew10:17amup5days,15:23

4users,loadaverage:0.69,0.49,0.49User

tty

login@

idle

JPCU

PCPU

whatblewis

d1p0

12:12pm

1

6:13

50

sleep59atanu

d1p2

9:31am

15

1

-cshmat

d2t19:05am

1:06

1

1

mailxmikec

d12p210:00am

3

1

-kshreal

3.4user.05sys

2.6

这个命令中,w命令被执行。标准的输出包含了总体时间消耗(3.4),用户模式(0.5),系统模式(2.6).与预期的一样,大部分时间用在系统模式。

对一个特定的进程,观察它在如何使用系统时间是很不错的。

NOTE:time是一个很好的工具来建立一个baseline.

ps–ProcessStatus•

Reportsoncurrentlyactiveprocesses.•

Severaloptionsavailable.•

Fulllisting(-f)andlonglisting(-l)available.ps是最经常用到的命令之一。它允许用户检查自己的进程、其他用户的进程与系统进程的状态。

最常使用ps是不加参数,或是加上-f参数。但是,对于性能监控,-l选项特别有用。

没有选项时,ps显示只与当前终端相关的进程。还有选项指定所有进程(-e),指定进程(-p),指定用户(-u),指定用户组(-g).还可以用完全显示(-f)与长格式显示(-l).

ps–lF

S

UID

PID

PPID

C

PRI

NI

ADDR

SZ

WCHAN

TTY

TIMECOMD1

S

0

119

1

0

168

207d9870

584

1A96070

tty3p5

0:01

ksh1

S

0

417

40659

202

257ddae03264

tty3p5

0:00

stan21

R

0

292

110

0

168

20ae7550

8324

1a97550

tty3p5

0:19

memlock1

S

0

400

000

2

158

20eee230

500

1ef82c

tty3p5

0:00

sh1

R

0

418

40612

181

20adcf10

424

tty3p5

0:00

ps

F(Flags)

Meaning0

swapped被交换1

incore在核心2

systemprocess系统进程4

lockedincore锁定在核心200

waiting等待S(Status)MeaningO

non-existant

不存在S

sleeping休眠W

waiting等待R

running运行Z

zombie()僵尸PRI(Priority)NI(NiceValue)

Rangefrom0-20.

kill如果ps命令显示一个进程处在hung挂起状态,可以用kill命令。kill命令是一个工具,它对指定的进程发送信号。最普通的信号是’SIGKILL’使进程终止。除了发送信号之外,还可以发送信号的数字。

SignalNumber

Signal0

SIGNULL1

SIGHUP2

SIGINT3

SIGQUIT9

SIGKILL15

SIGTERM24

SIGSTOP25

SIGTSTP26

SIGCONTshowmountshowmount显示挂载了本地文件系统的所有的客户端。它可以用来确定哪些文件系统经常被通过NFS挂载。它的输出很容易读,包含了客户端与被客户端mount的目录。

NFS服务器经常服务于一些并没有意图向其共享的客户端。这耗费了额外的资源。

showmount有下列选项:-a

以“name:directory”的格式显示.-d

显示所有被客户端挂载的本地目录。-e

显示进行了export的文件系统

#showmount-:/:/:/:/:/:/:/:/:/:/applic#showmount-d/applic#showmount-eexportlistforserver101./applic

swapinfo显示swap信息•

Howtoestimateamountofrequiredswap?•

Viewtheamountofswapbeingconsumedwithswapinfo.如果系统内存不足以应付所需,它会将内存页挪到交换区或是将整个进程挪到交换区。最常被访问的内存页留在主内存中,不太常用的优先移出主内存。

很多系统管理员用很长时间研究多少交换空间swapspace时合适的。这里没有一个一般参考值。可以根据下面几个因素来考虑::•

应用程序建议用多少swap?•

多少应用程序同时运行?如果有多个,把它们建议的swap空间加起来。•

是否有NFS这样长期被使用的资源?NFS提供文件系统的访问,有些还很大,对swap空间有一定要求。#swapinfo

Kb

Kb

Kb

PCTTYPE

AVAIL

USED

FREE

USED

dev

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论