Linux命令行性能检测工具集合

上一篇 / 下一篇  2010-10-29 11:36:32 / 个人分类:Linux

Linux系统出现问题时,我们不仅需要查看系统日志信息,而且还要使用大量的性能监测工具来判断究竟是哪一部分(内存、CPU、硬盘……)出了问题。在Linux系统中,所有的运行参数保存在虚拟目录/proc中,换句话说,我们使用的性能监控工具取到的数据值实际上就是源自于这个目录,当涉及到系统高估时,我们就可以修改/proc目录中的相关参数了,当然有些是不能乱改的。下面就让我们了解一下这些常用的性能监控工具。

 工具

功能描述

uptime

系统平均负载率

top

进程进行状态

iostat

CPU和磁盘平均使用率

vmstat

系统运行状态

ps pstree

进程列表信息

numastat

NUMA架构内存使用情况对比

sar

实时收集系统使用状态

free

内存使用率

pmap

进程内存占用率

strace

追踪程序运行状态

ulimit

系统资源使用限制

mpstat

多处理器使用率

dmesg

硬件/系统信息

KDE System Guard

图形监控工具

traffic-vis

网络监控(只有SUSE有)

   注:下面附图的命令输出信息,以红旗DC Server 5.0 for x86 Sp1,Suse为基础平台,可能在不同的操作系统或核心版本有较大区别,对比时请留意。
一、uptime
     Uptime
命令的显示结果包括服务器已经运行了多长时间,有多少登陆用户和对服务器性能的总体评估(load average)。load average值分别记录了上个1分钟,5分钟和15分钟间隔的负载情况,load average不是一个百分比,而是在队列中等待执行的进程的数量。如果进程要求CPU时间被阻塞(意味着CPU没有时间处理它),load average值将增加。另一方面,如果每个进程都可以立刻得到访问CPU的时间,这个值将减少。
   UP kernel
下的load average的最佳值是1,这说明每个进程都可以立刻被CPU处理,当然,更低不会有问题,只说明浪费了一部分的资源。但在不同的系统间这个值也是不同的,例如一个单CPU工作站,load average1或者2都是可以接受的,
而在一个多CPU的系统中这个值应除以物理CPU的个数,假设CPU个数为4,而load average8或者10,那结果也是在2多点而已。

9:24am  up  19:06,  1 user,  load average: 0.12, 0.13, 0.05
 
你可以使用uptime判断一个性能问题是出现在服务器上还是网络上。例如,如果一个网络应用运行性能不理想,运行uptime检查系统负载是否比较高,如果不是这个问题更可能出现在你的网络上。

也可以查看/proc/loadavg/proc/uptime两个文件,注意不能编辑/proc中的文件,要用cat等命令来查看,如:
liyawei:~ # cat /proc/loadavg
0.00 0.00 0.00 1/55 5505

二、top
   Top
命令显示了实际CPU使用情况,默认情况下,它显示了服务器上占用CPU的任务信息并且每5秒钟刷新一次。你可以通过多种方式分类它们,包括PID、时间和内存使用情况。

显示处理器的活动状况。缺省情况下,显示占用CPU最多的任务,并且每隔5秒钟做一次刷新。
Process priority
的数值决定了CPU处理进程的顺序。LIUNX内核会根据需要调整该数值的大小。nice value局限于prioritypriority的值不能低于nice valuenice value值越低,优先级越高)。您不可以直接修改Process priority的值,但是可以通过调整nice level值来间接地改变Process priority值,然而这一方法并不是所有时候都可用。如果某个进程运行异常的慢,可以通过降低nice level为该进程分配更多的CPU
Linux
支持的nice levels19 (优先级低)-20 (优先级高),缺省值为0
执行/bin/ps命令可以查看到当前进程的情况。


top - 18:31:08 up 174 days,  1:43,  1 user,  load average: 0.24, 0.19, 0.11    

Tasks:463total,   1running,357sleeping,105stopped,   0zombie           

Cpu(s):  2.2%us,  0.9%sy,  0.0%ni,96.9%id,  0.0%wa,  0.0%hi,  0.0%si   

Mem: 16631900ktotal,15881988kused,   749912kfree,   403764kbuffers       

