码迷,mamicode.com
首页 > 其他好文 > 详细

第二十章 系统性能调优

时间:2015-09-27 22:49:33      阅读:319      评论:0      收藏:0      [点我收藏+]

标签:

一、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缓存区,就会形成一个mbufcluster列表,然后socket就调用TCP或UDP挨个发送,数据可能很大,超过MTU的限制,那么对于TCP协议发送的数据来说,会在传输层(TCP/UDP层)把数据分割成段(Segment),段是TCP协议的数据单位;而对于UDP协议,数据的分割工作会交给网络层(IP层)来完成

        同样的,在接收端,还有这样一个接收队列,工作时逆着发送的方法来做的。注意发送缓存区和接收缓存区大小受到udp_sendspacetcp_sendspace(或者是udp_recvspacetcp_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命令修改

第二十章 系统性能调优

标签:

原文地址:http://www.cnblogs.com/lqdflying/p/4842774.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!