RS6000
作者RS6000·2022-03-27 21:46
售前技术支持·浪潮商用机器有限公司

AIX系统性能调优的一些建议

字数 3445阅读 2954评论 0赞 0

AIX系统性能调优的一些建议

对于一个系统而言资源总是有一定限度的,而任务总是要消耗系统资源的。关键是要找出哪些资源不能满足应用程序运行的需求。这里存在一个性能瓶颈的问题。不同的应用程序可能会有不同的资源要求,可能会产生不同的瓶颈。系统资源中的CPU、内存、磁盘或是网络都有可能成为瓶颈。系统性能调优需要找出这些资源成为瓶颈的原因,是资源的不足,是系统设置不合理,还是应用程序的问题。

查找性能瓶颈的顺序非常重要,正确的顺序是:CPU > 内存 > I/O > 网络,如下图所示:

要使用系统性能分析工具需要安装以下文件组:

l bos.acct

l perfagent.tool

查找性能瓶颈的工具:

vmstat 命令

性能分析应该从vmstat命令开始。通过该命令我们可以找到大致的方向。

# vmstat 2 10(每隔两秒采样一次,一共采样10次)

kthr memory page faults cpu

----- ----------- ------------------------ ------------ -----------

r b avm fre re pi po fr sr cy in sy cs us sy id wa

0 0 3269 10342 0 0 0 0 0 0 130 36 2 00 0 99 0

0 0 3275 10336 0 0 0 0 0 0 132 40 2 60 1 99 0

0 0 3 282 10326 0 0 0 0 0 0 128 6996 27 3 8 90 0

先看是否CPU瓶颈:

从"vmstat"的输出我们可以看"cpu"的使用情况 **

当 us+sy 的使用量持续超过80%(多处理器机型), 可以认为是CPU瓶颈。

说明:

us 程序在用户模式(user)下运行对CPU的占用。

sy 程序在核心模式(kernel)下运行对CPU的占用,一般值us应大于sy值。

r (runable threads)可运行的线程, 一般应不大于 5*(_Total_Proc_ - _Bind_Proc_)。

b (threads in wait queue)在等待系统资源或I/O的线程,当前不在CPU中运行。

cs (context switch) 进程切换,如果进程切换数值较高则进程的运行效率不高。通常进程切换数在( 120~150 ) * Total_Proc 时,CPU利用率较高。

如需要进一步了解 CPU 的使用情况 , 可使用 "sar" 命令 , 如 :

# sar -P ALL 1 10 ( 每隔 1 秒采样一次 , 一共采样 10 次 )

在多处理器机器上查看CPU的使用是否平衡

如果CPU使用不平衡,则应用程序多半是单线程程序,不能充分利用多CPU系统的优势。这样就需要从应用程序的调优着手。

如需要了解哪个进程使用了最多的CPU资源,可使用"tprof"命令,如:

#tprof -x sleep 60(采样 60 秒)

在输出文件__prof.all中可以找出最占用CPU资源的进程。对最占CPU资源的进程进行分析,优化应用程序使CPU的利用率提高。

如果问题不是CPU瓶颈,可以再看是否内存问题:

查看"vmstat"的输出

fre 系统当前空闲的物理内存的页面数(一个内存页面为4K字节)

pi 每秒钟从内存交换区载入的页面数

po 每秒钟写入内存交换区的页面数

fr 每秒钟内存管理程序释放出来的空闲页面

sr 每秒钟内存管理程序扫描过的内存页面数

cy 内存管理程序扫描过整个内存页面表的次数

内存瓶颈通常表现为: fre值持续在minfree值(默认为120)上下波动,同时又有大量的po(持续在2位数以上)和pi操作。此时内存管理程序试图扫描更多的内存页面以释放空间,所以sr值会急剧上升。在内存不足的情况下srfr的比值会较大,cy也可能大于0 。此时用lsps命令检查内存交换区的使用,会发现使用率较高。

由于有大量的内存页面写入内存交换区,这会导致wa(I/O等待)值上升,但此时并非I/O瓶颈引起。

