Linux系统整体性能监控工具详解Linux中常用的监控CPU整体性能的工具有:mpstat:mpstat不但能查看所有CPU的平均信息,还能查看指定CPU的信息。vmstat:只能查看所有CPU的平均信息;查看cpu队列信息;iostat:只能查看所有CPU的平均信息。sar:与mpstat一样,不但能查看CPU的平均信息,还能查看指定CPU的信息。top:显示的信息同ps接近,但是top可以了解到CPU消耗,可以根据用户指定的时间来更新显示。oprofile:OProfile是一个低开销的系统全局的性能监视工具。它使用处理器上的性能监视硬件来检索关于内核以及系统上的可执行文件的信息,例如内存是何时被引用的;L2缓存请求数量;收到的硬件中断数量等1./proc/stat/包含了所有CPU活动的信息,该文件中的所有值都是从系统启动开始累计到当前时刻。CODE:[work@builder~]$cat/proc/statcpu43266113295866564221459681714742335346cpu01230752462234941055436941658604615cpu111191741242385810550382069697123371cpu210316435542153010552116764032106334cpu39450431531777210557728521158424intr1065711094105727577992066040352700070020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000737695800000001054602000000030000000000000000000000ctxt19067887btime1139187531processes270014procs_running1procs_blocked0输出解释CPU以及CPU0、CPU1、CPU2、CPU3每行的每个参数意思(以第一行为例)为:参数解释user(432661)从系统启动开始累计到当前时刻,用户态的CPU时间(单位:jiffies),不包含nice值为负进程。1jiffies=0.01秒nice(13295)从系统启动开始累计到当前时刻,nice值为负的进程所占用的CPU时间(单位:jiffies)system(86656)从系统启动开始累计到当前时刻,核心时间(单位:jiffies)idle(422145968)从系统启动开始累计到当前时刻,除硬盘IO等待时间以外其它等待时间(单位:jiffies)iowait(171474)从系统启动开始累计到当前时刻,硬盘IO等待时间(单位:jiffies),irq(233)从系统启动开始累计到当前时刻,硬中断时间(单位:jiffies)softirq(5346)从系统启动开始累计到当前时刻,软中断时间(单位:jiffies)CPU时间=user+system+nice+idle+iowait+irq+softirq“intr”这行给出中断的信息,第一个为自系统启动以来,发生的所有的中断的次数;然后每个数对应一个特定的中断自系统启动以来所发生的次数。“ctxt”给出了自系统启动以来CPU发生的上下文交换的次数。“btime”给出了从系统启动到现在为止的时间,单位为秒。“processes(total_forks)自系统启动以来所创建的任务的个数目。“procs_running”:当前运行队列的任务的数目。“procs_blocked”:当前被阻塞的任务的数目。2./proc/loadavg该文件中的所有值都是从系统启动开始累计到当前时刻。该文件只给出了所有CPU的集合信息,不能该出每个CPU的信息。[root@localhost~]#cat/proc/loadavg4.614.364.159/845662每个值的含义为:参数解释lavg_1(4.61)1-分钟平均负载lavg_5(4.36)5-分钟平均负载lavg_15(4.15)15-分钟平均负载nr_running(9)在采样时刻,运行队列的任务的数目,与/proc/stat的procs_running表示相同意思nr_threads(84)在采样时刻,系统中活跃的任务的个数(不包括运行已经结束的任务)last_pid(5662)最大的pid值,包括轻量级进程,即线程。假设当前有两个CPU,则每个CPU的当前任务数为4.61/2=2.313.uptimeuptime是Linux系统常用的命令,用来报告系统已经运行多长时间,依此显示的信息:现在时间,系统已经运行了的时间,目前有多少登陆用户,1分钟系统平均负载,5分钟系统平均负载,15分钟系统平均负载。该命令从/proc/loadavg中获得loadaverage的信息。范例1:系统只用一个CPU[root@localhost~]#uptime12:20:49up3days,9:20,5users,loadaverage1.101.321.15对于一个CPU的系统来说,范例1中的平均负载高了些。通常来说:如果系统有n个CPU而且平均负载小于n,则说明某些CPU还有空闲的时间片。通过该命令,你能知道CPU是否繁忙,但是无法知道为什么忙。4.mpstatmpstat是MultiprocessorStatistics的缩写,是实时系统监控工具。其报告与CPU的一些统计信息,这些信息存放在/proc/stat文件中。在多CPUs系统里,其不但能查看所有CPU的平均状况信息,而且能够查看特定CPU的信息。下面只介绍mpstat与CPU相关的参数,mpstat的语法如下:mpstat[-P{|ALL}][internal[count]]参数的含义如下:参数解释-P{|ALL}表示监控哪个CPU,cpu在[0,cpu个数-1]中取值internal相邻的两次采样的间隔时间count采样的次数,count只能和delay一起使用当没有参数时,mpstat则显示系统启动以后所有信息的平均值。有interval时,第一行的信息自系统启动以来的平均信息。从第二行开始,输出为前一个interval时间段的平均信息。与CPU有关的输出的含义如下:参数解释从/proc/stat获得数据CPU处理器IDuser在internal时间段里,用户态的CPU时间(%),不包含nice值为负进程usr/total*100nice在internal时间段里,nice值为负进程的CPU时间(%)nice/total*100system在internal时间段里,核心时间(%)system/total*100iowait在internal时间段里,硬盘IO等待时间(%)iowait/total*100irq在internal时间段里,软中断时间(%)irq/total*100soft在internal时间段里,软中断时间(%)softirq/total*100idle在internal时间段里,CPU除去等待磁盘IO操作外的因为任何原因而空闲的时间闲置时间(%)idle/total*100intr/s在internal时间段里,每秒CPU接收的中断的次数intr/total*100CPU总的工作时间=total_cur=user+system+nice+idle+iowait+irq+softirqtotal_pre=pre_user+pre_system+pre_nice+pre_idle+pre_iowait+pre_irq+pre_softirquser=user_cur–user_pretotal=total_cur-total_pre其中_cur表示当前值,_pre表示interval时间前的值。上表中的所有值可取到两位小数点。范例1:averagemode(粗略信息)当mpstat不带参数时,输出为从系统启动以来的平均值。CODE:[work@builderlinux-2.6.14]$mpstatLinux2.6.9-5.31AXsmp(builder.redflag-linux.com)12/16/200509:38:46AMCPU%user%nice%system%iowait%irq%soft%idleintr/s09:38:48AMall23.280.001.750.500.000.0074.471018.59范例2:每2秒产生了4个处理器的统计数据报告下面的命令可以每2秒产生了4个处理器的统计数据报告,一共产生三个interval的信息,然后再给出这三个interval的平均信息。默认时,输出是按照CPU号排序。第一个行给出了从系统引导以来的所有活跃数据。接下来每行对应一个处理器的活跃状态。。CODE:[work@builderlinux-2.6.14]$mpstat-PALL23Linux2.6.9-5.31AXsmp(builder.redflag-linux.com)12/16/200509:38:46AMCPU%user%nice%system%iowait%irq%soft%idleintr/s09:38:48AMall23.280.001.750.500.000.0074.471018.5909:38:48AM02.010.001.010.500.000.0096.485.0309:38:48AM151.260.003.021.010.000.0044.727.0409:38:48AM217.090.002.010.500.000.0081.410.0009:38:48AM322.610.001.010.000.000.0076.381006.0309:38:48AMCPU%user%nice%system%iowait%irq%soft%idleintr/s09:38:50AMall24.220.001.251.250.000.0073.281049.7509:38:50AM01.000.001.000.000.000.0098.0128.8609:38:50AM193.030.003.480.000.000.002.9925.3709:38:50AM21.990.000.504.980.000.0092.540.0009:38:50AM31.000.000.500.000.000.0098.51995.5209:38:50AMCPU%user%nice%system%iowait%irq%soft%idleintr/s09:38:52AMall23.690.002.370.370.000.1273.441028.3609:38:52AM02.990.001.490.000.000.5095.02111.9409:38:52AM152.740.002.991.000.000.0042.294.4809:38:52AM214.930.001.990.000.000.0082.094.4809:38:52AM323.380.001.990.500.000.0073.13907.46Average:CPU%user%nice%system%iowait%irq%soft%idleintr/sAverage:all23.730.001.790.710.000.0473.731032.28Average:02.000.001.160.170.000.1796.5148.75Average:165.720.003.160.670.000.0029.9512.31Average:211.310.001