版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、vmstat使用vmstat来进行性能评估,该命令可获得关于系统各种资源之间的相关性能的简要信息。当然我们也主要用它来看CPU的一个负载情况。下面是我们调用vmstat命令的一个输出结果:$vmstat12Systemconfiguration:lcpu=16mem=23552MBkthrmemorypagefaultscpurbavmfrerepipofrsrcyinsycsussyidwa003091988274115200000018492612949078188300309198927411510000002527320136561152776对上面的命令解释如下:Kthr段显示内容”r列表示可运行的内核线程平均数目,包括正在运行的线程和等待CPU的线程。如果这个数字大于CPU的数目,则表明有线程需要等待CPU。”b列表示处在非中断睡眠状态的进程数。包括正在等待文件系统I/O的线程,或由于内存装入控制而被挂起的线程。Memory段显示内容”avm列表示活动虚拟内存的页面数,每页一般4KB”fre空闲的页面数,每页一般4KBPage段显示内容"re核列无效”pi从磁盘交换到内存的交换页(调页空间)数量,4KB/页。调页空间是驻留在硬盘上的虚拟内存的一部分。当内存使用过量时,会将溢出的工作组页面存储到调页空间中(窃取页)。当进程访问一个窃取页时,就产生了一个缺页故障,而这一页页必须从调页空间中读入到内存中。”po从内存交换到磁盘的交换页数量,4KB/页。如果窃取的工作也在调页空间中不存在或者已经作了修改,则写入调页空间中。如果不被再次访问,它会留在调度空间中直到进程终止或者放弃空间。”fr根据页面替换算法每秒释放的页数。当VMM页面替换例程扫描页面帧表(PageFrameTable,PFT)时,它会根据一些条件选取需要窃取的页面以补充空闲列表。该条件中包含工作页面和计算页面,释放的页面中,计算页面不产生I/O,工作页面如果数据没有发生修改,也不需要写回磁盘,也不会产生I/O。”sr根据页面替换算法每秒所检查的页数。sr值比fr值高的越多,说明替换算法要查找可以替换的页面就越困难。”cy每秒页面替换代码扫描了PFT多少次。因为增加空闲列表达到maxfree值,不一定需要完全扫描PFT表,而所有vmstat输出都为整数,所以通常cy列值为0。Faults段显示内容(其实这段内容不需太多关注)"in在该时间间隔中观测到的每秒设备中断数。”sy在该时间间隔中观测到的每秒系统调用次数。"cs在该时间间隔中观测到的每秒钟上下文切换次数。Cpu段显示内容"us列显示了用户模式所消耗的CPU时间。”sy列详细显示了CPU在系统模式所消耗的CPU时间。"id列显示了没有未决本地磁盘I/O时CPU空闲或等待时间的百分比。”wa列详细显示了有未决本地磁盘I/O时CPU空闲的时间百分比。wa的值如果超过25%,就表明磁盘子系统可能没有被正确平衡,或者这也可能是磁盘工作负荷很重的结果。如果在一个单用户系统中,us+sy时间不超过90%,我们就不认为系统的CPU是受限制的。如果在一个多用户系统中,us+sy时间超过80%,我们就认为系统的CPU是受限的。其中的进程将要花时间在运行队列中等待。响应时间和吞吐量会受损害。检查cpu,我们主要关注报告中的4个cpu列和2个kthr(内核线程)列。在上面的示例中,我们可以观察到以下几个主要的信息:CPUIDLE比较高,比较空闲;r列为0,表明线程不存在等待;WA值不高,说明I/O压力不大;free值比较大,pi,po为0,表明内存非常富裕。空闲较多。2、sar第二个常用的是sar命令,但是sar会增加系统的开销。当然有些情况下,我们使用sar比较方便。sar的输出结果与前面的基本类似,这里不再作详细的介绍,关于命令的语法,也不再作详细的介绍,我们常用的命令格式:#sar13AIXjsdxh_db023500C2C1EB4C00 10/24/07Systemconfiguration:lcpu=1617:52:26%usr%sys%wio%idlephysc17:52:271970758.0017:52:281960758.0117:52:291970758.02Average1970758.01在这里,sar命令输出的是一个整体的cpu使用情况的一个统计,统计分项目的内容也比较直观,通过名字就可以理解涵义。这里有一点比较方便的就是,在最后一行有一个汇总的average行,作为上述统计的一个平均。另外,补充说明一点的就是,一般来说,第一行统计信息包含了sar命令本身启动的cpu消耗,所以往往是偏高的,所以导致average值也往往是偏高一点的。当然,这不会对结果产生多大影响。当我们有多个cpu的时候,而程序采用的是单线程,有时候会出现一种情况,我们检查发现,cpu总体的使用率不高,但是程序响应却比较慢。这里有可能就是单线程只使用了一个cpu,导致这个cpu100%占用,处理不过来,而其他的cpu却闲置。这时可以对cpu分开查询,统计每个cpu的使用情况。#sar-PALL12AIXjsdxh_db023500C2C1EB4C00 10/24/07Systemconfiguration:lcpu=1618:03:30cpu%usr%sys%wio%idlephysc15050001.0020001000.5230001000.484010990.5450001000.4660001000.5370001000.4780001000.5390001000.4710020980.54110001000.461211580310.00131000001.00140001000.53150001000.47-1970758.0118:03:3200710 29 0.0015050001.0020001000.5230001000.484010990.5450001000.4760001000.5270001000.4780001000.5390001000.4710020980.54110001000.461239410200.00131000001.00140001000.52150001000.47-1970757.98Average00700 30 0.0015050001.0020001000.5230001000.484010990.5450001000.4660001000.5370001000.4780001000.5390001000.47
10020980.54110001000.461228480240.00131000001.00140001000.52150001000.47-1970758.00上面是分cpu统计的情况,结果应该也比较直观吧。Sar还有其他一些比较特殊的使用方法,比如:如果希望多个采样和多个报告,可为sar命令指定一个输出文件,这样就方便多了。将sar命令的标准输出数据定向到/dev/null,并将sar命令作为后台进程运行。具体的命令格式为:sar-A-o/temp/sar_result.log5300>/dev/null&关于sar其他的一些使用方法,这里不再详述。3、iostat第三个可以用来使用的命令是iostat.$iostat-t24tty:tintoutavg-cpu:%user%sys%idle%iowait0.00.00.00.199.80.10.081.00.00.199.90.00.040.50.00.0100.00.00.040.50.00.199.10.8TTY的两列信息(tin和tou)显示了由所有TTY设备读写的字符数CPU统计信息列(%user、%sys、%idle和%iowait)提供了CPU的使用情况。注意:第一份报告为系统启动以来的一个累积值。4、tprof使用tprof命令用于统计每个进程的CPU使用情况#tprof-xsleep30该命令的输出结果可查看__prof.all文件。此命令运行30秒钟,在当前目录下创建一个名为_prof.all的文件。30秒钟内,CPU被调度次数约为3000次。__prof.all文件中的字段Total为此进程调度到的CPU次数。如果进程所对应的Total字段的值为1500,即表示该进程在3000次CPU调度中占用了1500次,或理解为使用了一半的CPU时间。tprof的输出准确地显示出哪个进程在使用CPU时间。在我下面的这一份示例中,可以看到,大部分的cpu时间都是被wait所占用的。这里的wait实际上是idle进程,可以表明这个系统是一个完全空闲的系统。$more__prof.allProcessPIDTIDTotalKernelUserSharedOther
—:— wait409704097129982998000wait327763277729942994000wait245822458329852985000wait163881638929802980000syncd2212541557073131000caiUxOs524540'229401530030netm737467374711000hats_nim167124212206651 0010snmpd6459825812452911 1000rpc.lockd639212172867911000tprof704622227743710010trclogio360524240862511000trace1523820252314510010clinfo1958102276094511000sh1572938228570911000Total120001199406 0ProcessFREQTotalKernelUserSharedOtherwait— 411957 119570— 0 0syncd13131000caiUxOs130030netm111000hats_nim110010snmpd64111000rpc.lockd111000tprof110010trclogio111000trace110010clinfo111000sh111000Total— 1512000 119940— 6 0在这里,对wait进程作一点补充说明。在AIX5L下,你用psaux会发现有一些root的wait进程在AIX5L下,你用psaux会发现有一些root的wait进程#psaux|head-20USERPID%CPU%MEMSZRSSTTYSTATSTIMETIMECOMMANDoracle2663545.70.05013627524 -A15:40:350:32oracleora92(LOCroot 172143.10.04040 -AJul0424793:53wait
root169463.10.04040 -AJul0424633:59waitroot166783.10.04040 -AJul0424600:21waitroot532743.10.04040 -AJul0424397:54waitroot2863.10.04040 -AJul0424371:55waitroot81963.00.04040 -AJul0424312:40waitroot8223.00.04040 -AJul0424303:36waitroot5543.00.04040 -AJul0424261:50waitroot207762.70.04040 -AJul0421502:46waitroot573722.70.04040 -AJul0421439:31waitroot491762.70.04040 -AJul0421423:47waitroot210442.70.04040 -AJul0421398:24waitroot128482.70.04040 -AJul0421357:07waitroot213122.70.04040 -AJul0421324:26waitroot125802.70.04040 -AJul0421293:06waitroot131162.70.04040 -AJul0421195:47waitoracle3446120.30.05758834976-AJul042663:08ora_j000_ora92oracle4304080.30.05590833296-AJul042220:57ora_j001_ora92wait就是CPU空闲的时候运行的空闲进程,AIX4上叫kproc。所以这个进程占用越大,表示机器越空闲。Wait进程的数量是由机器上的逻辑CPU的个数决定的,有几个逻辑CPU,就有几个wait进程.5、ps这个命令使用本身也比较复杂,在这里只介绍如何查看cpu占用最高的进程。使用举例如下:#psaux|head-25USERPID%CPU%MEMSZRSSTTYSTATSTIMETIMECOMMANDroot172143.10.04040-AJul0425578:42waitroot169463.10.04040-AJul0425415:54waitroot166783.10.04040-AJul0425377:03waitroot532743.10.04040-AJul0425170:12waitroot2863.10.04040-AJul0425144:00waitroot81963.00.04040-AJul0425082:32waitroot8223.00.04040-AJul0425072:25waitroot5543.00.04040-AJul0425034:14waitroot207762.70.04040-AJul0422181:27waitroot573722.70.04040-AJul0422118:00waitroot491762.70.04040-AJul0422102:02waitroot210442.70.04040-AJul0422077:18waitroot128482.70.04040-AJul0422036:44waitroot213122.70.04040-AJul0421998:53waitroot125802.70.04040-AJul0421967:17waitroot131162.70.04040-AJul0421865:51waitoracle3446120.30.05637233852-AJul042707:30ora_j000_ora92oracle4304080.30.05591633396-AJul042266:20ora_j001_ora92oracle3650920.20.05618433664-AJul041765:58ora_j002_ora92
oracle4424300.20.05609233572-AJul041426:40ora_j003_ora92oracle3856060.10.05598433464-AJul051159:17ora_j004_ora92oracle4138560.10.05052028000-AJul23543:31oracleora92(LOCoracle1436680.10.05052828008-AJul13833:21oracleora92(LOCoracle3692300.10.05660034080-AJul05806:36ora_j005_ora92在这个输出结果中,排在前面的是16个root用户的wait进程,这其实是CPU空闲的时候运行的空闲进程,之前已作说明。所以CPU最高的几个进程其实是下面的ORACLE用户的ora_j00*进程,这是ORACLE的job进程。在这里,这些进程的开销很小。如果ORACLE的进程开销比较大,我们可以用如下的方法来查询具体的进程在干什么事情,例如我们要查询进程ora」000_ora92,PID=344612,可以使用下面的方法:$su-oracleSQL>sqlplus“/assysdba”SQL>oradebugsetospid344612SQL>oradebugevent10046tracenamecontextforever,level8SQL>oradebugtracefile_name-这个命令我们获得输出文件的绝对路径和文件名SQL>oradebugevent10046tracenamecontextoff$tkprof/opt/oracle/app/oracle/admin/ora92/bdump/ora92_j000_344612.trctracepid.txt$moretracepid.txt在tracepid.txt中,我们就可以看到这个进程中具体运行的语句、过程等,以及所有的SQL的cpu消耗、物理读、逻辑读、执行计划等信息。另外,我们也可以执行下面的语句查看进程具体运行的SQL语句的文本:SELECT/*+ORDERED*/sql_textFROMv$sqltextaWHERE(a.hash_value,a.address)IN(SELECTDECODE(sql_hash_value,0,prev_hash_value,sql_hash_value),DECODE(sql_hash_value,0,prev_sql_addr,sql_address)FROMv$sessionbWHEREb.paddr=(SELECTaddrFROMv$processcWHEREc.spid='&pid'))ORDERBYpieceASC6、解决CPU占用的惩罚机制nice和renice指定和修改命令的优先级。系统中运行的每个进程都有一个优先级,我们可以用ps命令看到,这个优先级为PRI,PRI的值越小,优先级越高,能占用更多的CPU时间片。系统默认的PRI为60,我们可以通过nice命令和renice命令来改变一个进程的优先级,从而控制进程对CPU时间片的占用。任何一个用户都可以使用nice命令来使他的进程以低于系统默认的pri运行。但是只有root用户才可以使进程以高于默认的pri运行。我们先来看一下nice命令的使用方法:#nice-n-5vmstat210>vmstat.out#ps-elFSUIDPIDPPIDCPRINIADDRSZWCHANTTYTIMECMD200001A0704738152372805515aee1400544f100009e63c23e30pts/10:00vmstat指定程序以nice值-5开始运行。程序开始后,nice的值为15,PRI的值为55。
nice命令可以指定的范围为-20(最高优先级)到20(最低优先级)。在AIX5.3中,默认的nice为20。vmstat210>vmstat.outps-elFSUIDPIDPPIDCPRINIADDRSZWCHANTTYTIMECMD200001A070474015237280602032ec6400472f100009e63c23e30pts/10:00vmstat64可以看到默认的情况下,系统使用的nice=20,pri=60。实际上,在使用nice指定的时候,我们也可以使用超出闭区间[-20,20]的值,比如:nice-n-33vmstat210>vmstat.outps-elFSUIDPIDPPIDCPRINIADDRSZWCHANTTYTIMECMD200001A03196521523728040082ef0400544f100009e63c23e30pts/10:00vmstat64上例中,我们指定的nice小于-20,得到最高的优先级(pri=40)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年大二(交通工程)交通规划原理期末试题
- 2025年大学二年级(中医康复技术)针灸基础试题及答案
- 2025年大学公共基础(计算机应用技能)试题及答案
- 2025年中职第一学年(物流服务与管理)物流仓储管理试题及答案
- 2025年大学大四(理学)理学专业毕业设计答辩测试题及解析
- 2025年高职建筑(建筑工程计量)试题及答案
- 2025年高职(大数据技术)大数据分析案例应用阶段测试题及答案
- 2025年高职热能与发电工程(热力系统维护)试题及答案
- 2025年大学社区护理实训(护理实操训练)试题及答案
- 2026年安庆职业技术学院高职单招职业适应性测试模拟试题带答案解析
- 商务谈判实务-形考任务二-国开(ZJ)-参考资料
- 青春期小学生教育课件
- 吉林省“BEST合作体”2024-2025学年高一上学期期末考试数学试卷(图片版含答案)
- 关于项目进展讨论会议记录
- 地理(A卷)-浙江省温州市2024学年高一第一学期期末教学质量统一检测
- 《基础护理学(第七版)》考前强化模拟练习试题库500题(含答案)
- GB 1499.1-2024钢筋混凝土用钢第1部分:热轧光圆钢筋
- 矿产授权委托书
- 航空公司招聘笔试行测题
- 员工工资明细表Excel模板
- DB32-T 4086-2021 特种设备风险分级管控工作规范
评论
0/150
提交评论