搞系统、运维、数据库的兄弟们应该都很清楚,常常需要查看系统运行的情况,简单列几项:
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:系统交换活动。
(待续)