AIX系统Memory性能评估

一, VMM的管理简介

1.1 空闲列表维护

1.2 文件占用内存的比率维护

1.3 vmstat命令显示内存中的数据页数

二, 使用vmstat确定内存的使用情况

2.1 faults故障

2.2 memory(内存)

2.3 page磁盘交换

三, svmon命令

3.1 memory段

3.2 pg space段

3.3 pin 段

3.4 inuse 段

4, ps命令显示当前运行的进程状态

5, 内存的调整

AIX系统Memory性能评估

一, VMM的管理简介

内存和交换空间(虚拟内存)一般都是用页面来进行分配和管理的. 在内存中存在两种类型的页面:计算页面(一般为可执行文件段的页面)和文件页面(存储的数据文件的页面). 当我们执行程序或者读入数据的时候, 内存中的页面就逐渐被占用. 当空闲的内存只剩下minfree的时候, vmm的调页进程就被唤醒, 通过调页算法, 将内存中的页面转移到交换空间中. 直到空闲内存达到maxfree, 才停止调页.

1.1 空闲列表维护

在这里, 我们涉及到两个参数:

1, minfree: 最小空闲页链表尺寸. 一旦低于该值, 系统调页进程启动偷页以填充空闲页链表, 保证有足够的内存页面. 偷页就是将不常用的页面替换出去.

2, maxfree: 最大空闲页链表尺寸. 一旦高于该值, 系统停止偷页.

一般情况下, minfree和maxfree通过下面的公式得到.

Maxfree=minmum(memory/128,128), minfree=maxfree-8

如果发现空闲列表不足, 可以用下面的方法增加.

在5.2以上的版本中可以通过vmo参数实现.

#vmo –o minfree = 1000 –o maxfree = 1008 –P   #-P参数使得修改永久生效.

在AIX5.2之前的版本需要使用/usr/samples/kernel/vmtune命令

Vmtune –f 1000 –F 1008

1.2 文件占用内存的比率维护

数据文件占用的内存不会主动释放, 所以容易造成内存的文件页面过高的占用, 导致其他的应用内存使用紧张. 这里有两个参数跟这个占用相关.

# vmo -a |grep perm

maxperm = 392704

maxperm% = 20

minperm = 98175

minperm% = 5

strict_maxperm = 0

如上所示的两个参数解释如下:

1, minperm: 用户IO文件访问的最小缓冲页数;

2, maxperm: 用户io文件访问的最大缓冲页数;

这里主要与性能相关的是maxperm. Maxperm参数指定了文件页面可以占用内存的上限.调整参数值的方法如下.

Aix5.2以上的版本使用vmo命令

#vmo –o maxperm%=80 –o minperm%=20

在Aix5.2之前的版本一样要使用vmtune命令

#vmtune –p 20 –P 80 –P

1.3 vmstat命令显示内存中的数据页数

# vmstat -v |grep perm

5.0 minperm percentage

20.0 maxperm percentage

19.8 numperm percentage

系统调页的规则

1, 如果numperm>maxperm, 则只调出文件页面;

2, 如果numperm<minperm, 则同时调出文件页面和计算页面.

3, 如果minperm<numperm<maxperm, 则只调出文件页面, 除非新调入的文件页面大于计算页面的总和.

如果系统在向调页空间调出页面,可能使因为内存中的文件页数低于maxperm,从而也调出了部分的计算页面以达到maxfree的要求。在这种情况下,可以考虑把maxperm降低到低于numperm的某个值,从而阻止计算页面的调出。在5.2 ML4以后的版本中,为了防止计算页面被调出,可以采用另外一个方法,就是设置参数lru_file_repage=0。将该参数设为0,则告诉vmm在进行页面替换的时候,优先替换文件页面。

maxclient通常应该设置为一个小于或者等于maxperm的值。

增强JFS文件系统为它的缓冲区高速缓存使用客户机文件,这不受maxperm和minperm的影响。为了在限制增强JFS文件系统使用高速缓存,可以指定maxclient的值,避免在它进行页面替换的时候,替换其他类型的页。

二, 使用vmstat确定内存的使用情况

该命令可迅速提供关于各种系统资源和与之相关的性能问题的简要信息.

作为一个cpu监视器, vmstat命令优于iostat命令, 因为vmstat命令是滚动的, 使得它的每一行报告的输出更容易扫描. 并且如果有很多磁盘链接到系统中, 由此所涉及到的开销更少.

# vmstat 2

System configuration: lcpu=8 mem=8192MB

kthr    memory              page              faults        cpu

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

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

0  0 1596212 186517   0   0   0   0    0   0 157 2242 757  5  0 95  0

