第二十章 系统性能调优

一、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命令修改

时间: 2024-10-07 05:25:21

第二十章 系统性能调优的相关文章

Linux操作系统性能调优的方法

Linux操作系统性能调优的方法 2013-03-18 15:35 HonestQiao ChinaUnix 字号:T | T Linux是一套免费使用和自由传播的类Unix操作系统,Linux不同的发行版本和不同的内核对各项参数及设置均做了改动,从而使得系统能够获得更好的性能.本文分享了几种技巧对Linux操作系统进行性能的优化. AD:2014WOT全球软件技术峰会北京站 课程视频发布 按照传统,Linux不同的发行版本和不同的内核对各项参数及设置均做了改动,从而使得系统能够获得更好的性能.

Perf Event :Linux下的系统性能调优工具

Perf Event :Linux下的系统性能调优工具 2011-05-27 10:35 刘 明 IBMDW 字号:T | T Perf Event 是一款随 Linux 内核代码一同发布和维护的性能诊断工具,由内核社区维护和发展.Perf 不仅可以用于应用程序的性能统计分析,也可以应用于内核代码的性能统计和分析.得益于其优秀的体系结构设计,越来越多的新功能被加入 Perf,使其已经成为一个多功能的性能统计工具集 .本文将介绍 Perf 在应用程序开发上的应用. AD:2014WOT全球软件技术

LAMP 系统性能调优之网络文件系统调优

LAMP 系统性能调优之网络文件系统调优 2011-03-21 09:35 Sean A. Walberg 网络转载 字号:T | T 使用LAMP系统的用户,都想把自己LAMP性能提高运行的速度提高,那它有一点可以调优: 网络文件系统 ,我们知道网络文件系统是网络共享磁盘的一个系统,我们来进行调优下! AD:2014WOT全球软件技术峰会北京站 课程视频发布 图-LAMP LAMP网络文件系统调优 网络文件系统(NFS)是一种通过网络共享磁盘的方法.NFS 可以帮助确保每个主机具有相同数据的拷

Android系统性能调优工具介绍

经作者授权,发表Tieto某青年牛的一篇<程序员>大作. Android系统性能调优工具介绍 在软件开发过程中,想必很多读者都遇到过系统性能问题.而解决系统性能问题的几个主要步骤是: 测评:对系统进行大量有针对性的测试,以得到合适的测试数据. 分析系统瓶颈:分析测试数据,找到其中的hotspot(热点,即bottleneck). 性能优化:对hotspot相关的代码进行优化. 由上述步骤可知,性能优化的目标对象是hotspot.如果找到的hotspot并非真正的热点,则性能优化的结果必然是事倍

《java系统性能调优》--2.缓存

上一节,简单介绍了如何发现性能瓶颈.从这节开始,我会和大家分享我在项目中做的一些性能调优工作.这个系列没有什么顺序可言,觉得什么重要,就说说什么. 这节,我们聊缓存. 最开始接触缓存这个词,是学习硬件知识的时候,cpu有缓存,而且还分一级缓存,二级缓存,三级缓存.. 记得曾经的曾经老师提了一个很有意思的问题. 问:电脑为什么要有一级缓存,二级缓存--,而且还要有内存,还要有硬盘? 如果你面对这个问题,你怎么回答? 先来看我们的正文,最后再解释. 我们要聊当然不是硬件意义上的缓存,而是应用程序与应

LAMP 系统性能调优之内核调优措施

LAMP 系统性能调优之内核调优措施 2011-03-18 11:21 Sean A. Walberg 网络转载 字号:T | T 在对系统的 Apache.PHP 和 MySQL 组件进行调优之前,应该花一些时间确保底层 Linux 组件的运行正常.这点是非常重要的! AD:2014WOT全球软件技术峰会北京站 课程视频发布 LAMP LAMP的一些快速的内核调优措施 大多数 Linux 发布版都定义了适当的缓冲区和其他 Transmission Control Protocol(TCP)参数

《java系统性能调优》--1.发现瓶颈

性能啊!性能! 之所以想写写性能调优,也是有感于我们的项目,我们采用一些手段使得系统性能上升了一个台阶,总是需要把这点经验沉淀一下.随着工作的深入,关于系统性能的事肯定还有很多,也算是通过这个系列文章做做笔记.优化可能包括应用级别的优化,也可能包括代码级别的优化. "要进行优化,先得找到性能瓶颈!" 忘记是从哪里看到了这句话,但总算切中要害. 但在找性能瓶颈之前,我们总要先对系统性能有一个概念. 如何在不购买新硬件的条件下完成更多的工作?何时才真正需要添加硬件(更多的内存,更快的磁盘.

linux 系统性能调优 相关命令汇总

linux 系统性能调优 相关命令汇总: 1. ps:查看系统中当前有哪些进程在运行 常用命令有ps aux  | grep  -i  mysql http://www.cnblogs.com/peida/archive/2012/12/19/2824418.html 2. top:动态显示各个程序对cpu,内存的占用,以及负载的情况 http://www.cnblogs.com/ggjucheng/archive/2012/01/08/2316399.html 3. io的总体负载,进程的io

Oracle第二话之调优工具

Oracle第二话之调优工具 原创if 0 = -I can 发布于2019-04-09 19:53:12 阅读数 172  收藏 展开 目录 1.告警日志 2.用户进程trace文件 3.动态性能视图 4.statspack 安装产生报告 5.生成AWR ADDM ASH 报告 6.explan  --用来看执行计划 1.告警日志 数据库出现任何问题,第一件事就是先看告警日志文件. 1)告警日志内容: (1)启动时间以及操作模式的启动和关闭命令. (2)涉及物理结构的操作,使用ALTER DA