AIX/Linux 系统性能监控工具详解
nmon 性能分析工具
nmon 是一款免费的系统性能分析工具,可用于 AIX 和 Linux 系统。
nmon 监控指标说明
| SYS_SUMM | 系统汇总信息,蓝线表示 CPU 占用率变化,粉线表示磁盘 IO 变化 |
| AAA | 操作系统及 nmon 本身相关信息 |
| BBBB | 系统外挂存储容量及类型 |
| BBBC | 系统外挂存储位置、状态及描述 |
| BBBD | 磁盘适配器信息(名称及描述) |
| BBBE | 通过 lsdev 命令获取的系统设备特征,显示 vpaths 和 hdisks 映射关系 |
| BBBG | 磁盘组详细映射关系 |
| BBBL | 逻辑分区(LPAR)配置详情 |
| BBBN | 网络适配器信息 |
| BBBP | vmtune、schedtune、emstat 和 lsattr 命令输出 |
| CPUnn | CPU 占用情况,包含 user%、sys%、wait% 和 idle% |
| CPU_ALL | 所有 CPU 概述,显示平均占用情况及 SMT 状态 |
| CPU_SUMM | 每个 CPU 执行时间内的占用情况 |
| DGBUSY | 磁盘组 hdisk 设备平均占用情况 |
| DGREAD | 每个磁盘组平均读情况 |
| DGSIZE | 每个磁盘组平均读写情况(块大小) |
| DGWRITE | 每个磁盘组平均写情况 |
| DGXFER | 每个磁盘组 I/O 每秒操作次数 |
| DISKBSIZE | 执行时间内每个 hdisk 传输块大小 |
| DISKBUSY | 每个 hdisk 设备平均占用情况 |
| DISKREAD | 每个 hdisk 平均读情况 |
| DISKWRITE | 每个 hdisk 平均写情况 |
| DISKXFER | 每个 hdisk I/O 每秒操作次数 |
| DISKSERV | 每个收集间隔中 hdisk 评估服务时间 |
| DISK_SUMM | 总体 disk 读、写及 I/O 操作 |
| JFSFILE | 每个文件系统间隔区间使用空间百分比 |
| JFSINODE | 每个文件系统间隔区间使用 inode 百分比 |
| MEM | 空闲实存数量 |
| NET | 每个网络适配器数据传输速率(KB/s) |
| NETPACKET | 每个适配器网络读写包数量 |
| PAGE | 相关页信息记录 |
| PROC | nmon 内核内部统计信息 |
| TOP | 系统进程信息 |
| ZZZZ | 自动转换 nmon 时间戳为真实时间 |
自动化脚本工具
提供自动化 hosts 配置和 nmon 数据分析功能:
- AnalyseNmon.jar
- AddHost.jar
- run.bat
run.bat 脚本内容
@echo off :main cls echo ****************************** echo 1. 添加HOSTS(将输入的IP地址、主机名映射添加至目标机器列表的HOSTS文件中) echo 2. 删除HOSTS(将输入的IP地址、主机名映射从目标机器列表的HOSTS文件中删除) echo 3. 分析NMON数据(取得NMON文件中某时段的资源平均使用信息保存在output.csv中) echo 4. 退出 echo ****************************** set /p cmd=请输入序号: if %cmd%==1 goto cmd1 if %cmd%==2 goto cmd2 if %cmd%==3 goto cmd3 if %cmd%==4 goto exit goto main :cmd1 set /p ip=请输入IP: set /p name=请输入HostName: java -jar AddHost.jar %ip% %name% ADD pause goto exit :cmd2 set /p ip=请输入IP: set /p name=请输入HostName: java -jar AddHost.jar %ip% %name% DEL pause goto exit :cmd3 set /p folder=请输入NMON文件或文件夹(exp. D:\NMon\solrapp01_120830_0000.nmon或D:\NMon): set /p start=请输入开始时间(exp. 16:31:23或00:00:02 30-AUG-2012): set /p end=请输入结束时间(exp. 16:31:23或00:00:02 30-AUG-2012): java -jar AnalyseNmon.jar "%folder%" %start% %end% REM "%folder%" 此处需要引号用来兼容用户有空格的文件夹 output.csv pause goto exit :exit
AIX 系统 CPU 监控
vmstat 命令
vmstat 提供系统资源和性能问题的简要信息。
# vmstat 2 System configuration: lcpu=8 mem=8192MB kthr memory page faults cpu ----- ----------- ------------------------ ----------- r b avm fre re pi po fr sr cy in sy cs us sy id wa 0 0 1596212 186517 0 0 0 0 0 0 157 2242 757 5 0 95 0 1 0 1602824 179905 0 0 0 0 0 0 276 8731 986 23 1 76 0
CPU 列说明
- us: 用户模式下 CPU 时间百分比
- sy: 系统模式下 CPU 时间百分比
- id: 无磁盘 IO 时 CPU 空闲时间百分比
- wa: 等待磁盘 IO 的 CPU 空闲时间百分比
kthr 列说明
- r: 可运行内核线程平均数
- b: 等待队列中的内核线程数
faults 列说明
- in: 每秒设备中断数
- sy: 每秒系统调用次数
- cs: 每秒上下文切换次数
iostat 命令
快速获取系统第一印象,同时报告 CPU 统计信息。
# iostat -t 2 5
System configuration: lcpu=8
tty: tin tout avg-cpu: %user %sys %idle %iowait
0.0 16.0 1.0 0.3 98.6 0.1
0.0 70.0 6.1 0.3 93.6 0.0
sar 命令
收集系统统计数据,但会增加系统负载。
实时采样显示
# sar -u 1 10 AIX SISDB_B 3 5 00C674AF4C00 07/14/09 System configuration: lcpu=8 mode=Capped 16:24:44 %usr %sys %wio %idle physc 16:24:45 17 5 2 76 4.00 16:24:46 22 5 1 72 4.03
每个处理器信息
# sar -uP ALL 3 2
AIX SISDB_B 3 5 00C674AF4C00 07/14/09
System configuration: lcpu=8 mode=Capped
16:33:32 cpu %usr %sys %wio %idle physc
16:33:35 0 8 2 1 89 0.54
1 0 0 0 100 0.45
- 6 2 0 93 3.99
tprof 命令
统计每个进程的 CPU 使用情况。
# tprof -x sleep 10 Tue Jul 14 17:09:01 2009 System: AIX 5.3 Node: i2db Machine: 00CC886E4C00 Starting Command sleep 10 stopping trace collection. Generating sleep.prof
ps 命令
显示进程当前状态。
# ps aux |head -20 USER PID %CPU %MEM SZ RSS TTY STAT STIME TIME COMMAND root 57372 6.1 0.0 384 384 - A Jan 10 131504:45 wait root 73764 6.1 0.0 384 384 - A Jan 10 129539:44 wait
topas 命令详解
监控系统活动:memory、I/O、paging space、cpu、process。
参数说明
- -d: 指定监控磁盘数,默认2
- -i: 设置监控间隔(秒),默认2秒
- -n: 设置监控网络接口数,默认2
- -p: 指定监控进程数,默认20
- -c: 指定监控CPU数,默认2
- -P: 显示全屏进程
- -W: 显示全屏WLM类
子命令
- a: 显示所有监控部分
- c: 在累积报告和最忙CPU间切换
- d: 在最忙磁盘和系统总磁盘活动间切换
- n: 在最忙接口和系统总网络活动间切换
- p: 进程开关切换
- P: 全屏进程显示
- q: 退出程序
- r: 更新显示
各部分含义
PAGING 部分
- Faults: 每秒分页错误总数
- Steals: 每秒被虚拟内存管理器偷走的物理内存帧
- PgspIn: 每秒从分页空间读取的4k分页数
- PgspOut: 每秒写入分页空间的4k分页数
Memory 部分
- Real,MB: 实际内存大小(MB)
- %Comp: 计算分页片断占实际内存百分比
- %Nocomp: 非计算分页片断占实际内存百分比
- %Client: 缓冲远程挂载文件内存占实际内存百分比
CPU 部分
- User%: 用户程序占用CPU百分比
- Kern%: 内核程序占用CPU百分比
- Wait%: 等待IO操作占用CPU百分比
- Idel%: CPU空闲百分比
nmon 使用示例
[oracle@ppptdb nmon]$ ./nmon_x86_rhel45 --help Hint: nmon_x86_rhel45 [-h] [-s <seconds>] [-c <count>] [-f -d <disks> -t -r <name>] [-x] -h FULL help information Interactive-Mode: read startup banner and type: "h" once it is running For Data-Collect-Mode (-f) -f spreadsheet output format [note: default -s300 -c288] optional -s <seconds> between refreshing the screen [default 2] -c <number> of refreshes [default millions] -d <disks> to increase the number of disks [default 256] -t spreadsheet includes top processes -x capacity planning (15 min for 1 day = -fdt -s 900 -c 96)
sysstat / sar 工具
系统性能监控工具集。
sar 安装问题解决
首次执行 sar 命令时可能出现错误:
Cannot open /var/log/sa/sa**: No such file or directory
解决方案:
#sar -o 2 7
执行后 /var/log/sa/ 目录下将生成相应文件。