分类:
2010-09-16 16:45:41
$topas -P
Topas Monitor for host: jhhost Interval: 2 Thu Aug 26 16:23:57 2010
DATA TEXT PAGE PGFAULTS
USER PID PPID PRI NI RES RES SPACE TIME CPU% I/O OTH COMMAND
oracle 324076 1 102 20 1293 4827 1293 3:07 21.7 0 0 oracle
patrol 307496 1 80 30 5072 619 11840 2465:39 0.3 0 230 PatrolAgent
patrol 241988 1 60 20 685 6 835 438:53 0.1 0 0 snmpmagt
oracle 463258 508290 60 20 441 49 441 0:00 0.0 0 0 topas
root 172464 156076 60 20 67 0 345 510:40 0.0 0 0 dtgreet
oracle 467318 1 60 20 1014 4827 1014 0:00 0.0 0 0 oracle
oracle 327748 1 60 20 256 4827 1084 16:25 0.0 0 0 oracle
patrol 299382 307496 60 20 187 954 539 39:58 0.0 0 0 sqlplus
oracle 311356 1 60 20 134 4827 1396 20:18 0.0 0 0 oracle
oracle 303164 1 60 20 131 4827 2167 25:44 0.0 0 0 oracle
root 278788 205276 60 20 40 61 306 47:43 0.0 0 0 i4llmd
root 28972 0 37 41 24 0 29 75:29 0.0 0 0 gil
root 61592 160160 60 20 64 26 651 20:13 0.0 0 0 X
root 4384 0 16 41 11 0 12 37:30 0.0 0 0 swapper
oracle 307258 1 60 20 469 4827 1873 17:29 0.0 0 0 oracle
root 221672 1 60 20 257 31 1600 9:26 0.0 0 0 ltid
root 282672 1 60 20 296 19 6578 7:27 0.0 0 0 vmd
root 225300 1 60 20 177 308 716 12:42 0.0 0 0 naviagen
root 204816 1 60 20 45 0 47 11:55 0.0 0 0 rpc.lock
root 192708 0 60 20 11 0 12 0:22 0.0 0 0 n4bg
$ topas
Topas Monitor for host: jhhost EVENTS/QUEUES FILE/TTY
Thu Aug 26 16:24:56 2010 Interval: 2 Cswitch 346 Readch 88771
Syscall 2742 Writech 23220
Kernel 0.5 |# | Reads 141 Rawin 0
User 42.3 |############# | Writes 124 Ttyout 259
Wait 0.1 |# | Forks 0 Igets 0
Idle 57.1 |################# | Execs 0 Namei 78
Runqueue 0.0 Dirblk 0
Network KBPS I-Pack O-Pack KB-In KB-Out Waitqueue 0.0
en0 69.2 112.5 118.5 45.7 23.5
lo0 2.0 3.5 3.5 1.0 1.0 PAGING MEMORY
en1 0.7 8.5 0.0 0.7 0.0 Faults 54 Real,MB 3728
Steals 0 % Comp 87.7
Disk Busy% KBPS TPS KB-Read KB-Writ PgspIn 0 % Noncomp 8.5
hdisk46 0.0 39.2 0.5 0.0 39.2 PgspOut 0 % Client 8.5
skpower7 0.0 39.2 0.5 0.0 39.2 PageIn 0
hdisk1 1.0 8.0 2.0 0.0 8.0 PageOut 0 PAGING SPACE
Sios 0 Size,MB 16384
Name PID CPU% PgSp Owner % Used 15.1
oracle 410020 24.9 5.0 oracle NFS (calls/sec) % Free 84.8
oracle 324076 23.4 5.1 oracle ServerV2 0
PatrolAgent 307496 0.1 46.2 patrol ClientV2 0 Press:
topas 389584 0.1 1.8 oracle ServerV3 0 "h" for help
dtgreet 172464 0.1 1.3 root ClientV3 0 "q" to quit
上面是在 AIX 5.3 系统下的两份 topas 输出,第一份是仅输出进程(带 -P 选项),第二份是攘括 CPU、内存、换页空间、I/O 和进程多项资源指标于一个界面的 topas 标准输出。PgSp 是一项描述进程的指标,是 Page Space 的缩写,本义是代表换页空间的使用量,它的单位是 MB, PgSp 与第一份 topas 进程长列表输出中的 Page Space 字段指的同一个意思,不过后者的单位是页(1页等于4KB)。
在早期的 AIX 版本中,系统每产生一个新进程,同时就会在 swap 上分配相应的换页空间(page space),到了 AIX 5 版本,换页空间有多种分配策略,一般不会再象以前那样提前分配页空间。所以 topas 输出的 PgSp 数字不代表一定在换页空间上已经分配了那么多空间,你会看到有的系统换页空间根本就没有使用(lsps -s),那 PgSp 一样有它该有的值。你把它看作 virtual space size 就行了。
你看 PatrolAgent 这个进程(pid 号为 307496),在 topas 中显示的 PgSp 为 46.2MB(等于 11840 页),使用 ps 命令你也能看到这个值,ps 用法如下:
$ ps avx | head -1; ps avx | grep 307496
PID TTY STAT TIME PGIN SIZE RSS LIM TSIZ TRS %CPU %MEM COMMAND
307496 - A 2478:25 309661 47360 21900 32768 3632 2332 0.1 1.0 PatrolAgent
SIZE 字段(以 KB 为单位)大小是 47360KB(46.2MB),也就是 11840 页,在 AIX 5 版本中 SIZE 的含义是进程数据段虚空间大小,它不包括执行映像部分。虚空间不要把它想象成就是换页空间,当内存很充足的时候,数据段虚空间可以全部放到内存中,换页空间(Page Space)可以根本不必使用,所以在 topas 输出中描述进程的 PgSp 字段,其值是有价值的,但是它的名字给人造成误导,你一看到 PgSp 有一堆数值,你就以为换页空间用了这么多,这你就错了。早期的 AIX 由于采用预先分配换页空间的策略,这个 PgSp 值是多少,那么换页空间就用多少,现在不一样了。
想要了解 AIX 中某个进程究竟使用了多少换页空间,比较正规的方法是用 svmon 工具,不过你也可以用 ps 命令作个大致换算,看前面 PatrolAgent 进程的 ps 输出,SIZE-(RSS-TRS)=47360-(21900-2332)=27792KB, 这个 PatrolAgent 进程大概使用了26MB 的换页空间。
你可以用下面的 shell 脚本来计算你的系统中全部进程占用了多少换页空间:
$ ps avx | sed -e "1d" | awk 'BEGIN { total = 0 } { total += ( $6 - ( $7 - $10 ))} END { print "total = ",total }'
注意 AIX 的 ps 输出中 SIZE 字段以及 RSS 字段都不包括共享内存(shared memory)部分,这点与 Linux 不同,使用 ps 要注意到这种差异。一般数据库服务器的共享内存段都常驻内存,不会用到换页空间,如果上面 shell 脚本算出的换页空间占用量明显小于 lsps -s 命令显示的换页空间使用量,有可能大的共享内存段被交换出去了,这是非常糟糕的情况,要赶紧打报告,扩内存。