因为经常需要在Solaris系统上分析资源使用状况,而网上或者书籍中资源监控命令总是零零碎碎的分散在各处,故将这个内容整理一下。
命令 |
作用 |
iostat |
磁盘IO监控 |
vmstat |
虚拟内存监控 |
prstat |
进程监控 |
mpstat |
CPU监控 |
netstat |
网络状态监控 |
sar |
全面监控 |
一、进程监控 prstat
-bash-3.00#prstat
PID USERNAME SIZE RSS STATE PRI NICE TIME CPU PROCESS/NLWP
2450 root 8044M 5714M cpu2 10 0 204:37:21 51% java/612
17405 root 136M 39Msleep 59 0 7:23:45 0.1% java/25
15223 root 6360K 4824K cpu18 59 0 0:00:00 0.1% prstat/1
……..
Total:44 processes, 861 lwps, load averages: 2.09, 2.08, 2.07
Ø Size: 进程映像的大小(进程的总虚拟内存大小),包括所有映射的文件和设备(进程的文本区(程序空间)、数据区、动态分配区的总和)
Ø RSS:进程常驻大小。表示映射到进程的物理内存总量,包括共享给其他进程的物理内存。
Ø TIME:进程累计执行时间。
Ø CPU:当前进程CPU使用时间的百分比;
Ø PROCESS/NLWP:进程名(执行文件名)以及进程的线程数。
Ø PID:进程ID号;
Ø USERNAME:实际的用户名(登陆名)或者用户ID。
Ø PRI:进程优先级,数字越大则优先级越高。
Ø NICE:用于优先级计算的精确数字。
在实际的性能问题分析过程中,需要关注的参数主要是Size,RSS,TIME,CPU,NLWP。在一些极端的情况下,TIME和CPU两项内容能表示系统出现了异常,比如TIME显示的数值非常大,明显不合常理,或者某个应用此时CPU使用率远比正常情况要大的多。
其次,在最后一行,prstat还给出了当前系统的进程数和线程数,以及系统在当前时刻,5分钟内,15分钟内的系统平均负载情况:
Total: 44 processes, 861 lwps,load averages: 2.09, 2.08, 2.07
这些数据都有助于我们了解系统的整体情况,后面会对平均负载的含义做详细说明。
在使用prstat获得一个对所有进程运行的整体印象后,可以进一步通过一些参数来观测某个具体应用进程的详细情况。
root@t139 #prstat -mLp 3411
PID USERNAME USR SYS TRP TFL DFL LCK SLP LATVCX ICX SCL SIG PROCESS/LWPID
3411 root 21 0.0 0.0 0.0 0.0 79 0.0 0.0 4 18 7 0java/10
3411 root 2.1 0.2 0.0 0.0 0.0 92 5.7 0.0285 7 939 0 java/3560
3411 root 0.5 0.0 0.0 0.0 0.0 99 0.50.0 37 0 143 0 java/4308
3411 root 0.0 0.0 0.0 0.0 0.0 14 86 0.0 2 0 8 0 java/120
……
Total: 1processes, 176 lwps, load averages: 0.05, 0.10, 0.16
-L:显示进程的线程信息;
-m:显示进程的微态;微态以时间基准来表示,并且以百分比形式分散到每个线程。
-p:指定观测的进程;
Ø LCK:进程花费在等待用户锁上的时间百分比;
Ø SLP:进程花费在休眠上的时间百分比;
Ø DFL: 显示花费在等待被服务的数据错误的时间百分比。如果该值较高,显示内存不足。
Ø LAT:进程花费在等待CPU上的时间。
Ø VCX The number of voluntary contextswitches.
Ø ICX The number of involuntary contextswitches.
Ø SCL The number of system calls.
Ø SIG The number of signals received.
可以使用USR和SYS的状态来查看一个进程消耗的CPU百分比,LAT列显示等待CPU时间的百分比。查看TFL和DFL决定一个进程是否或者怎样去等待内存页面调度,DFL栏显示花费在等待被服务的数据错误的时间百分比。如果该值过大,显示系统运行内存不足(后面还会介绍多种方法,用于分析系统内存不足)。有关重要事件的提示,比如磁盘或者网络等待,连同其他内核事件都绑定到SLP状态。因为SLP列包含磁盘读写,其他类型的调度也会影响到SLP状态显示花费的时间。比如,内核锁或者条件变量同样也会累积实际,并显示在此状态中。
二 、 CPU和内存监控:vmstat
-bash-3.00$ vmstat 3
kthr memory page disk faults cpu
r bw swap free re mf pi po fr de sr s1 sd sd -- in sy cs ussy id
0 00 2001848 541208 23 233 71 19 37 2600 220 0 25 0 1185 25241464 2 1 97
0 00 1667384 140408 1 9 0 0 0 1904 0 0 0 4 0 507 476 908 0 0 99
0 00 1667384 140408 0 0 0 0 0 1232 0 0 0 3 0 484 565 922 0 1 99
0 00 1667376 140400 0 1 0 0 0 752 0 0 0 2 0 4811636 925 1 0 99
0 00 1667376 140384 0 0 0 0 0 272 0 0 0 3 0 521 651 880 0 0 99
0 00 1667376 140384 0 0 0 0 0 0 0 0 0 2 0 499 494 840 0 0 99
0 00 1667376 140344 50 177 8 0 0 0 0 0 0 4 0 1948 2746 2205 2 1 97
第一行是自启动以来的摘要信息,紧接着是每隔3秒钟一个示例。
参数说明:
Kthr:处于各种状态中的内核线程数量,包括:
Ø r:在运行队列中的内核线程数;
Ø b:在等待IO资源、分页等被阻塞得内核线程数;
Ø w:正在等待处理资源结束的被交换处的轻量级线程的数量。
Memory:
Ø Swap:可用的交换空间(KB);
Ø Free: 剩余的物理内存(KB);
Page;显示页故障和分页活动性,以每秒为单位。
Ø Re:页要求归还(page reclaims);
Ø Mf: 最小故障;
Ø Pi:页入(KB);
Ø Po:页出(KB);
Ø Fr: 剩余页页出(KB);
Ø De:预计的短期内内存不足页出(KB);
Ø Sr:时钟算法扫描的页;
Disk:每秒磁盘操作数。S表示SCSI磁盘;
Faults:报告自陷/中断率;
Ø In:中断;
Ø Sy:系统调用;
Ø Cs:CPU上下文切换。
CPU:
Ø us:用户时间百分比;CPU处理用户模式的线程所花费的时间;
<