11. 系统状态管理
一、
分别制造 CPU、内存、磁盘IO、网络IO繁忙的情况,并用 top, dstat, iostat 等工具观察
1、top
a、命令解析
- q 退出top命令
- <Space> 立即刷新
- s 设置刷新时间间隔
- c 显示命令完全模式
- t 显示或隐藏进程和CPU状态信息
- m 显示或隐藏内存状态信息
- l 显示或隐藏uptime信息
- f 增加或减少进程显示标志
- S 累计模式,会把已完成或退出的子进程占用的CPU时间累计到父进程的MITE+
- P 按%CPU使用率排行
- T 按MITE+排行
- M 按%MEM排行
- u 指定显示用户进程
- r 修改进程renice值
- kkill 进程
- i 只显示正在运行的进程
- W 保存对top的设置到文件^/.toprc,下次启动将自动调用toprc文件的设置。
- h 帮助命令。
- q 退出
b、top 使用
# top
top - 16:50:20 up 5:43, 3 users, load average: 0.00, 0.00, 0.00
Tasks: 157 total, 1 running, 156 sleeping, 0 stopped, 0 zombie
Cpu(s): 8.2%us, 2.2%sy, 0.0%ni, 89.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 1907580k total, 1655416k used, 252164k free, 52160k buffers
Swap: 4194296k total, 8k used, 4194288k free, 1116244k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2453 root 20 0 206m 47m 9196 S 5.8 2.5 1:14.98 Xorg
3072 D 20 0 349m 18m 11m S 2.5 1.0 0:31.89 gnome-terminal
第一行显示的是 当前时间 、当前有多少个登录的用户、系统负载
第二行显示的是 进程总数、正在运行的进程数、睡眠的进程数、停止的进程数、僵尸态进程数
第三行显示的是 用户占 CPU 的百分比、内核占 CPU 的百分比、用户进程内改变过优先级的进程占 CPU 的百分比、空闲 CPU 的百分比、等待输入输出的百分比、
硬中断占用 CPU 的百分比、软中断占 CPU 的百分比、虚拟机偷取时间
第四行显示的是 物理内存总数、使用的物理内存总数、空闲内存总数、用作内核缓存的总数
第五行显示的是 交换区总量、使用的交换区总量、空闲的交换区总量、缓存的交换区总量
PID :进程 ID、USER:进程所有者的用户名、NI:用户名、VIRT:进程使用的虚拟内存、RES:进程使用的物理内存大小、SHR:共享内存大小(kb)、S:进程状态、
%CPU:CPU 距离上次查询占用的百分比、%MEM:进程使用的物理内存百分比、TIME+:进程使用的 CPU 时间、COMMAND 进程的别名
2、dstat
a、命令解析
-l 显示负载统计量
-m 显示内存使用率(包括used,buffer,cache,free值)
-r 显示I/O统计
-s 显示交换分区使用情况
-t 将当前时间显示在第一行
–fs 显示文件系统统计数据(包括文件总数量和inodes值)
–nocolor 不显示颜色(有时候有用)
–socket 显示网络统计数据
–tcp 显示常用的TCP统计
–udp 显示监听的UDP接口及其当前用量的一些动态数据
--disk-util 显示某一时间磁盘的忙碌状况
--freespace 显示当前磁盘空间使用率
--proc-count 显示正在运行的程序数量
--top-bio 指出块I/O最大的进程
--top-cpu 图形化显示CPU占用最大的进程
--top-io 显示正常I/O最大的进程
--top-mem 显示占用最多内存的进程
b、dstat 的简单使用:
root@Demon share]# dstat 1 10
You did not select any stats, using -cdngy by default.
----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai hiq siq| read writ| recv send| in out | int csw
1 1 98 0 0 0| 34k 54k| 0 0 | 0 0 | 65 138
1 1 98 0 0 0| 0 0 | 0 0 | 0 0 | 60 130
0 1 99 0 0 0| 0 0 | 0 0 | 0 0 | 50 97
1 0 99 0 0 0| 0 0 | 0 0 | 0 0 | 61 77
1 2 97 0 0 0| 0 0 | 0 0 | 0 0 | 73 165
0 0 100 0 0 0| 0 0 | 0 0 | 0 0 | 41 114
2 1 97 0 0 0| 0 60k| 0 0 | 0 0 | 80 172
1 1 98 0 0 0| 0 0 | 0 0 | 0 0 | 77 148
1 1 98 0 0 0| 0 0 | 0 0 | 0 0 | 64 126
0 0 100 0 0 0| 0 0 | 0 0 | 0 0 | 42 72
1 2 97 0 0 0| 0 0 | 0 0 | 0 0 | 96 171
它默认显示是分为 5 区域,第一个区域是用来看CPU 使用率,第二个区域是磁盘统计,第三个区域是网络统计,第四个区域是内存使用率,
第五个区域是系统信息
3、iostat
a、iostat 命令解析(命令格式:iostat [参数] [时间] [次数])
-C 显示CPU使用情况
-d 显示磁盘使用情况
-k 以 KB 为单位显示
-m 以 M 为单位显示
-N 显示磁盘阵列(LVM) 信息
-n 显示NFS 使用情况
-p[磁盘] 显示磁盘和分区的情况
-t 显示终端和CPU的信息
-x 显示详细信息
-V 显示版本信息
b、iostat 的使用:
root@Demon share]# iostat -x
Linux 2.6.32-431.el6.x86_64 (Demon) 2016年01月15日 _x86_64_ (1 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.78 0.05 0.69 0.35 0.00 98.12
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda 0.29 11.12 0.95 1.11 61.44 97.82 77.58 0.12 60.40 2.81 0.58
scd0 0.00 0.00 0.00 0.00 0.02 0.00 8.17 0.00 0.56 0.56 0.00
rrqm/s 每秒进行 merge 的读操作数目。即 delta(rmerge)/s
wrqm/s 每秒进行 merge 的写操作数目。即 delta(wmerge)/s
r/s 每秒完成的读 I/O 设备次数。即 delta(rio)/s
w/s 每秒完成的写 I/O 设备次数。即 delta(wio)/s
rsec/s 每秒读扇区数。即 delta(rsect)/s
wsec/s 每秒写扇区数。即 delta(wsect)/s
avgrq-sz 平均每次设备I/O操作的数据大小 (扇区)。即 delta(rsect+wsect)/delta(rio+wio)
avgqu-sz 平均I/O队列长度。即 delta(aveq)/s/1000 (因为aveq的单位为毫秒)。
await 平均每次设备I/O操作的等待时间 (毫秒)。即 delta(ruse+wuse)/delta(rio+wio)
svctm 平均每次设备I/O操作的服务时间 (毫秒)。即 delta(use)/delta(rio+wio)
%util 一秒中有百分之多少的时间用于 I/O 操作,或者说一秒中有多少时间 I/O 队列是非空的