Swap:  8385888ktotal,    85272kused,  8300616kfree,  3720388kcached        

                                                                              PID USER      PR  NI  VIRT  SHR S %MEM    TIME+   RES %CPU COMMAND           

 406 chartis_  16   0  4560  556 T  0.0   0:00.00  636  0.0 iostat            

 1582 chartis_  16   0  4852  516 T  0.0   0:00.00  788  0.0 man               

 1585 chartis_  16   0  5400  800 T  0.0   0:00.00  920  0.0 sh                

 1586 chartis_  16   0  5400  304 T  0.0   0:00.00  424  0.0 sh                

 1591 chartis_  16   0  3532  520 T  0.0   0:00.00  652  0.0 less              

 2726 chartis_  16   0 10044 1944 T  0.0   0:00.01 3008  0.0 vim               

 2888 chartis_  16   0  4668  488 T  0.0   0:00.00  568  0.0 more              

 3293 chartis_  16   0  5324  516 T  0.0   0:00.00  788  0.0 man               

 3296 chartis_  16   0  5524  800 T  0.0   0:00.00  920  0.0 sh                

 3297 chartis_  16   0  5524  304 T  0.0   0:00.00  424  0.0 sh                

 3301 chartis_  16   0  5400  896 T  0.0   0:00.00 1024  0.0 nroff             

 3302 chartis_  16   0  3604  520 T  0.0   0:00.00  648  0.0 less               

 3310 chartis_  16   0  5540  440 T  0.0   0:00.00  564  0.0 iconv             

 4301 chartis_  16   0  4380  516 T  0.0   0:00.00  788  0.0 man               

 4304 chartis_  16   0  5592  800 T  0.0   0:00.00  916  0.0 sh                

 4305 chartis_  16   0  5592  304 T  0.0   0:00.00  420  0.0 sh                

 4310 chartis_  16   0  3212  520 T  0.0   0:00.00  652  0.0 less              

 8194 chartis_  16   0  2704  752 T  0.0   0:00.06 1132  0.0 top               

 9744 chartis_  16   0  3744  752 T  0.0   0:06.69 1144  0.0 top               


下面是输出值的介绍:

引用

PID:进程标识
USER
;进程所有者的用户名
PRI
:进程的优先级
NI
nice级别
SIZE
:进程占用的内存数量(代码+数据+堆栈)
RSS
;进程使用的物理内存数量
SHARE
;该进程和其他进程共享内存的数量
STAT
:进程的状态:S=休眠状态,R=运行状态,T=停止状态,D=中断休眠状态,Z=僵尸状态
%CPU
:共享的CPU使用
%MEM
;共享的物理内存
TIME
:进程占用CPU的时间
COMMAND
:启动任务的命令行(包括参数)


进程的优先级和nice级别
   
进程优先级是一个决定进程被CPU执行优先顺序的参数,内核会根据需要调整这个值。Nice值是一个对优先权的限制。进程优先级的值不能低于nice值。(nice值越低优先级越高)
   
进程优先级是无法去手动改变的,只有通过改变nice值去间接的调整进程优先级。如果一个进程运行的太慢了,你可以通过指定一个较低的nice值去为它分配更多的CPU资源。当然,这意味着其他的一些进程将被分配更少的CPU资源,运行更慢一些。Linux支持nice值的范围是19(低优先级)到-20(高优先级),默认的值是0。如果需要改变一个进程的nice值为负数(高优先级),必须使用su命令登陆到root用户。下面是一些调整nice值的命令示例,
nice-5开始程序xyz

#nice –n -5 xyz


改变已经运行的程序的nice

#renice level pid


pid2500的进程的nice值改为10

#renice 10 2500


僵尸进程
   
当一个进程被结束,在它结束之前通常需要用一些时间去完成所有的任务(比如关闭打开的文件),在一个很短的时间里,这个进程的状态为僵尸状态。在进程完成所有关闭任务之后,会向父进程提交它关闭的信息。有些情况下,一个僵尸进程不能关闭它自己,这时这个进程状态就为zzombie)。不能使用kill命令杀死僵尸进程,因为它已经标志为“dead”。如果你无法摆脱一个僵尸进程,你可以杀死它的父进程,这个僵尸进程也就消失了。然而,如果父进程是init进程,你不能杀死init进程,因为init是一个重要的系统进程,这种情况下你只能通过一次重新启动服务器来摆脱僵尸进程。也必须分析应用为什么会导致僵死?
三、iostat
   iostat
sysstat包的一部分。Iostat显示自系统启动后的平均CPU时间(与uptime类似),它也可以显示磁盘子系统的使用情况,iostat可以用来监测CPU利用率和磁盘利用率。
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
0.16    0.01    0.03    0.10    0.00   99.71

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
hda               0.31         4.65         4.12     327796     290832

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
1.00    0.00    0.00    0.00    0.00  100.00

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
hda               0.00         0.00         0.00          0          0

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
0.00    0.00    0.00    0.00    0.00   99.01

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
hda               0.00         0.00         0.00          0          0

   CPU
利用率分四个部分:

引用

%useruser level(应用)的CPU占用率情况
%nice
:加入nice优先级的user levelCPU占用率情况
%sys
system level(内核)的CPU占用情况
%idle

TAG:

chase001的个人空间 引用 删除 chase001   /   2010-11-04 20:01:30
好东西谢了
引用 删除 tames   /   2010-10-30 21:49:55
5
 

评分:0

我来说两句

Open Toolbar