AIX下关于Oracle的几个命令(转)

AIX的帮助:IBM官方

常用命令 软件包
CPU:vmstat、iostat、sar、bos.acct
I/O:topas、svmon、filemon、fileplace、bos.perf.tools
MEMORY:vmtune、schedtune、bos.adt.samples
NETWORK:netstat、bos.net.tcp.client

vmstat报告CPU与内存信息
如下例所示:

System configuration: lcpu=4 mem=3936MB

kthr memory page faults cpu
----- ----------- ------------------------ ------------ -----------
r b avm fre re pi po fr sr cy in sy cs us sy id wa
1 1 603967 1064 0 0 0 0 0 0 5 1619 85 0 0 99 0

内核线程
r 表示内核中运行的线程数,如果其数超过系统的CPU个数,则说明等待进程越多
b 表示内核中等待的线程数,由于挂起或IO等待

内存列
pi 列 表示每秒钟从Paging Space置换到内存的页数。
po列 表示每秒钟从内存置换到Paging Space的页数。
如果这两列持续大于5,则系统的性能瓶颈很可能是内存不足,而导致交换频繁。
fr列 表示每秒钟页面置换算法释放的页数。
sr列 表示每秒钟页面置换算法检查的页数。

故障列
in 设备中断次数
sy 系统调用次数
cs 内核线程上下文交换,即时间片用完后,再轮到时的上下文计算,如果太高,则要仔细观察

内存信息
avm与free两项分别表示了物理内存的活动页数(active Memory)与可用页数(每页4096bytes),其大小可用其值/256获得MB数。
其中free数如果持续为0或很低则预示内存不足,此时可能会导致大量的页面交换,而在CPU中显示为wa很高,此值的多少也与vmtune中的-f -p设置有关。

CPU信息
在以上信息中,关于CPU是的后四列:
id高表示系统空闲,us、sy分别表示用户和系统进程CPU占用,wa表示IO等待时间
如果us与sy之和持续超过90%时,CPU出现了瓶颈。
如果wa长期很高>50,则表示IO太忙,具体看是应用IO多,还是交换分页多,如果是后者,则显示内存不足。如果是前者,则应关注应用的IO性能状况,优化应用与磁盘设备。

sar命令优势
sar可以针对SMP系统来分别查看CPU使用情况
sar -P ALL 3 2

AIX zw_db2 3 5 0009ABB4D600 03/02/09

System configuration: lcpu=4

09:39:56 cpu %usr %sys %wio %idle physc
09:39:59 0 0 0 1 99 0.53
1 0 0 0 100 0.47
2 0 0 0 99 0.52
3 0 0 0 100 0.48
- 0 0 0 99 2.00
09:40:02 0 0 0 0 100 0.53
1 0 0 0 100 0.48
2 0 0 0 99 0.52
3 0 0 0 100 0.48
- 0 0 0 100 2.00

Average 0 0 0 0 99 0.53
1 0 0 0 100 0.47
2 0 0 0 99 0.52
3 0 0 0 100 0.48
- 0 0 0 100 2.00

以上显示了一个单CPU系统的显示

sar也可以查看系统调用情况
sar -c 3 2
AIX zw_db2 3 5 0009ABB4D600 03/02/09

System configuration: lcpu=4

09:42:15 scall/s sread/s swrit/s fork/s exec/s rchar/s wchar/s
09:42:18 4328 201 25 3.33 4.00 5881311 27365
09:42:21 1936 42 328 0.00 0.00 28002 46330

Average 3128 121 177 1.66 1.99 2944934 36879

svmon使用
svmon可以查看内存的详细使用情况,含分页
svmon -G -i 5 2
size inuse free pin virtual
memory 1007616 1000537 7079 114116 602181
pg space 1048576 15992

work pers clnt
pin 113889 0 227
in use 588352 5 412180
size inuse free pin virtual
memory 1007616 1000548 7068 114116 602190
pg space 1048576 15992

work pers clnt
pin 113889 0 227
in use 588361 5 412182

其中memory行显示了内存总量,使用量,钉入量和虚拟总量
pg space行显示了分面空间的使用量
pin行显示了正在用的钉入量,永久钉入量和客户量
in use显示了总内存的工作页面量,永久页面量,客户端页面量
如想将oracle进行lock_sga设置,可以查看PIN值来确认是否生效
要使pin生效必需vmtune -S 1