1  0 1602824 179905   0   0   0   0    0   0 276 8731 986 23  1 76  0

1  0 1609397 173332   0   0   0   0    0   0 298 5696 1118 27  1 72  0

1  0 1609407 173322   0   0   0   0    0   0 276 5630 1046 23  1 77  0

1  0 1609593 173136   0   0   0   0    0   0 1209 10754 3699 10  3 87  0

1  0 1609630 173099   0   0   0   0    0   0 637 8595 2061 26  1 72  0

要检查内存是否是瓶颈, 考虑vmstat报告中的memory列, pages列以及faults列

2.1 faults故障

kthr    memory              page              faults        cpu

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

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

0  0 1596212 186517   0   0   0   0    0   0 157 2242 757  5  0 95  0

1  0 1602824 179905   0   0   0   0    0   0 276 8731 986 23  1 76  0

In:

每秒设备中断数

Sy:

每秒系统调用次数.

Cs:

每秒钟的上下文切换次数. 物理cpu资源细分为10毫秒的逻辑时间片, 假设一个线程调度被运行, 它将一直运行直到它的时间片用完,或被抢先,或者自愿放弃cpu控制权. 当给予另一个线程cpu控制权时, 必须保存前一个线程的上下文或工作环境,并且必须装入当前线程的上下文. 操作系统有一个很有效的上下文切换过程, 所以每次切换并不耗资源. 任何上下文切换的显著增加, 如当cs比磁盘io和网络信息包速率高很多, 都应进行进一步调查.

2.2 memory(内存)

kthr    memory              page              faults        cpu

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

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

0  0 1596212 186517   0   0   0   0    0   0 157 2242 757  5  0 95  0

1  0 1602824 179905   0   0   0   0    0   0 276 8731 986 23  1 76  0

1  0 1609397 173332   0   0   0   0    0   0 298 5696 1118 27  1 72  0

Avm列表表示活动虚拟内存的页面数, 每页一般4KB

Fre表示空闲的页面数.

2.3 page磁盘交换

kthr    memory              page              faults        cpu

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

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

0  0 1596212 186517   0   0   0   0    0   0 157 2242 757  5  0 95  0

1  0 1602824 179905   0   0   0   0    0   0 276 8731 986 23  1 76  0

1  0 1609397 173332   0   0   0   0    0   0 298 5696 1118 27  1 72  0

Re: 该列无效

Pi: 从磁盘交换到内存的交换页(调页空间)数量, 4KB/页. 当进程访问一个交换页时就产生一个缺页故障.

Po: 从内存交换到磁盘的交换页数量, 4KB/页. 如果写入的交换页在交换区间内不存在或者已经做了修改, 则写入交换区间.如果不被再次访问, 则会留在调度空间中直到进程终止或者放弃空间.

Fr: 根据页面替换算法每秒释放的页数. VMM的页面替换例程会定时扫描页面祯表, 以释放一些长时间没有访问的数据页到空闲列表. 在这个过程中, 计算页面不会产生IO, 工作页面如果数据没有发生修改, 也不需要写回磁盘, 不会产生IO.

Sr: 为了释放页面扫描的页数. Sr值如果比fr值高很多, 说明替换算法要查找可疑替换的页面越困难.

Cy: 每秒页面替换代码扫描了PFT多少次, 因为增加空闲列表达到maxfree值, 不一定需要完全扫描PFT表, 就是说这个值一般会小于1, 而所有vmstat输出都为整数, 所以cy通常为0.

三, svmon命令

Svmon主要用来捕获并分析虚拟内存快照.

# svmon -G -i 2 2

size      inuse       free        pin    virtual

memory      2097152    2007242      89910     488437    1598949

pg space    4194304       4268

work       pers       clnt      other

pin          303244          0       1802     183391

in use      1598949          0     408293

PageSize   PoolSize      inuse       pgsp        pin    virtual

s   4 KB          -    1934298       4268     434309    1526005

m  64 KB          -       4559          0       3383       4559

size      inuse       free        pin    virtual

memory      2097152    2007238      89914     488439    1598945

pg space    4194304       4268

work       pers       clnt      other

pin          303246          0       1802     183391

in use      1598945          0     408293

PageSize   PoolSize      inuse       pgsp        pin    virtual

s   4 KB          -    1934294       4268     434311    1526001

m  64 KB          -       4559          0       3383       4559

3.1 memory段

l         Size(大小): 物理内存总页数. 4KB/页

l         Inuse(正在使用): 物理内存中正在使用的内存页面数. 包含活动进程和已经终止的持久文件页面.

l         Free(空闲): 空闲列表中的页面数量

