资源描述
IBM小型机系统维护命令使用总结
uname -a //操作系统版本
instfix -i|grep ML //操作系统补丁
prtconf //获取硬件信息
mklv -y lvinformix -c 2 rootvg 64 //创建逻辑卷lvinformix,大小为64(LP)×16M=1G,磁盘镜像后需用-c参数
crfs -v jfs -d lvinformix -m /opt/informix //在lvinformix上创建文件系统/opt/informix
mount /dev/lvinformix /opt/informix //将设备mount到文件系统上
chfs -A yes /dev/lvinformix //修改所建文件系统的自动安装属性(Auto-Mount)
//以上四步为创建文件系统四步曲
mkvg -t 16 -s 4 -y vgdata hdisk2 //在hdisk2上创建卷组vgdata, -t 16指定系数factor=16,-s 4指定物理分区大小PP SIZE=4MB
//factor×PP SIZE×1016≥hdisk2的大小。如果factor×PP SIZE×1016的值< hdisk2的大小,
//请适当调整factor和PP SIZE的值
varyonvg vgdata //激活卷组vgdata
varyoffvg vgdata //去激活卷组vgdata
exportvg testvg //如果在smcp2上已经有testvg的信息,则先删除原有信息(exportvg),
再引入新信息(importvg)
importvg -y vgsmp hdisk2 //将vgsmp信息引入hdisk2
lspv //查看hdisk和vg的对应关系
lsdev -Cc disk //查看磁盘名和磁盘类型(内置盘还是SSA外置盘)
lsdev -Cc processor //查询cpu的个数
lscfg -v -l ent0 //查看网卡ent0的MAC地址
lsvg -o //查询所有激活的卷组
chfs -a options=rw,mind /tellinshare/sms //设置文件系统/tellinshare/sms的mind属性
//否则当文件系统中有足够多的大文件(指32K以上的文件)时会出问题
mkgroup id=101 informix //创建组informix,组编号101
mkuser id=101 pgrp=informix home=/opt/informix shell=/usr/bin/csh informix
//创建用户informix,命令参数说明:
//id:指定用户的id号,请根据规划设置;
//pgrp:指定该用户的归属组,请根据规划设置;
//home:指定该用户的home目录,请根据规划设置;
//shell:指定该用户的登录shell,请根据规划设置;
//informix:指定用户名称,请根据规划设置。
sar -P ALL -u 2 5 //看每个CPU地占用率
ps aux //观察参数%mem:内存使用百分比 RSS:实际使用内存
svmon -P 进程号 //查看某个进程的内存信息
svmon -G //查看内存大小
检查内存状态
lsdev -Cc memory
lsattr -El mem0
errpt -a |grep error //检查硬件错误信息
lsps -a //显示交换区的分部信息
lsps -s //显示交换区的使用信息
slibclean //清除处理程序遗留的旧分页信息
smit mkps //建立交换区空间信息
swapon -a //启动所有的分页空间
查看HACMP,外部硬盘信息:
lscfg -v
lsdev -Cc adapter
lsvg //显示存在的vg
lsvg rootvg //每个vg显示详细信息
VOLUME GROUP: rootvg VG IDENTIFIER: 00009856b3996546
VG STATE: active PP SIZE: 8 megabyte(s)
VG PERMISSION: read/write TOTAL PPs: 537 (4296 megabytes)
MAX LVs: 256 FREE PPs: 3 (24 megabytes)
LVs: 9 USED PPs: 534 (4272 megabytes)
OPEN LVs: 8 QUORUM: 2
TOTAL PVs: 1 VG DESCRIPTORS: 2
STALE PVs: 0 STALE PPs: 0
ACTIVE PVs: 1 AUTO ON: yes
MAX PPs per PV: 1016 MAX PVs: 32
lsvg -l rootvg //查看vg中的逻辑卷的信息
LV NAME TYPE LPs PPs PVs LV STATE MOUNT POINT
hd5 boot 1 1 1 closed/syncd N/A
hd6 paging 64 64 1 open/syncd N/A
hd8 jfslog 1 1 1 open/syncd N/A
hd4 jfs 4 4 1 open/syncd /
hd2 jfs 148 148 1 open/syncd /usr
hd9var jfs 4 4 1 open/syncd /var
hd3 jfs 39 39 1 open/syncd /tmp
lv00 jfs 184 184 1 open/syncd /home
lv01 jfs 89 89 1 open/syncd /aplchr
lslv hd5 //lslv查看各个lv的详细信息
LOGICAL VOLUME: hd5 VOLUME GROUP: rootvg
LV IDENTIFIER: 00009856b3996546.1 PERMISSION: read/write
VG STATE: active/complete LV STATE: closed/syncd
TYPE: boot WRITE VERIFY: off
MAX LPs: 512 PP SIZE: 8 megabyte(s)
COPIES: 1 SCHED POLICY: parallel
LPs: 1 PPs: 1
STALE PPs: 0 BB POLICY: relocatable
INTER-POLICY: minimum RELOCATABLE: no
INTRA-POLICY: edge UPPER BOUND: 32
MOUNT POINT: N/A LABEL: None
MIRROR WRITE CONSISTENCY: on
EACH LP COPY ON A SEPARATE PV ?: yes
lsdev -C -c pdisk -s ssar -H //查看系统中所有的物理磁盘
lsdev -C -t hdisk -c disk -s ssar -H //显示系统中的逻辑磁盘
extendvg -f 'datavg' 'hdisk3' //将名称为hdisk3的pv加入datavg中
reducevg -df 'datavg' 'hdisk3' //-d表示在删除pv的时候先删除其中的lv及相关数据。-f表示强行删除,不需确认。
mklv -t raw -e x -y lvtest vgtest 256 //在vgtest这个磁盘组中创建一个逻辑卷,其大小为256个LP
rmlv -f lvtest //删除逻辑卷
mklv -t jfs -e x -y lvtest vgtest 512 //创建逻辑卷
crfs -v jfs -d lvtest -m /test //生成文件系统
此命令将生产的文件系统mount到/test目录下
要删除此文件系统,使用如下命令:
rmlv -f lvtest
之后删除mount的目录即可:
rmdir /test
topas
//topas执行结果的左上角,我们看到了关于Kernel、User、Wait和Idle的显示,这是topas关于CPU活动情况的使用报告。Kernel表示在kernel模式下运行的进程所占用的CPU百分比,User表示在user模式下运行的进程所占用的CPU百分比,Wait表示等待I/O的CPU百分比,Idle表示空闲状态的CPU百分比。
vmstat 2 //监控CPU性能
kthr memory page faults cpu
----- ----------- ------------------------ ------------ -----------
r b avm fre re pi po fr sr cy in sy cs us sy id wa
1 0 22478 1677 0 0 0 0 0 0 188 1380 157 57 32 0 10
1 0 22506 1609 0 0 0 0 0 0 214 1476 186 48 37 0 16
0 0 22498 1582 0 0 0 0 0 0 248 1470 226 55 36 0 9
2 0 22534 1465 0 0 0 0 0 0 238 903 239 77 23 0 0
2 0 22534 1445 0 0 0 0 0 0 209 1142 205 72 28 0 0
2 0 22534 1426 0 0 0 0 0 0 189 1220 212 74 26 0 0
3 0 22534 1410 0 0 0 0 0 0 255 1704 268 70 30 0 0
2 1 22557 1365 0 0 0 0 0 0 383 977 216 72 28 0 0
2 0 22541 1356 0 0 0 0 0 0 237 1418 209 63 33 0 4
1 0 22524 1350 0 0 0 0 0 0 241 1348 179 52 32 0 16
1 0 22546 1293 0 0 0 0 0 0 217 1473 180 51 35 0 14
//如果要检查 CPU 是否存在性能瓶颈, 那么vmstat 报告中的两个 kthr列和四个 cpu 列非常有判断价值,同时 faults 列也有一定的参考意义。
kthr 列的数据是在采样时间段内对队列中的内核线程数进行计算得到的平均值。
o r 表示可运行的内核线程平均数目,包括正在运行的线程和等待 CPU 的线程。如果这个数字大于 CPU 的数目,那么至少有一个线程要等待 CPU。等待 CPU 的线程越多,对性能的影响就越大。
o b 表示等待队列中的内核线程平均数,包括正在等待文件系统 I/O 的线程,或由于内存装入控制而被挂起的线程。如果block的值长时间连续非零,那就需要我们对CPU的运行状况做进一步的分析。
cpu 列表示在该时间间隔内使用 CPU 时间的百分比。
o us 列显示了用户模式所消耗的 CPU 时间。当在用户模式下执行时,进程在它自己的应用程序代码中执行,不需要内核资源来进行计算、管理内存或设置变量。
o sy 列详细显示了 CPU 在系统模式下执行一个线程所花时间的百分比,包括内核进程和其它需要访问内核资源的进程所消耗的 CPU 资源。如果一个进程需要内核资源,它必须执行一个系统调用,并因此被切换到系统模式从而可以使用该资源。例如,对一个文件的读或写操作需要内核资源来打开文件、寻找指定的位置和读写数据。
o id 列显示了已确定本地磁盘 I/O 时 CPU 空闲或等待时间的百分比。
o wa 列详细显示了有未决本地磁盘 I/O 时 CPU 空闲的时间百分比。wa 的值如果超过 25%,就表明磁盘子系统可能没有被正确平衡,或者可能是磁盘工作负荷很重。
faults 列是关于进程控制的信息。
o in 表示在该时间间隔中观测到的每秒设备中断数。
o sy 表示在该时间间隔中观测到的每秒系统调用次数。通过明确的系统调用,用户进程可以使用资源。通常来讲,在一个单处理器系统上当 sy 列增大到超过每秒钟 10000 个调用, 应进行进一步的深究(在一个对称多处理系统上,这个数字为每个处理器每秒钟 10000 个调用)。
o cs 在该时间间隔中观测到的每秒钟上下文切换次数。
观察上面执行vmstat命令的输出结果,我们看到,最开始的三个报告表明系统稳定在用户模式 48-57%、系统模式 32-37% 和 I/O 等待 9-16%。从第四个报告开始,当非常耗费CPU资源的一个恶意破坏循环程序开始运行后,所有的 CPU 周期被占用。因为循环程序不进行 I/O,所以它可以占有前面因为 I/O 等待而未用的所有周期。更糟糕的是这意味着,当一个有用进程放弃 CPU 的使用权时,这个进程总是要占用 CPU。因为死循环程序的优先级与所有其它前台进程一样,所以当另一个进程变得可调度时它也没必要让出 CPU 的使用权。该程序运行大约 10 秒钟(5次×2秒/次=10秒),然后由 vmstat 命令报告的活动恢复到较正常的模式。
总的来说,如果 us + sy 时间低于 90%,则不认为该单用户系统 CPU 受限制。但是,如果在一个多用户系统中 us + sy时间超过 80%, 其中的进程将要花时间在运行队列中等待,响应时间和吞吐量会受到损害;对于这样的系统,我们应提高警惕。对于CPU性能可能存在瓶颈的系统,我们可以用tprof命令找出占用CPU时间最多的进程,用 nice 或 renice 命令调整用户进程的优先级,用 schedtune 命令修改调度程序时间片的长度。根据业务与软件产品的维护经验,因为CPU性能存在瓶颈导致业务不能稳定运行的故障非常之少,同时也因为CPU是系统的核心部件,对CPU进行任何调整都可能导致非常大的影响,CPU的性能调优需要非常全面深厚的理论基础,所以在此我们不对CPU的调优操作做详细介绍
iostat 5 //监控磁盘的输入/输出性能
tty: tin tout avg-cpu: % user % sys % idle % iowait
0.0 109.8 3.5 1.3 26.8 68.4
Disks: % tm_act Kbps tps Kb_read Kb_wrtn
hdisk0 1.8 12.0 2.8 0 60
hdisk1 1.8 12.0 2.8 0 60
hdisk2 70.8 332.6 40.0 64 1599
hdisk3 100.0 1104.0 146.4 936 4584
cd0 0.0 0.0 0.0 0 0
//%iowait 表示等待本地 I/O 时CPU 空闲时间的百分比。如果iowait时间的百分比很高,表明该磁盘输入输出(I/O) 可能是导致系统运行速度缓慢的主要原因。
%idle 表示未等待本地 I/O 时CPU 空闲时间的百分比。
%tm_act 表示硬盘繁忙程度的百分比。如果tm_act 的值很高,表明硬盘存在I/O 瓶颈。当%tm_act (硬盘繁忙时间) 很高时,可能会感觉到系统运行速度在减慢。有些系统上某个硬盘的%tm_act值超过 35% 时,系统性能就会受到明显的影响。
vmstat 2 10 //监测内存使用情况
kthr memory page faults cpu
----- ----------- ------------------------ ------------ -----------
r b avm fre re pi po fr sr cy in sy cs us sy id wa
1 3 113726 124 0 14 6 151 600 0 521 5533 816 23 13 7 57
0 3 113643 346 0 2 14 208 690 0 585 2201 866 16 9 2 73
0 3 113659 135 0 2 2 108 323 0 516 1563 797 25 7 2 66
0 2 113661 122 0 3 2 120 375 0 527 1622 871 13 7 2 79
0 3 113662 128 0 10 3 134 432 0 644 1434 948 22 7 4 67
1 5 113858 238 0 35 1 146 422 0 599 5103 903 40 16 0 44
0 3 113969 127 0 5 10 153 529 0 565 2006 823 19 8 3 70
0 3 113983 125 0 33 5 153 424 0 559 2165 921 25 8 4 63
0 3 113682 121 0 20 9 154 470 0 608 1569 1007 15 8 0 77
0 4 113701 124 0 3 29 228 635 0 674 1730 1086 18 9 0 73
//o avm
avm (活动的虚拟内存) 一栏显示目前 vmstat 样本收集的动态虚拟内存的页数,它是已经被占用的内存页面。
o fre
fre 栏显示出空闲内存页面的平均数量。系统为内存页面建立了一个缓冲区,称为空闲列表。当 VMM(虚拟内存管理) 需要空间时可以立即访问此空闲列表。VMM 在空闲列表中保存最少页面的数量决定于minfree 参数,该参数执行 vmtune 命令加f参数可以得到。
o re
re 是系统回收的内存页面数。在AIX 5L当中不再支持回收,因为它只能提供有限的系统性能的信息却无法弥补跟踪回收算法对系统的负面影响。
o pi
pi 一栏显示了分页空间调入数量的详细信息。分页空间是驻留在磁盘上的虚拟内存的一部分。当内存过量使用时,它用作超出部分的内存。
o po
po 一栏显示了页面调出数量的详细情况。
o fr
在一定时间间隔内为填充内存空闲表或分配给某进程所需要释放的内存页面。
o sr
为得到fr 数量的空闲页面所需要检查的页面数。当 fr 和 sr 的比例 (fr:sr) 很高时,内存将会过量使用。fr:sr 为 1:4 的比例意味着每释放一页,有四页被检查了。当 po*SYS > fr ( SYS 为一系统参数,可用命令 /usr/samples/kernel/schedtune 查看)时,系统自身认为已到崩溃边缘。该值在有128MB 或更多内存的系统上默认值为0, 表示禁止内存加载控制,否则默认值为6。系统崩溃表明此时系统使用大量时间用于内存换入/换出,而没有足够时间处理应用或正常工作。这时一些进程将被临时挂起或被kill掉,系统运行明显减慢。
o cy
时钟算法中当内存页面写满时每秒刷新周期的数量。
/usr/samples/kernel/vmtune //内存优化的工具
执行结果中,maxperm=79.9% of real memory表示文件系统占用内存的比例上限为80%,minperm=20.0% of real memory表示文件系统占用内存的比例下限为20%,strict_maxperm = 0表示使用非严格上限模式。80%的文件系统内存占用上限易导致Paging space占用过高。对于一般对文件系统使用要求不高的应用,比如智能网系统,IIN平台最新推荐值是100-200M,可以根据实际物理内存,非严格上限模式。
命令如下:
# cd /usr/samples/kernel
# ./vmtune -P 20 -p 10
# ./vmtune -h
vmtune中还有两个比较关键的参数:npswarn和npskill。当pagingspace的空闲页面数低于npswarn值时,操作系统开始给进程发送SIGDANGER信息量;当pagingspace的空闲页面数低于npskill值时,AIX操作系统开始随机地杀进程。
smit clstart //启动双机软件
smit clstop //关闭双机软件
clstat -a //双机状态查询
clstat - HACMP Cluster Status Monitor
---------------------------------------------
Cluster: mscp_cluster_yunnan (80) Fri Aug 17 14:24:23 BEIJING 2001
State: UP Nodes: 2
Node: mscp1 State: UP
Interface: mscp1_boot (0) Address: 139.124.8.21
State: UP
Interface: mscp1_tty (1) Address: 0.0.0.0
State: UP
Node: mscp2 State: UP
Interface: mscp2_boot (0) Address: 139.124.8.22
State: UP
Interface: mscp2_stty (1) Address: 0.0.0.0
State: UP
lssrc -s appspy; //查看监控进程appspy的状态
Subsystem Group PID Status
appspy (scp监控) 20722 active (激活)
smpappspy (smp监控) inoperative(未激活)
lssrc -g cluster; //查看cluster系统的状态
Subsystem Group PID Status
clstrmgr Cluster 21504 active
clsmuxpd Cluster 22450 active
clinfo Cluster 22708 active
cfgmgr; //配置设备,可以同步双机的hdisk信息
mkssys -s smpappspy -p /usr/sbin/cluster/utilities/tellin/smp/smppkg/smpappspy -u 0 -S -n 15 -f 15
//建立smpappspy子系统
netstat -p tcp //察看机器的数据流量
ipcs -ma //查看共享内存
ipcrm //清除共享内存
附录:
关于IBM内存监测方法
svmon -G , 查看系统内核消耗的内存信息(pin部分是否增长),大约10分钟收集一次,需要加入date信息
svmon -P, 查看各个进程的内存消耗,这部分信息量大,大约4小时收集一次,需要加入date信息。
topas, 这部分由于没有办法记录到日志文件中,可以手工定时执行,也可以考虑拿一个第三方的top来收集,
tprof -kes -x sleep 5, 类似top的进程信息,由于信息量大,建议4小时收集一次,或者截取部分有用信息,
而增加收集的频度,如至采集前50个进程信息,没分钟收集一次
vmstat -t -I 2 5,收集内存CPU和内存综合信息,包括fi/fo, pi/po,建议每分钟收集一次。
/usr/samples/kernel/vmtune,收集文件缓冲占用内存程度,建议4小时收集一次
sar -A -o sar.out 2 5, 在通过sar -f sar.out后面跟相关参数查看对应的信息,建议每分钟收集一次
当操作系统内核内存调试开关使用bosdebug -M打开的局点,还可以收集如下信息,
i=`date +"%m%e%H%M%S"`
echo heap | kdb > heap.$i
echo "xm -lu" | kdb > xm.$i
写成shell如下:
#!/bin/ksh
integer count=0
sar -A -o sar.out 60 10000000 &
while :
do
if (( $count % 600 == 0 ))
then
date >> svmon.total
svmon -G >> svmon.total
fi
if (( $count % 14400 == 0 ))
then
date >> svmon.detail
svmon -P >> svmon.detail
date >> vmtune.info
/usr/samples/kernel/vmtune >> vmtune.info
fi
if (( $count % 60 == 0 ))
then
date >> tprof.info
tprof -kes -x sleep 5
head -50 __prof.all >> tprof.info
vmstat -t -I 2 5 >> vmstat.info
fi
((count+=1))
sleep 1
done
展开阅读全文