当内存交换区使用率超过70%时需要增加交换区的大小。但增加内存交换区的大小并不会提高系统的性能。相反,内存交换区使用越多,系统性能下降越多。当内存不足时,正确的方法是增加物理内存的数量或优化应用程序。

以下命令可以进一步对内存的使用进行分析:

# svmon -G -i 1

# svmon -Pvt 10 找出最占内存的10个程序以进一步分析应用程序对内存的使用。(此参数只适用于AIX4.3.3)

如果也不是内存瓶颈则应看看系统的I/O情况:

还是从"vmstat"的输出看,如果wa值持续大于 > 25, 则可能是I/O瓶颈,此时b值也会较高,显示有较多的进程等待系统I/O。

以下命令可以进一步对系统I/O的使用情况进行分析。

# iostat – d 1 10 (只采样硬盘数据,每秒采样 1 次,一共采样 10 次)

Disks: % tm_act Kbps tps Kb_read Kb_wrtn

hdisk0 0.2 2.4 0.2 1192730 706531

hdisk1 0.0 0.3 0.0 60479 190316

hdisk0 35.5 848.0 76.0 1696 0

hdisk1 74.5 790.0 58.0 4 1576

% tm_act 硬盘的繁忙程度,数值越高越繁忙。

Kbps 数据流量,为读操作与写操作的总和。

tps 每秒钟的 I/O 次数。通常一块硬盘每秒的 I/O 次数由硬盘的转速、磁头寻道时间、磁头从盘片表面传输数据的速度决定。

Kb_read 在采样间隔期间读的数据量。

Kb_wrtn 在采样间隔期间写的数据量。

磁盘的数据流量很大程度上与应用程序的 I/O 方式相关。一般硬盘最大的 I/O SIZE 为 128kb 或 256kb ,每秒 I/O 次数一般为 100~150 之间。因此在最理想的情况下数据流量可达到 12mb/sec ~ 37mb/sec (当然也要受制于接口的带宽)。用 Kbps 除以 tps 可以得到平均的 I/O SIZE 。某些应用程序的 I/O SIZE 可能低至 2kb ,而且产生大量的随机读写操作,从而使硬盘的读写效率大大降低,导致 CPU 的 I/O 等待增加。

有时 I/O 问题是 I/O 带宽不足引起的。当所有连接在一块 I/O 卡上的硬盘的流量总和达到 I/O 卡带宽的 70% 以上时,应考虑增加更多的 I/O 卡。
数据的分布也是很重要的因素。通常把数据分布到更多的硬盘上更有利于提高 I/O 性能。

因一部分析 I/O 问题,可用以下命令:

# filemon -o outputfile -O all;sleep 30;trcstop

找出系统中最繁忙的文件、逻辑卷或磁盘。从中可以分析出文件、逻辑卷和磁盘的读写操作是连续的 (sequential) 还是随机的 (randomly) 。

# fileplace -v filename

查看文件数据块的分布 , 从中可以分析文件是否有碎片。

#lslv-p hdiskx__lvname

查看逻辑卷在硬盘上的分布位置,从而分析出逻辑卷是连续分布,还是有碎块。根据逻辑卷的实际使用情况可以对逻辑卷的物理分布作出调整。

如果还不是I/O瓶颈则, 应看看网络的情况:

对于网络问题可以用"netstat"命令进行分析:

# netstat -m

查看有多少对mbufs的请求被拒绝

# netstat -s

查看各个网络协议的统计数据,如IP, TCP, UDP

# netstat -v

查看块网卡的S/W Trans_Q overflow及 S/W Trans_Q 队列中最多的包是多少。 如果传输队列中有溢出的现象,则应调整网卡的设置。

# netstat -I en0 1

查看以太网接口en0及整个系统的网络数据流量。

# lsattr -El ent0

查看以太网卡ent0的设置信息。

# no -a

查看网络选项,如thewall值的设置等。

如果以上步骤都没有发现系统有资源上的瓶颈,则很可能是应用程序的问题,需要应用程序开发商进行进一步的分析。

对于性能的分析,IBM还提供了"perfpmr"工具。该工具可以对系统性能的各方面信息进行收集,通过IBM实验室的分析可以帮助客户找出导致性能不理想的原因。

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

0

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广