一、topas
1、子命令:
a ---->返回最初的主画面
c ---->CPU区域状态切换(cpu)
d ---->磁盘区域状态切换(disk)
n ---->网络区域状态切换(net)
p ---->进程区域状态切换(processor)
P ---->全屏显示进程状态(大写P)
q ---->退出(quit)
2、监视画面解析
a)CPU区域各项参数
Kernel:CPU用于执行内核模式的程序的占用比
User:CPU用于执行用户模式的程序的占用比
Wait:CPU等待I/O的占用比
Idle:CPU处于空闲状态的百分比
b)事件/队列区域各项参数(都显示的是一个监视期内的值,刷新后显示的是另一个监视期内的值)
Cswitch:每秒钟上下文切换数量
Systcall:每秒钟执行系统调用数量
Reads:每秒钟执行read调用数量
Writes:每秒钟执行write调用数量
Forks:每秒钟执行fork调用数量
Execs:每秒钟执行exec调用数量
Runqueue:准备好运行的线程平均数
Waitqueue:等待页面调度完成的线程平均数
c)文件/终端区域各项参数(都显示的是一个监视期内的值,刷新后显示的是另一个监视期内的值)
Readch:通过read调用每秒所读字节数
Writech:通过write调用每秒所写字节数
Rawin:每秒通过tty所读取原始字节数
Ttyout:每秒向tty写出的字节数
Igets:每秒调用i节点查找函数的数次
Namei:每秒调用路径查找函数的次数
Dirblk:每秒由目录查找函数所扫描的目录块数
d)页面调度区域各项参数(都显示的是一个监视期内的值,刷新后显示的是另一个监视期内的值)
Faults:没面发生也错误的总数
Steals:每秒被虚拟内存管理器丢失的物理内存帧数
PgspIn:每秒从页面空间读取的页数,单位为4KB
PgspOut:每秒写入到页面空间的页数,单位为4KB
PageIn:每秒读入页数,包括从文件系统读入的页数
PageOut:每秒写出的页数,包括写出到文件系统的页数
Sios:每秒由虚拟内存管理器发出的I/O请求
e)内存区域各项参数
Real,MB:实际内存大小
Comp:实际内存分配给计算页帧的百分比
Noncomp:实际内存分配给非计算页帧的百分比
Client:实际内存分配给远程安装文件的缓存(Cache)的百分比
f)页面空间区域各项参数
Size,MB:页面空间大小
Used:系统中所有页面空间使用的百分比
Free:系统中所有页面空间空闲的百分比
g)网络接口区域各项参数(都显示的是一个监视期内的值,刷新后显示的是另一个监视期内的值)
Interf:网络接口名
KBPS:每秒吞吐量
I-Pack:每秒收到数据包的个数
O-Pack:每秒发送数据包的个数
KB-In:每秒收到千字节个数
KB-Out:每秒发送千字节个数
h)物理磁盘区域各项参数
Disk:物理磁盘名
Busy%:物理磁盘执行读写操作所占的百分比
KBPS:每秒读和写千字节数据的合计
TPS:每秒钟发给物理磁盘的传输个数,一个传输就是一个磁盘I/O,多个逻辑请求组成一个磁盘I/O
KB-Read:每秒钟从物理磁盘读取千字节数据的个数
KB-Write:每秒钟写入物理磁盘千字节个数
i)进程区域各项参数
Name:进程对应的程序名
PID:进程号
CPU%:占用CPU百分比
PgSp:分配给该进程的页面空间大小
Class:"这个是啥?"
二、sar
SAR主要收集、显示和保存系统的活动信息,包括CPU的效率,内存使用,系统调用,文件读写,进程活动,IPC有关活动等。sar命令实质是调用sadc命令,当运行sar命令时,后台会运行一个/usr/lib/sa/sadc进程,sar将sadc命令生成的数据转换成文本格式,然后显示出来,或者保存到某一个文件中。
sar命令运行有两种方式,一种是在sar后边添加Interval和Number参数,实时获得统计信息;第二种方式是直接运行sar,不加任何参数,那么默认sar就去寻/var/adm/sa/sadd文件去分析数据,dd是天数,比如今天19号,那么就是/var/adm/sa/sa19,但是这个文件不会自动存在,默认是被#屏蔽掉的,如果要主动生成,那么需要自己打开,在/etc/rc文件里有这个:
系统启动时,会生成当天数据。这个/etc/rc脚本会在系统开始时候执行,这个在/etc/inittab文件中有这条
直接不加参数运行sar,sar第一去找/var/adm/sa/sadd,第二去找/usr/lib/sa/sa1,但是这个脚本是由cron执行的,如果cron每天没执行/usr/lib/sa/sa1这个脚本,那么运行sar也会提示出来
1、分析CPU活动
四个参数的概念的topas里边的相同。
%usr+%sys+%wio+%idle=100
当%usr+%sys接近于100%,那么表示CPU到极限了,可以考虑增加CPU个数,%usr明显大于%sys,证明用户应用程序占用了太多的CPU,可以考虑优化。%wio占用太多证明CPU花在等待磁盘I/O的时间太长,另外如果没有足够的内存也会引起页面调度过分频繁,这样也会产生大量的磁盘I/O。
2、统计文件的读/写操作(access system)
iget/s:每秒调用inode查找函数的次数
looguppn/s:每秒调用目录查找函数的次数
dirblk/s:由目录查找函数每次读取块的次数
3、统计系统调用(calls)
scall/s:每秒系统调用总数
sread/s:每秒read调用总数
swrit/s:每秒write调用总数
fork/s:每秒fork调用总数
exec/s:每秒exec调用总数
rchar/s:每秒由read()调用系统传送的字节数
wchar/s:每秒由write()调用传送字节数
4、统计块设备活动(device)
device:块设备名
%busy:设备忙于处理传输请求所占的百分比
avque:设备在处理传送请求期间内,没有完成请求数量的平均值
r+w/s:每秒对设备所执行的读/写数
blks/s:每秒传送的块数
avwait:传送请求等待队列空闲的平均数
avserv:完成传送请求所需的平均时间
如果%busy>50%或者avawait>avscrv,那么可能存在磁盘I/O瓶颈
5、统计队列活动(queue statistics)
runq-sz:运行队列中内核线程的平均数
%runocc:运行队列占用时间的百分比
swpq-sz:内核线程等待页面调入的平均数,即交换队列大小
%swpocc:交换队列占用时间的百分比
runq-sz<4或swpq-sz<5时是比较好的情况
6、统计页面的调度(paging statistics)
slots:位于页面空间上的空闲页的数量
cycle/s:每秒发生的页面交换周期数
fault/s:每秒发生的页面错误的个数
odio/s:每秒发生的非磁盘I/O页面调度的数量
7、统计系统报的应用
#sar -v 2 6
8、统计TTY设备的活动(tty device)
9、统计缓冲区的使用(buffer)
10、统计内核进程的活动
#sar -k 2 6
11、统计消息和信号量的活动
#sar -m 2 6
12、统计交换去的活动
#sar -w 2 6
三、vmstat
主要报告虚拟内存的活动,但他同时还统计了内核线程、物理磁盘、陷阱(错误)和CPU的活动。
1、memory
avm:指活动的虚拟内存页的数量,即在页面空间中已分配的的虚拟内存页的总数,如果这个值比较高,那并不意味着系统性能很差。
fre:指RAM中空闲内存页的数量。系统维护着一个被称为空闲列表的内存页缓冲区,当虚拟内存管理器(VMM)需要空间的时候,通过空闲列表为VMM分配空间。
说明:
1)将avm除以256就是在系统范围内已分配页面空间的大小(单位MB)
2)#lsps -a显示每个页面空间的信息
3)推荐位系统分配足够的页面空间,以至于它的使用率不至于达到100%
4)当页面空间上少于128个未分配虚拟页的时候,系统就会杀死某些进程来释放一些页面空间。
5)VMM保持在空闲列表中的最小页数由minfree参数决定,这个参数可用vmtune命令修改,但前提是,需要安装bos.adt.samples文件集(vmtune这个命令老了,现在改为vmo了)
2、page
re:(参数停用)
pi:每秒钟从页面空间调入页数
po:每秒钟调出页面空间页数
fr:空闲页数
sr:由页面换算法检查的页数
cy:每秒时钟周期
说明:
1)如果pi和po的值总不为0,证明页面调度活动太频繁,大大降低了系统的性能,这主要是由于内存的瓶颈问题。
2)如果pi:po的比值大于等于1,那就证明对于每一次页面调入,至少会存在一次页面调出,因此这个系统的页面调度活动很频繁,具有一个过高的页面调度率
3)如果fr:sr比值过高,证明内存使用过量,如果fr:sr为1:4则表示每释放一个页,需要检查4个页。
3、faults
in:设备中断的次数
sy:系统调用的次数
cs:内核线程的上下文切换次数
4、CPU
r:每秒钟增加到运行队列中的线程数
b:每秒钟因等待资源或I/O而被添加到等待队列的线程数
us:CPU处于用户模式下的时间百分比
sy:CPU处于系统模式下的时间百分比
id:CPU处于空闲模式下的百分比
wa:CPU处于等待磁盘I/O模式下而处于空闲的的时间百分比
说明:
1)id一直是0,说明CPU一直处于繁忙状态
2)运行队列加大,用户响应时间就会加大,如果r不为0,证明CPU还有更多的工作要执行
3)用户和系统使用CPU的比率接近100%,说明可能是CPU的限制
4)如果wa值超过了40%说明磁盘子系统并不平衡,可能是磁盘密集工作负载所致。
四、iostat
它能够报告CPU,终端I/O和磁盘I/O的统计信息,这些信息有助于定义单个组件的I/O负载,例如硬盘。
1、TTY和CPU的统计数据(如果用-t参数,那么就只报告TTY和CPU的统计数据)
tin:每秒从终端接收的字符数
tout:每秒发送给终端的字符数
%user:执行用户程序占用CPU的百分比
%sys:执行核心程序占用CPU的百分比
%idle:CPU处于空闲模式下的百分比
%iowait:CPU处于等待磁盘I/O模式下而处于空闲的的时间百分比
%iowait比较高,证明磁盘I/O有瓶颈。
解决瓶颈有一下通常方法:
1)不要把多个活动的逻辑卷和文件系统放在同一个硬盘上,这样可以在多个物理磁盘上平均分配I/O负债
2)多个物理磁盘上分布一个逻辑卷,这样可以提供并发访问
3)在一个卷组中创建多个JFS日志(log),并把他们分配给具体的文件系统,这样对应用程序创建、删除或修改大量文件有益,特别是临时文件。(创建了多个JFS日志,或者是JFS2日志,记得用logform格式化)
4)通过备份和恢复文件来减少残片,残片会引起驱动器频繁第定位磁头而使响应时间增大
5)增加一些驱动器来平衡现有的I/O子系统
2、磁盘I/O的统计报告
Disks:显示物理卷的名字
%tm_act:物理磁盘处于活动时间的百分比。一个驱动器只有在传送数据或由命令处理的时候才是活动的
%Kbps:驱动器每秒传送多少KB的数据
tps:每秒发送给物理磁盘的传送次数
Kb_read:指在报告间隔期从物理卷读取的数据量,以KB为单位
Kb_wrtn:指在报告期间写向物理卷的数据量,以KB为单位
说明:
1)磁盘的使用百分比%tm_act与资源争用成正比,与I/O性能成反比,当磁盘的使用率增加的时候,I/O性能会降低,响应时间就会增加。
2)系统中拥有的驱动器越多,I/O性能就越好
3)查找比较繁忙的驱动器(与空闲驱动器对比),把数据从较忙的磁盘上移到较闲的磁盘上,这样可以减轻磁盘的瓶颈
4)检查页面调度活动,因为页面调入/调出同样会增加I/O负载,把页面空间从较繁忙的磁盘移动到不繁忙的磁盘。
五、vmo
见其他单独的云笔记
六、网络性能分析
上图说明:
当一个应用程序想远程主机上某一个应用程序发送数据的时候,它首先将数据写到本地的一个socket中,即数据从应用程序的缓存区复制到本地的socket发送缓存区中。
数据一旦被发送到socket缓存区,就会形成一个mbuf或cluster列表,然后socket就调用TCP或UDP挨个发送,数据可能很大,超过MTU的限制,那么对于TCP协议发送的数据来说,会在传输层(TCP/UDP层)把数据分割成段(Segment),段是TCP协议的数据单位;而对于UDP协议,数据的分割工作会交给网络层(IP层)来完成。
同样的,在接收端,还有这样一个接收队列,工作时逆着发送的方法来做的。注意发送缓存区和接收缓存区大小受到udp_sendspace和tcp_sendspace(或者是udp_recvspace和tcp_recvspace)的限制。
数据到达对方主机后,会被放在设备驱动程序层,然后通过接口层被传送到IP层的IP输入队列中,IP输入队列的大小由ipqmaxlen参数控制,no命令可以改这个参数。如果在传输中,某个包丢了或是破损了,IP层为了接受所缺少的那个包而等待的时间由ipfragttl参数来控制。
AIX为各种TCP/IP网络任务分配了虚拟内存,网络子系统使用的内存管理设备称为mbuf,mbuf主要是用于存储从网络上收到的和发出到网络上的数据。AIX在运行的时候,可以配置mbuf池。下面列出的系统参数可以调整:
1)thewall:内核变量,设置mbuf管理设备能够从RAM中分配的最大数量
2)tcp_sendspace:设置默认socket发送缓存区大小。默认16384
3)udp_sendspace:设置发出数据的缓存区而由单个UDP socket使用的内存的最大值。默认9216
4)udp_secvspace:设置接受任何单个UDP socket的缓存区的最大值。默认是41920
5)rfc1323:该值非0,允许TCP窗口大小用32位(bit)的最大数代替16位,既可以将tcp_sendspace和tcp_secvspace设置为64KB
6)sb_max:控制所有缓存区大小点的上限
7)ipqmaxlen:内核变量,控制IP输入队列的长度,默认是100个包的长度。这个值对于单个网络设备来说足够了,如果IP输入队列不够长,数据包会被丢弃
——————这些参数,都可用no命令修改