常用命令 软件包
vmstat,iostat,sar bos.acct
topas,svmon,filemon,fileplace bos.perf.tools
vmtune,schedtune bos.adt.samples
netstat bos.net.tcp.client
vmstat报告CPU与内存信息
如下例所示:
kthr memory page faults cpu
----- -------------- ------------------------- ------------ -----------
r b avm fre re pi po fr sr cy in sy cs us sy id wa
2 11 1116402 0 0 19 24 583 1328 0 1514 10956 6379 17 4 45 34
0 35 1117232 0 0 15 75 1908 4207 0 2675 9350 18901 10 8 0 82
1 45 1118296 0 0 51 108 1873 3580 0 2298 8699 15324 9 8 0 83
0 22 1116890 0 0 78 19 830 1577 0 1836 8530 3891 7 6 0 87
13 29 1117030 0 0 5 26 1304 2737 0 1924 7619 9908 7 7 0 86
内核线程
r表示内核中运行的线程数,如果其数超过系统的CPU个数,则说明等待进程越多
b表示内核中等待的线程数,由于挂起或IO等待
内存列
pi列表示每秒钟从Paging Space置换到内存的页数。
po列表示每秒钟从内存置换到Paging Space的页数。
如果这两列持续大于5,则系统的性能瓶颈很可能是内存不足,而导致交换频繁。
fr列表示每秒钟页面置换算法释放的页数。
sr列表示每秒钟页面置换算法检查的页数。
故障列
in 设备中断次数
sy 系统调用次数
cs 内核线程上下文交换,即时间片用完后,再轮到时的上下文计算,如果太高,则要仔细观察
内存信息
avm与free两项分别表示了物理内存的活动页数与可用页数(每页4096bytes),其大小可用其值/256获得MB数。
其中free数如果持续为0或很低则预示内存不足,此时可能会导致大量的页面交换,而在CPU中显示为wa很高,此值的多少也与vmtune中的-f -p设置有关
CPU信息
在以上信息中,关于CPU是的后四列:
id高表示系统空闲,us、sy分别表示用户和系统进程CPU占用,wa表示IO等待时间
如果us与sy之和持续超过90%时,CPU出现了瓶颈。
如果wa长期很高>50,则表示IO太忙,具体看是应用IO多,还是交换分页多,如果是后者,则显示内存不足,
如果是前者,则应关注应用的IO性能状况,优化应用与磁盘设备
sar命令优势
sar可以针对SMP系统来分别查看CPU使用情况
sar -P ALL 3 2
AIX testhost 1 5 0050C33A4C00 06/28/05
17:30:02 cpu %usr %sys %wio %idle
17:30:05 0 38 4 43 15
1 32 3 49 16
2 51 3 44 2
3 53 3 42 2
- 44 3 44 9
17:30:08 0 35 1 46 18
1 18 3 70 9
2 24 2 60 14
3 16 1 81 3
- 23 2 64 11
Average 0 36 2 45 16
1 25 3 59 13
2 38 3 52 8
3 34 2 62 2
- 33 3 54 10
以上显示了一个单CPU系统的显示,
sar也可以查看系统调用情况
sar -c 3 2
AIX test 1 5 0050C33A4C00 06/28/05
17:31:00 scall/s sread/s swrit/s fork/s exec/s rchar/s wchar/s
17:31:03 5738 484 439 0.00 0.00 952729 1073997
17:31:06 3365 149 266 0.00 0.00 11620 930150
Average 4553 317 352 0.00 0.00 482957 1002193
svmon使用
svmon可以查看内存的详细使用情况,含分页
svmon -G -i 5 2
size inuse free pin virtual
memory 2097136 2096903 233 107570 1622941
pg space 1507328 1400132
work pers clnt lpage
pin 107324 246 0 0
in use 1236897 860006 0 0
size inuse free pin virtual
memory 2097136 2096212 924 107570 1623787
pg space 1507328 1400135
work pers clnt lpage
pin 107324 246 0 0
in use 1237139 859073 0 0
其中memory行显示了内存总量,使用量,钉入量和虚拟总量
pg space行显示了分面空间的使用量
pin行显示了正在用的钉入量,永久钉入量和客户量
in use显示了总内存的工作页面量,永久页面量,客户端页面量
如想将oracle进行lock_sga设置,可以查看PIN值来确认是否生效
要使pin生效必需vmtune -S 1
svmon -U oracle可以查看oracle用户的用量
svmon -U oracle
===============================================================================
User Inuse Pin Pgsp Virtual LPageCap
oracle 1897660 3007 1210399 1459736 N
计算出其大小为 7412M 11M 4728M 5702M
...............................................................................
SYSTEM segments Inuse Pin Pgsp Virtual
3236 2089 1935 4889
13M 8M 8M
...............................................................................
EXCLUSIVE segments Inuse Pin Pgsp Virtual
1893883 918 1208317 1453304
7398 4M
SHARED segments Inuse Pin Pgsp Virtual
541 0 147 1543
2M
在以上表中SYSTEM是所有系统共用段,EXCLUSIVE是此用户专用段,SHARED段是共享段
svmon -C oracletest
可以统计oracletest命令的所有内存使用情况
在其中也分为SYSTEM,EXCLUSIVE,SHARED三段,在其中将会发现 SHARED段很大,那是因为其与其它oracle进程共用的结果
在整个输出中,其类型分为
work 表示进程和内存共享段的区域
perm 表示文件,目录,日志,大文件等使用段,其代表了文件操作所用内存的值
clie 表示NFS,CDROM等文件系统使用段
svmon -P
可以查看所有进程的内存使用情况,加上PID可以查看单个进程的内存使用情况
能过此种方式,可以标识所用命令
通过上述命令获得的命令名,再通过svmon -C来查看其专用内存段,进行对比,可以区分出不同命令所用内存多少,对oracle不同进程之间的分析有用
磁盘IO
iostat 可以查看时间段内的CPU状况和磁盘状况
tty: tin tout avg-cpu: % user % sys % idle % iowait
0.0 55.3 11.6 2.0 20.4 66.0
Disks: % tm_act Kbps tps Kb_read Kb_wrtn
hdisk0 24.9 153.0 38.3 1236 296
hdisk1 31.3 193.8 48.7 1656 284
dac0 0.0 2969.1 179.1 11564 18164
hdisk2 100.0 2969.1 179.1 11564 18164
cd0 0.0 0.0 0.0 0 0
其中% tm_act是指活动时间,kbps是在统计时间内所有Kb_read与Kb_wrtn之和除以时间的值,即每秒传输的字节数
如果% tm_act常过70%却只有很低的Kbps,系统可能是有比较多的LV碎片或文件碎片,当都高时则系统正常。
tps表示每秒的IO数,不同的磁盘系统其可承受的IO数不同。
sar -d 10 2也可以查看IO情况
12:11:16 device %busy avque r+w/s blks/s avwait avserv
12:11:26 hdisk0 34 1.0 50 201 0.0 0.0
hdisk1 41 0.0 64 259 0.0 0.0
dac0 0 0.0 331 4197 0.0 0.0
hdisk2 99 5.0 331 4197 0.0 0.0
cd0 0 0.0 0 0 0.0 0.0
其中的%busy对应的% tm_act
avque表示等待IO对列数,其值很高则预示着磁盘有较大瓶颈
r+w/s对应tps,blks/s是按0.5Kbytes/s计算的传输速度
sar -d 最大好处是可以对较长时间的值会有一个总体平均值
vmtune使用
/usr/samples/kernel/vmtune 会得出当前设置数据
vmtune: current values:
-p -P -r -R -f -F -N -W
minperm maxperm minpgahead maxpgahead minfree maxfree pd_npages maxrandwrt
400921 1603684 2 8 120 128 65536 0
-M -w -k -c -b -B -u -l -d
maxpin npswarn npskill numclust numfsbufs hd_pbuf_cnt lvm_bufcnt lrubucket defps
1677709 47104 11776 1 186 224 9 131072 1
-s -n -S -L -g -h
sync_release_ilock nokilluid v_pinshm lgpg_regions lgpg_size strict_maxperm
0 0 0 0 0 0
-t -j -J -z
maxclient j2_nPagesPer j2_maxRandomWrite j2_nRandomCluster
1603684 32 0 0
-Z -q -Q -y
j2_nBufferPer j2_minPageReadAhead j2_maxPageReadAhead memory_affinity
512 2 8 0
-V -i
num_spec_dataseg spec_dataseg_int
0 512
PTA balance threshold percentage = 50.0%
number of valid memory pages = 2097136 maxperm=80.0% of real memory
maximum pinable=80.0% of real memory minperm=20.0% of real memory
number of file memory pages = 847042 numperm=42.2% of real memory
number of compressed memory pages = 0 compressed=0.0% of real memory
number of client memory pages = 0 numclient=0.0% of real memory
# of remote pgs sched-pageout = 0 maxclient=80.0% of real memory
其中的minfree限制了当系统的分页数少于此值时就要交换出此页数,并在达到maxfree时停止
其中maxfree必须>minfree+maxpgahead
./vmtune -F maxfree_pages -f minfree_pages 用于进行以上设置
minperm,maxperm对文件分页的控制
MINPERM与MAXPERM的意义
当内存中的文件缓存页在MINPERM以下时,内存页交换算法同时交换文件缓存页和程序页(computational pages)
当内存中的文件缓存页在MAXPERM以上时,内存页交换算法只交换文件缓存页。
当内存中的文件缓存页在MINPERM和MAXPERM之间时,内存页交换算法通常只交换文件缓存页,但如果文件缓存页的交换率大于程序页时,程序页也同样被交换。
MINPERM和MAXPERM参数的缺省值为20%与80%
即vmtune -p 20 -P 80
可以用以下命令将MINPERM设为5%的内存页,而MAXPERM设为20%的内存页。
# vmtune -p 5 -P 20
在vmtune的输出中,有一个numperm的值,其对我们调整很有参考意义
在Oracle数据库应用的环境下,可以将MINPERM和MAXPERM分别设为5%和20%甚至更小,从而使内存更多地被用于Oracle的SGA而不是系统的文件缓存。
但此时也要考虑系统的dbrw量的多少,用lock_sga方法可以更好的控制sga的是否交换(在lock_sga前,应该先vmtune -S 1 启用pinshm以支持应用的内存pin)
转自:http://blog.youkuaiyun.com/realAsker/article/details/728289
----
性能优化以及确定系统中的性能瓶颈是系统管理员的主要任务之一。在一个计算机系统中,CPU、内存、硬盘和网络是影响系统性能的主要因素,因此系统性能调整也主要在于如何在这些资源中获得某种平衡,以满足人们对系统性能的期望。性能调制需要很多技巧,知识以及经验,不能仅靠分析统计数字,图表就可取得,性能调制有时是一件复杂甚至是非常困难的任务。
如同其它UNIX系统一样,AIX也给系统管理员剪裁系统提供了非常丰富的手段。这里我们简单介绍RS/6000 AIX系统中几个用于监控和调制多项系统资源的工具,每个工具的功能都很强,如想更透彻地了解这些命令的用法,请参考有关技术资料或手册。这里讲述的命令将不仅仅局限于CPU、硬盘、内存或网络资源的某个方面,它们可用于其中的一项或多项资源。
AIX监控工具
1、iostat
iostat命令主要通过观察物理磁盘的活跃时间以及他们的平均传输速度,监控系统输入/输出设备负载。根据iostat命令产生的报告,用户可确定一个系统配置是否平衡,并据此在物理磁盘与适配器之间更好地平衡输入/输出负载。
iostat工具的主要目的是通过监控磁盘的利用率(tm_act字段),而探测到系统中的I/O瓶颈。iostat还可用于确定CPU问题,辅助容量规划,并可以为最终解决I/O问题提供相关材料。vmstat和iostat联合使用,可捕获到确定与CPU,内存和I/O子系统有关的性能问题的必需数据。
iostat命令可产生下面四种类型的报告:
· tty和CPU利用情况
· 磁盘的利用情况
· 系统吞吐率
· 适配器吞吐率
2、netpmon
netpmon命令可以监控关于网络行为的系统事件和性能以及网络行为对CPU的消耗。netpmon命令在指定的监控周期报告网络行为。
netpmon启动后直至发布trcstop命令终止它之前,一直在后台运行。如果使用缺省设置,trace命令将会在netpmon命令之后立即自动启动。另外,netpmon中还可用trcon命令选择在后面的某个时间跟踪。当这种跟踪用trcstop命令终止后,netpmon命令就会输出它的报告并退出。缺省时报告会输出到标准输出,需要时也可以重定向到某个文件。
netpmon命令还可以在一次先前产生的跟踪中以脱机模式使用。在这样的情况下,需要用gennames命令产生一个文件。该文件必须在trace终止后立即产生。
所产生的报告中包括CPU使用情况、网络设备驱动器I/O情况、互联网络套接字调用,以及网络文件系统(NFS)I/O信息:
· CPU use:netpmon命令报告线程和中断处理器对CPU的使用情况。该命令将网络相关行为的CPU使用情况与其它行为的CPU使用情况区分开。
· Network Device Driver I/O:netpmon命令监控网络适配器上所通过的I/O统计。
· Internet Socket Calls:netpmon命令在互联网络套接字上监控read,recv,recvfrom,write,send以及sendto子程序。ICMP,TCP,UDP这几个协议的每个进程都会予以报告。
· NFS I/O:netpmon命令监控客户NFS文件上的read和write子程序,NFS客户上的RPC请求以及NFS服务器的read和write请求。
3、PDT(性能诊断工具)
PDT通过收集和集中各种性能、配置和可用数据自动找出性能问题。PDT评估系统的当前状态并跟踪系统在工作量和性能上的变化。PDT数据收集和报告很容易起用,不需要更多的管理行为。
虽然许多常见的系统性能问题都有特定性,但PDT还试图用一些被认为性能好的系统中的通用概念来帮助它查找问题。这些概念包括:
· 资源的平衡使用
· 在限定范围操作
· 确定的工作量趋势
· 无错误操作
· 系统参数得到适当设置。
4、ps
ps命令是UNIX系统中最常见的命令,它主要显示系统中关于进程的统计和状态信息,如进程ID,I/O行为以及CPU利用率等。利用ps命令提供的信息,可决定一个进程运行了多长时间,进程使用了多少CPU时间,以及进程是否受系统的惩罚。还可用ps命令确定进程使用了多少内存,完成多少I/O,进程的优先级以及是谁创建了进程。
下面这几个命令组合对于管理RS/6000 AIX系统有帮助:
(1)显示10个消耗CPU最多的进程:
# ps aux |head -1 ;ps aux |sort -rn +2 |head –10
(2)显示10个消耗存储空间最多的进程:
# ps aux |head -1 ;ps aux |sort -rn +3 |head -10
(3)按顺序显示系统中受罚的进程:
#ps -eakl |head -1 ;ps -eakl |sort -rn +5
(4)按优先级顺序显示系统中的进程:
#ps -eakl |sort -n +6 |head
(5)按处理时间为顺序显示系统中的前十个进程:
#ps vx |head -1 ;ps vx |grep -v PID |sort -rn +3 |head –10
(6)按实际内存使用的多少顺序显示系统中的前十个进程:
#ps vx |head -1 ;ps vx |grep -v PID |sort -rn +6 |head –10
(7)按换入页面的多少顺序显示系统中的前10个进程:
#ps vx |head -1 ;ps vx |grep -v PID |sort -rn +4 |head -10
5、vmstat
vmstat命令报告关于核心线程,虚拟内存,自陷(trap),磁盘以及CPU行为的统计。而且每种行为报告都被更细致地用百分比分别表示用户态、核态、空闲以及等待磁盘I/O等情况。
内核维持了对核心线程,换页以及中断行为的统计数据,而vmstat命令则通过使用knlist子程序和/dev/kmen伪设备驱动器访问这些数据。磁盘的输入/输出统计是通过设备驱动器维持的。对于磁盘,平均传输速度是通过使用活跃时间核传输信息数目决定的。而活跃时间百分比则是从报告期间驱动器忙的时间量计算出来的。
vmstat命令产生五种类型的报告:
· 虚存行为报告
· fork子进程情况报告
· 每个设备产生的中断情况报告
· 汇总报告
· 输入/输出行为报告
6、sar
sar命令报告CPU的使用情况,I/O以及其它系统行为。sar命令可以收集,报告以及保存系统行为信息。如果没有指定输入文件,则sar调用sarc命令访问系统数据。
用户可用让cron命令运行两个shell脚本(/usr/lib/sa/sa1和/usr/lib/sa2)以提供日统计和报表。在crontab文件/var/spool/cron/crontabs/adm中包括了一些样本节,用于示范cron要在何时运行这些shell脚本。以这种方式收集到的数据对于确定系统的时间周期特征和决定峰值使用时间是有用的。
但要注意的是,sar命令自己运行时会产生相当数量的读写。因此最好在没有工作量的情况下运行sar统计,看看sar对总的统计数字有多大的影响。
7、topas
topas命令用于监控各种系统资源,如CPU的使用情况,CPU事件和队列,内存和换页空间的使用,磁盘性能,网络性能以及NFS统计等。它还会报告指派给不同WLM类的进程对系统资源的消耗情况。它还能报告系统中最热门的进程和工作量管理器(WLM)的热门类。有关WLM类信息只有在WLM激活时才会显示。topas命令将热门进程定义为那些使用大量CPU时间的进程。topas命令没有作日志的选项,所有信息都是实时的。
topas命令利用System Performance Measurement Interface(SPMI)API获得有关信息。正是因为通过SPMI API,使系统开销保持在最小程度。topas命令使用perfstat库调用访问perfstat内核扩展。
8、truss
truss命令跟踪一个进程的系统调用、所接收的信号以及招致的机器错。要检查的应用程序可在truss命令的命令行中指定,也可将truss命令挂在一个或多个已经在运行的进程上。
AIX调制工具
1、fdpr
fdpr命令改进用户级程序和库的执行时间和对实际内存的使用。fdr命令可以通过不同的操作,如删除不必要的指令和重组代码和数据,而实现这样的目标。fdr命令安装在目录/usr/bin下。
fdpr命令在三个不同阶段上,对原有的执行代码应用先进的优化技术从而为其构筑一个优化的可执行代码。这三个阶段分别是:
· 在阶段1,fdpr创建一个增加了某些装置(instrumented)的可执行程序。原有的可执行程序被保存为__ProgramFile.save,而新版本被命名为__ProgramFile.instr。
· 在阶段2,fdpr运行该增加了某些装置的可执行程序,并收集摘要(profiling)数据。该摘要数据被保存在一个叫__ProgramFile.prof的文件中。运行执行程序时需要为它提供典型的输入数据,以使fdpr命令能够找出代码中可优化的部分。
· 在阶段3,fdpr命令使用阶段2中收集到的重要信息对可执行代码重新排序。这些重新排序涉及到这样一些任务:
(1)将那些高频度执行代码序列包装在一起。
(2)对条件分之重新排序,以改进硬件对分之条件的预测。
(3)将较少使用的代码部分移出来。
(4)内嵌一些热门函数。
(5)从重排序后的代码中删除掉NOP(空操作)指令。
另外,编译器中还提供了一个-qfdpr标志,用它可使编译器在执行代码中增加一些额外的信息,以辅助fdpr对该执行代码重新排序。但是,如果使用这个-qfdpr标志,则fdpr也只对那些用-qfdpr标志编译的模块重新排序。
2、schedtune
schedtune命令可以给抖动、进程挂起、时间片以及线程在锁上所能轮询的时间长度等设置准则。
用schedtune,可调整AIX中所设立的一组影响其内存负载控制机制的参数。Schedtune命令用于显示和修改那些用于检测系统内存是否在过度使用以致造成抖动的参数。Schedtune命令还能用于修改运行在系统上的进程的惩罚和衰减因子。在root用户下,用schedtune命令可做下面的事情:
· 决定用于确定抖动的准则。
· 决定哪个准则用于挂起进程。
· 决定在抖动终止后要等待多长时间才重新激活那些先前被挂起的进程。
· 决定被挂起的进程的最小数目。
· 调制调度优先级公式。
· 更改时间片数值。
· 决定在一把锁上轮询多长时间。
· 将schedtune值复位到它的缺省值。
需要注意的是,所有用schedtune作的修改在系统重启后都将丢失。为了确保所需的schedtune值在引导时能够置上,可在/etc/inittab文件中插入适当的schedtune命令。如:schedt:2:once:/usr/samples/kernel/schedtune -s 65536
3、vmtune
vmtune命令负责显示和调整虚存管理器(VMM)和其它AIX部件使用的参数。系统中的根用户可动态修改包括下面这些参数:
· VMM页替换
· 永久文件读写
· 文件系统缓冲区结构(bufstructs)
· LVM缓冲区
· 裸输入/输出
· 换页空间参数
· 页删除
· 内存固定参数
转自:http://blog.youkuaiyun.com/nowdoit/article/details/6446860