搞系统、运维、数据库的兄弟们应该都很清楚,常常需要查看系统运行的情况,简单列几项:

1、vmstat 命令

     vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存、进程、CPU活动进行监控。他是对系统的整体情况进行统计,不足之处是无法对某个进程进行深入分析。通常使用vmstat 5 5(每隔5秒钟生成一次数据,一共生成5次数据)命令测试。

[oracle@orahost ~]$ vmstat 5 5
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in    cs us sy id wa
 0  0      0 876420  51128 1019032    0    0     0     2    1     1  0  0 100  0
 0  0      0 876484  51128 1019032    0    0     0    37 1070   137  0  0 100  0
 0  0      0 876484  51128 1019032    0    0     0    12 1201   137  0  0 100  0
 0  0      0 876484  51128 1019032    0    0     0    22 1110   138  0  0 100  0
 0  0      0 876484  51128 1019032    0    0     0    22 1163   136  0  0 100  0

说明(六部分):

(1)进程procs:
r:在运行队列中等待的进程数 。
b:在等待io的进程数 。

(2)Linux 内存监控内存memoy:
swpd:现时可用的交换内存(单位KB)。
free:空闲的内存(单位KB)。
buff: 缓冲去中的内存数(单位:KB)。
cache:被用来做为高速缓存的内存数(单位:KB)。

(3) Linux 内存监控swap交换页面
si: 从磁盘交换到内存的交换页数量,单位:KB/秒。
so: 从内存交换到磁盘的交换页数量,单位:KB/秒。

(4)Linux 内存监控 io块设备:
bi: 发送到块设备的块数,单位:块/秒。
bo: 从块设备接收到的块数,单位:块/秒。

(5)Linux 内存监控system系统:
in: 每秒的中断数,包括时钟中断。
cs: 每秒的环境(上下文)转换次数。

(6)Linux 内存监控cpu中央处理器:
us:用户进程使用的时间 。以百分比表示。
sy:系统进程使用的时间。 以百分比表示。
id:中央处理器的空闲时间 。以百分比表示

假如 r经常大于 4 ,且id经常小于40,表示中央处理器的负荷很重。 假如bi,bo 长期不等于0,表示物理内存容量太小

2、free命令检测内存状况

注意查看SWAP使用情况

[oracle@orahost ~]$ free -m
                    total       used       free     shared    buffers     cached
Mem:          2025       1170        855          0         49        995
-/+ buffers/cache:        125       1900
Swap:         4094          0       4094

3、iostat

报告计算机输入/输出设备的统计信息

[oracle@orahost ~]$ iostat -x
Linux 2.6.9-42.ELsmp (orahost.orahost)  04/02/2002

avg-cpu:  %user   %nice    %sys %iowait   %idle
           0.01    0.00    0.02    0.01   99.96

Device:    rrqm/s wrqm/s   r/s   w/s  rsec/s  wsec/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
hdb          0.00    0.62   0.00  0.29    0.11    7.27     0.05     3.64    24.81     0.00    1.66   0.65   0.02

几个参数比较重要:
%util:      一秒中有百分之多少的时间用于 I/O 操作,或者说一秒中有多少时间 I/O 队列是非空的
svctm:   平均每次设备I/O操作的服务时间
await:    平均每次设备I/O操作的等待时间
avgqu-sz: 平均I/O队列长度

如果%util接近100%,表明i/o请求太多,i/o系统已经满负荷,磁盘可能存在瓶颈,一般%util大于70%,i/o压力就比较大,读取速度有较多的wait.同时可以结合vmstat查看查看b参数(等待资源的进程数)和wa参数(IO等待所占用的CPU时间的百分比,高过30%时IO压力高)。
await 的大小一般取决于服务时间(svctm) 以及 I/O 队列的长度和 I/O 请求的发出模式。如果 svctm 比较接近 await,说明 I/O 几乎没有等待时间;如果 await 远大于 svctm,说明 I/O 队列太长,应用得到的响应时间变慢。

4、sar 命令

比如系统运行速度突然变慢,系统容易死机或者主机所带的终端常出现死机,这时我们常常猜测,是硬盘空间太小,还是内存不足?I/O出现瓶颈,或者是系统的核心参数出了问题?这时,我们应该考虑使用系统给我们提供的sar命令来对系统作一个了解,

sar  -u 5 3   对cpu利用率,每5秒采样一次,连续采样3次

[oracle@orahost ~]$ sar  -u 5 3
Linux 2.6.9-42.ELsmp (orahost.orahost)  04/02/2002

06:45:34 PM       CPU     %user     %nice   %system   %iowait     %idle
06:45:39 PM       all      0.00      0.00      0.10      0.10     99.80
06:45:44 PM       all      0.00      0.00      0.00      0.00    100.00
06:45:49 PM       all      0.00      0.00      0.00      0.00    100.00
Average:              all      0.00      0.00      0.03      0.03     99.93

参数:
-A:所有报告的总和。
-u:CPU利用率
-v:进程、I节点、文件和锁表状态。
-d:硬盘使用报告。
-r:没有使用的内存页面和硬盘块。
-g:串口I/O的情况。
-b:缓冲区使用情况。
-a:文件读写情况。
-c:系统调用情况。
-R:进程的活动情况。
-y:终端设备活动情况。
-w:系统交换活动。

 

(待续)