l         Pin(固定内存): 锁定在内存中的页面数量(锁定的意思就是不能被替换出去)

l         Virtual(虚拟内存):分配于系统虚拟空间的页数.

3.2 pg space段

Size(): 调页空间总大小

Inuse(): 已经分配页的总数, 也就是已经使用的调页空间页数

3.3 pin 段

指定包含固定内存的页面的实际内存的子集上的统计信息

l         Work(): 物理内存中的工作段内存的页数

l         Pers(): 物理内存的持久段页面的帧数.

l         Clnt(): 物理内存中客户段页面的帧数.

3.4 inuse 段

指定正在使用的实际内存子集的统计信息

l         Work(): 物理内存中的工作段内存的页数

l         Pers(): 物理内存的持久段页面的帧数.

l         Clnt(): 物理内存中客户段页面的帧数.

4, ps命令显示当前运行的进程状态

# ps gv | sort +6b -nr |head -10

PID  TTY STAT TIME PGIN SIZE RSS   LIM  TSIZ   TRS %CPU %MEM COMMAND

561232      - A    30:59    0  9248 84184    xx 50614 74936  0.0  1.0 ora_pmon

454728      - A     0:14    0  8900 83836    xx 50614 74936  0.0  1.0 ora_s000

729338      - A     3:12    0  8840 83776    xx 50614 74936  2.0  1.0 oracleSI

581808      - A    1710:17    6  8528 83464    xx 50614 74936  0.1  1.0 ora_lms0

942332      - A     2:24    7  8500 83436    xx 50614 74936  0.0  1.0 ora_arc0

868444      - A     1:06   39  8496 83432    xx 50614 74936  0.0  1.0 ora_arc1

442494      - A    1715:12    9  8372 83308    xx 50614 74936  0.1  1.0 ora_lms1

647186      - A    98:48   12  7912 82848    xx 50614 74936  0.0  1.0 ora_lmd0

725148      - A     5:09    0  7460 82396    xx 50614 74936  1.8  1.0 oracleSI

573582      - A    143:00    0  7068 82004    xx 50614 74936  0.0  1.0 ora_lmon

我们可以用下面的方法查看具体的进程在干什么事情.

例如我们查看PID = 487432的进程, 可以使用下面的方法.

# su - oracle

[YOU HAVE NEW MAIL]

$ sqlplus /nolog

SQL*Plus: Release 10.2.0.3.0 - Production on Tue Jul 14 17:24:42 2009

Copyright (c) 1982, 2006, Oracle.  All Rights Reserved.

SQL> conn / as sysdba

Connected.

SQL> oradebug setospid 487432

Oracle pid: 12, Unix process pid: 487432, image: oracle@i2db (MMNL)

SQL> oradebug event 10046 trace name context forever,level 8

Statement processed.

SQL> oradebug tracefile_name

/oracle/admin/arpdb/bdump/arpdb_mmnl_487432.trc

SQL> oradebug event 10046 trace name context off

Statement processed.

SQL> exit

Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production

With the Partitioning, OLAP and Data Mining options

$ tkprof /oracle/admin/arpdb/bdump/arpdb_mmnl_487432.trc

output = arpdb_mm1.txt

TKPROF: Release 10.2.0.3.0 - Production on Tue Jul 14 17:31:29 2009

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

$

5, 内存的调整

具体调整需要结合系统运行的应用程序对症下药,如调整minperm/maxperm将改变内存与PAGING SPACE之间的交换算法,调整minpgahead/maxpgahead将改变内存块请求机制,调整minfree/maxfree将改变内存紧张时的内存清理刷新机制,等等。如果数据库使用裸设备,并且没有太多其他的应用,因为裸设备不需要文件系统的缓存,所以可以降低minperm,maxperm,maxclient的默认值,降低操作系统对内存的不必要的占用。

案例:

计费数据库数据库响应变慢,内存16G,裸设备,却存在很多的PI,PO情况。

在检查与内存相关的系统参数,发现如下问题:

minperm% = 20,  maxperm% = 80, maxclient% = 80

说明:以上三个参数为系统缺省配置,其表示,使用文件系统时,最多可使用80% * 16G=10.8G,用于缓存所访问的文件。

结论:由于以上参数采用系统缺省配置,文件系统缓存最大可以达到10.8G,在执行大量的文件cp操作后,系统的可用内存量迅速下降,在其后的计费过程中,由于大量page in/page out操作引起系统严重性能瓶颈。

优化:

将maxperm% = 30 ,maxclient% = 30

#vmo –o maxperm%=30 –P

#vmo –o maxclient%=30 –P

5.2以前版本

/usr/samples/kernel/vmtune –p 20 –P 30