svmon -U oracle可以查看oracle用户的用量
svmon -U oracle
(这个的结果相当的长,就不列了)
在结果中SYSTEM是所有系统共用段,EXCLUSIVE是此用户专用段,SHARED段是共享段

svmon -C oracletest
可以统计oracletest命令的所有内存使用情况
在其中也分为SYSTEM,EXCLUSIVE,SHARED三段,在其中将会发现SHARED段很大,那是因为其与其它oracle进程共用的结果
在整个输出中,其类型分为
work 表示进程和内存共享段的区域
perm 表示文件,目录,日志,大文件等使用段,其代表了文件操作所用内存的值
clie 表示NFS,CDROM等文件系统使用段

svmon -P
可以查看所有进程的内存使用情况,加上PID可以查看单个进程的内存使用情况
能过此种方式,可以标识所用命令
通过上述命令获得的命令名,再通过svmon -C来查看其专用内存段,进行对比,可以区分出不同命令所用内存多少,对oracle不同进程之间的分析有用

磁盘IO
iostat 可以查看时间段内的CPU状况和磁盘状况

System configuration: lcpu=4 drives=13 paths=2 vdisks=0

tty: tin tout avg-cpu: % user % sys % idle % iowait
0.0 0.0 0.1 0.2 99.7 0.0

Disks: % tm_act Kbps tps Kb_read Kb_wrtn
hdisk1 0.2 2.4 0.4 12248671 18702988
hdisk0 0.0 0.0 0.0 256 0
dac0 0.0 0.0 0.0 256 0
dac0-utm 0.0 0.0 0.0 0 0
dac2 0.0 0.0 0.0 0 0
dac2-utm 0.0 0.0 0.0 0 0
dac1 0.0 0.2 0.0 1507241 886340
dac1-utm 0.0 0.0 0.0 0 0
hdisk2 0.0 0.2 0.0 1506985 886340
hdisk3 0.0 0.0 0.0 256 0
hdisk4 0.0 0.0 0.0 256 0
hdisk8 0.0 0.0 0.0 0 0
cd0 0.0 0.0 0.0 0 0

其中% tm_act是指活动时间,kbps是在统计时间内所有Kb_read与Kb_wrtn之和除以时间的值,即每秒传输的字节数
如果% tm_act常过70%却只有很低的Kbps,系统可能是有比较多的LV碎片或文件碎片,当都高时则系统正常。
tps表示每秒的IO数,不同的磁盘系统其可承受的IO数不同。


sar -d 10 2也可以查看IO情况

AIX zw_db2 3 5 0009ABB4D600 03/02/09

System configuration: lcpu=4 drives=13

09:47:00 device %busy avque r+w/s Kbs/s avwait avserv

09:47:10 hdisk1 1 0.0 1 5 0.0 5.6
hdisk0 0 0.0 0 0 0.0 0.0
dac0 0 0.0 0 0 0.0 0.0
dac0-utm 0 0.0 0 0 0.0 0.0
dac2 0 0.0 0 0 0.0 0.0
dac2-utm 0 0.0 0 0 0.0 0.0
dac1 0 0.0 3 24 0.0 1.1
dac1-utm 0 0.0 0 0 0.0 0.0
hdisk2 0 0.0 3 24 0.0 1.1
hdisk3 0 0.0 0 0 0.0 0.0
hdisk4 0 0.0 0 0 0.0 0.0
hdisk8 0 0.0 0 0 0.0 0.0
cd0 0 0.0 0 0 0.0 0.0


09:47:20 hdisk1 0 0.0 2 8 0.0 5.3
hdisk0 0 0.0 0 0 0.0 0.0
dac0 0 0.0 0 0 0.0 0.0
dac0-utm 0 0.0 0 0 0.0 0.0
dac2 0 0.0 0 0 0.0 0.0
dac2-utm 0 0.0 0 0 0.0 0.0
dac1 0 0.0 18 182 0.0 3.1
dac1-utm 0 0.0 0 0 0.0 0.0
hdisk2 5 0.0 18 182 0.0 3.1
hdisk3 0 0.0 0 0 0.0 0.0
hdisk4 0 0.0 0 0 0.0 0.0
hdisk8 0 0.0 0 0 0.0 0.0
cd0 0 0.0 0 0 0.0 0.0