/usr/samples/kernel/vmtune –t 30

AIX系统Memory性能评估相关推荐

  1. AIX系统CPU性能评估-1

    作者:Peak Wong出处:IT专家网2008-05-08 17:21 本文对cpu性能的命令作了详细介绍,并给出了对于系统cpu监控的建议. 1.vmstat 使用vmstat来进行性能评估,该命 ...

  2. 系统性能评价---性能评估

    性能评估 性能评估是对一个系统进行各项检测,并形成一份直观的文档,因此性能评估是通过各项测试来完成的.评估的一个目的是为性能的优化提供参考,而性能优化涉及的面很广,也很复杂,而且永无止境.对于不同的应 ...

  3. Linux服务器性能评估与优化--转

    http://www.itlearner.com/article/4553 一.影响Linux服务器性能的因素 1. 操作系统级 Ø       CPU Ø       内存 Ø       磁盘I/ ...

  4. Linux服务器性能评估

    一.影响Linux服务器性能的因素 1. 操作系统级 CPU内存磁盘I/O带宽网络I/O带宽 2. 程序应用级 二.系统性能评估标准 影响性能因素 影响性能因素 评判标准 好 坏 糟糕 CPU use ...

  5. 【转】Linux服务器性能评估与优化(一)

    转自:https://blog.csdn.net/hguisu/article/details/39373311 1.前言简介 1.1.影响Linux服务器性能的因素 1. 操作系统级 性能调优是找出 ...

  6. Linux服务器性能评估与优化(一)

    1.前言简介 一.影响Linux服务器性能的因素 1. 操作系统级 性能调优是找出系统瓶颈并消除这些瓶颈的过程. 很多系统管理员认为性能调优仅仅是调整一下内核的参数即可解决问题, 事实上情况并不是这样 ...

  7. AIX系统CPU监控与评估

    AIX系统CPU监控与评估 一, VMSTAT命令(CPU) 1.1 cpu 1.2 kthr(内核等待) 1.3 faults故障 1.4 memory(内存) 1.5 page磁盘交换 二, io ...

  8. 服务器系统架构的评估,系统架构师:性能评估

    2.5.4性能评估 性能评估是为了一个目的,按照一定的步骤,选用一定的度量项目,通过建模和实 验,对一个系统的性能进行各项检测,对测试结果作出解释,并形成一份文档的技术. 性能评估的一个目的是为性能的 ...

  9. 建立更好的性能评估系统步骤3,确定平台供应商

    识别平台/供应商 (Identify the Platform / Vendor) If you are in the position of rolling out a new performanc ...

最新文章

  1. angularjs php上传文件,AngularJS 文件上传 的功能你了解的多少?几分钟就让你了解angularjs的文件上传...
  2. 中国无人车公司AutoX,打响加州RoboTaxi服务第一枪
  3. WinDbg !locks 不可用的问题
  4. eventfd和timerfd
  5. eclipse启动tomcat错误:A Java Exception has occurred(转)
  6. linux获取ip地址的接口,获取Linux上接口的IP地址
  7. undo_management设置与隐含参数*._offline_rollback_segments和*._corrupted_rollback_segments关系...
  8. android 动态生成直线,Android使用自定义view在指定时间内匀速画一条直线的实例代码...
  9. LINQ to Entities 比较日期
  10. 改 主机名 后 虚拟机 不能启动
  11. Glide图片框架使用详细介绍(一),kotlin从入门到进阶实战电子书
  12. JAVA的学习(在IDEA环境下)
  13. henauOJ055(猴子吃桃)
  14. 数字化转型:为何数字化?如何数字化转型?
  15. 算法(并查集--合并集合)
  16. 张浩java成绩大于98分_1028学习
  17. 用python画出二叉树_Python与二叉树定价建模,像奇异博士一样推演未来并做出正确的选择...
  18. zemax光学设计优化
  19. 天下布魔新手的6点游戏建议 教你快速入门的攻略
  20. 老男孩python006----- 磁盘分区与文件系统

热门文章

  1. t-SNE(t-distributed stochastic neighbor embedding)
  2. SpringBootSpring --- Redis 集成 Error creating bean with name 'enableRedisKeyspaceNotificationsIniti
  3. [PHP] 现代化PHP之路:composer的镜像站设置
  4. [PHP] 现代化PHP之路:composer的安装和升级
  5. centos6.6上安装beef
  6. 在ASP.NET MVC中加载部分视图的方法及差别
  7. 建立自己的git账户并保存资料的重要性
  8. 【miscellaneous】IP多播技术及其编程
  9. Python之路_Day13
  10. Android之webView入门