Average hdisk1 0 0.0 1 6 0.0 5.5
hdisk0 0 0.0 0 0 0.0 0.0
dac0 0 0.0 0 0 0.0 0.0
dac0-utm 0 0.0 0 0 0.0 0.0
dac2 0 0.0 0 0 0.0 0.0
dac2-utm 0 0.0 0 0 0.0 0.0
dac1 0 0.0 10 103 0.0 2.1
dac1-utm 0 0.0 0 0 0.0 0.0
hdisk2 2 0.0 10 103 0.0 2.1
hdisk3 0 0.0 0 0 0.0 0.0
hdisk4 0 0.0 0 0 0.0 0.0
hdisk8 0 0.0 0 0 0.0 0.0
cd0 0 0.0 0 0 0.0 0.0

其中的%busy对应的% tm_act
avque表示等待IO对列数,其值很高则预示着磁盘有较大瓶颈
r+w/s对应tps,blks/s是按0.5Kbytes/s计算的传输速度
sar -d 最大好处是可以对较长时间的值会有一个总体平均值

vmtune使用
/usr/samples/kernel/vmtune 会得出当前设置数据
vmtune: current values:
-p -P -r -R -f -F -N -W
minperm maxperm minpgahead maxpgahead minfree maxfree pd_npages maxrandwrt
400921 1603684 2 8 120 128 65536 0

-M -w -k -c -b -B -u -l -d
maxpin npswarn npskill numclust numfsbufs hd_pbuf_cnt lvm_bufcnt lrubucket defps
1677709 47104 11776 1 186 224 9 131072 1

-s -n -S -L -g -h
sync_release_ilock nokilluid v_pinshm lgpg_regions lgpg_size strict_maxperm
0 0 0 0 0 0

-t -j -J -z
maxclient j2_nPagesPer j2_maxRandomWrite j2_nRandomCluster
1603684 32 0 0

-Z -q -Q -y
j2_nBufferPer j2_minPageReadAhead j2_maxPageReadAhead memory_affinity
512 2 8 0

-V -i
num_spec_dataseg spec_dataseg_int
0 512

PTA balance threshold percentage = 50.0%

number of valid memory pages = 2097136 maxperm=80.0% of real memory
maximum pinable=80.0% of real memory minperm=20.0% of real memory
number of file memory pages = 847042 numperm=42.2% of real memory
number of compressed memory pages = 0 compressed=0.0% of real memory
number of client memory pages = 0 numclient=0.0% of real memory
# of remote pgs sched-pageout = 0 maxclient=80.0% of real memory

其中的minfree限制了当系统的分页数少于此值时就要交换出此页数,并在达到maxfree时停止
其中maxfree必须>minfree+maxpgahead
./vmtune -F maxfree_pages -f minfree_pages 用于进行以上设置
(这个在我的小机上无法使用,这里纯转载)

minperm,maxperm对文件分页的控制
MINPERM与MAXPERM的意义
当内存中的文件缓存页在MINPERM以下时,内存页交换算法同时交换文件缓存页和程序页(computational pages)
当内存中的文件缓存页在MAXPERM以上时,内存页交换算法只交换文件缓存页。
当内存中的文件缓存页在MINPERM和MAXPERM之间时,内存页交换算法通常只交换文件缓存页,但如果文件缓存页的交换率大于程序页时,程序页也同样被交换。
MINPERM和MAXPERM参数的缺省值为20%与80%
即vmtune -p 20 -P 80
可以用以下命令将MINPERM设为5%的内存页,而MAXPERM设为20%的内存页。
# vmtune -p 5 -P 20
在vmtune的输出中,有一个numperm的值,其对我们调整很有参考意义

在Oracle数据库应用的环境下,可以将MINPERM和MAXPERM分别设为5%和20%甚至更小,从而使内存更多地被用于Oracle的SGA而不是系统的文件缓存。
但此时也要考虑系统的dbrw量的多少,用lock_sga方法可以更好的控制sga的是否交换(在lock_sga前,应该先vmtune -S 1 启用pinshm以支持应用的内存pin)

评论

此博客中的热门博文

远程记录OpenWRT日志

用OpenWRT打造自动翻墙路由器(详解篇)

转一下关于Fuck的用法