AIX系统磁盘IO性能评估

AIX系统磁盘IO性能评估... 2

一, 对磁盘IO的性能考虑, 裸设备优缺点分析... 2

1.1 对磁盘IO的性能考虑... 2

1.2 裸设备的优点... 2

1.3 裸设备的缺点... 2

二, IOSTAT工具使用... 3

2.1 参数与用法... 3

2.2 iostat报告解析... 6

三, sar –d看... 7

四, 使用lslv –l  lvname估逻辑卷的碎片情况... 8

五, 使用vmstat命令评估调页空间... 10

六, 使用filemon命令监控系统IO.. 10

6.1 filemon标记描述... 11

6.2 filemon报告解析... 11

七, 监视磁盘IO的小结... 12

 

 


AIX系统磁盘IO性能评估
一, 对磁盘IO的性能考虑, 裸设备优缺点分析
1.1 对磁盘IO的性能考虑
1, 将频繁访问的文件系统和裸设备尽可能放置在不同的磁盘上.

2, 在建立逻辑卷时尽可能使用mklv的命令开关给不同的文件系统和裸设备赋予不同的内策略.

3, 使用磁盘设备驱动器的功能属性构建合适的RAID方式, 以获得更高的数据安全性和存取性能. 一般考虑采用RAID5或者RAID10的方式, 对于写要求比较高的系统, 一般建议采用RAID10方式.

4, 尽可能利用内存读写带宽远比直接磁盘IO操作性能优越的特点, 使频繁访问的文件或数据置于内存中进行操作处理.

1.2 裸设备的优点
由于忽略了文件系统缓冲器而直接读写, 从而具有更好的性能. 对磁盘的直接读写就意味着取消了磁盘与文件系统的同步要求. 这一点对于纯OLTP系统非常有用, 因为在这种系统中, 读写的随机性非常大以至于一旦数据被读写之后,它们在以后的较长一段时间内不会得到再次使用. 除了OLTP, raw设备还能够从以下几个方面改善DSS应用程序性能.

排序: 由于对临时表空间的写作数据更快, 所以对排序也有一定的好处.

序列号访问: 比如对表,索引的完全扫描等序列化操作, 这种速度会更快.

直接读写: 不需要经过OS级的缓存, 节约了内存资源, 在一定程度上避免了内存的争用.

避免了OS的cache预读功能, 减少了IO.

采用裸设备避免了文件系统的开销. 比如维护I-node, 空闲块等.

1.3 裸设备的缺点
1, 裸设备的空间管理不灵活, 需要预先规划好裸设备上的空间使用, 还应当保留一部分裸设备以应付突发情况. 这是对空间的浪费.

2, 很多备份工具对裸设备的支持不足, 导致备份的操作方式比较原始, 麻烦.

 

 

 

 

 

二, IOSTAT工具使用
    Iostat主要用来报告中央处理器(CPU)统计信息和整个系统, 适配器, tty设备, 磁盘和CD-ROM的输入输出统计信息. Iostat的一个缺点是它不能对某个进程进行深入分析.仅对系统的整体情况进行分析.

2.1 参数与用法
   iostat [ -s ] [ -a ] [ -d | -t ] [ -T ][ -m ][ PhysicalVolume ... ] [ Interval [ Count ] ]

1. 其中-s为显示系统信息.

   # iostat -s

 

System configuration: lcpu=4 drives=11 paths=2 vdisks=0

 

tty:      tin         tout    avg-cpu: % user % sys % idle % iowait

          0.0          2.7                0.8   0.3   98.7      0.2

 

System: i2db

                           Kbps      tps    Kb_read   Kb_wrtn

                         200.7       4.6   1526558379  1603904240

 

Disks:        % tm_act     Kbps      tps    Kb_read   Kb_wrtn

hdisk0           0.3       3.0       0.6   20332313  27206892

hdisk1           0.0       0.0       0.0       3157         0

dac0             0.0     197.7       4.0   1506222909  1576697348

dac0utm          0.0       0.0       0.0          0         0

hdisk2           0.0       0.0       0.0          0         0

hdisk3           0.0       0.0       0.0          0         0

hdisk4           0.0       0.0       0.0          0         0

hdisk5           0.7     197.7       4.0   1506222909  1576697348

hdisk6           0.0       0.0       0.0          0         0

hdisk7           0.0       0.0       0.0          0         0

cd0              0.0       0.0       0.0          0         0

2, -d标志不能和-t标志合用, 且仅仅显示磁盘使用率报告.

# iostat -d

 

System configuration: lcpu=4 drives=11 paths=2 vdisks=0

 

Disks:        % tm_act     Kbps      tps    Kb_read   Kb_wrtn

hdisk0           0.3       3.0       0.6   20332317  27207032

hdisk1           0.0       0.0       0.0       3157         0

dac0             0.0     197.7       4.0   1506222913  1576700356

dac0utm          0.0       0.0       0.0          0         0

hdisk2           0.0       0.0       0.0          0         0

hdisk3           0.0       0.0       0.0          0         0

hdisk4           0.0       0.0       0.0          0         0

hdisk5           0.7     197.7       4.0   1506222913  1576700356

hdisk6           0.0       0.0       0.0          0         0

hdisk7           0.0       0.0       0.0          0         0

cd0              0.0       0.0       0.0          0         0

3, -a 显示适配器吞吐量报告

# iostat -a

 

System configuration: lcpu=4 drives=11 paths=2 vdisks=0

 

tty:      tin         tout    avg-cpu: % user % sys % idle % iowait

          0.0          2.7                0.8   0.3   98.7      0.2

 

Adapter:                   Kbps      tps    Kb_read   Kb_wrtn

sisscsia0                  3.0       0.6   20335478  27207108

 

Disks:              % tm_act     Kbps      tps    Kb_read   Kb_wrtn

hdisk0                 0.3       3.0       0.6   20332321  27207108

hdisk1                 0.0       0.0       0.0       3157         0

 

Adapter:                   Kbps      tps    Kb_read   Kb_wrtn

fcs0                     197.7       4.0   1506222913  1576701580

 

Disks:              % tm_act     Kbps      tps    Kb_read   Kb_wrtn

dac0                   0.0     197.7       4.0   1506222913  1576701580

hdisk2                 0.0       0.0       0.0          0         0

hdisk3                 0.0       0.0       0.0          0         0

hdisk4                 0.0       0.0       0.0          0         0

hdisk5                 0.7     197.7       4.0   1506222913  1576701580

hdisk6                 0.0       0.0       0.0          0         0

hdisk7                 0.0       0.0       0.0          0         0

 

Adapter:                   Kbps      tps    Kb_read   Kb_wrtn

vsa0                       0.0       0.0          0         0

 

Disks:              % tm_act     Kbps      tps    Kb_read   Kb_wrtn

dac0utm                0.0       0.0       0.0          0         0

 

Adapter:                   Kbps      tps    Kb_read   Kb_wrtn

ide0                       0.0       0.0          0         0

 

Disks:              % tm_act     Kbps      tps    Kb_read   Kb_wrtn

cd0                    0.0       0.0       0.0          0         0

4, -t标记排除了-d标记且仅显示tty和cpu的用法报告

# iostat -t

 

System configuration: lcpu=4

 

tty:      tin         tout    avg-cpu: % user % sys % idle % iowait

          0.0          2.7                0.8   0.3   98.7      0.2

5, -T 打印iostat输出的每一行边上的时间戳记,

# iostat -T

System configuration: lcpu=4 drives=11 paths=2 vdisks=0

 

tty:      tin         tout    avg-cpu: % user % sys % idle % iowait  time

          0.0          2.7                0.8   0.3   98.7      0.2  11:44:48

 

Disks:        % tm_act     Kbps      tps    Kb_read   Kb_wrtn  time

hdisk0           0.3       3.0       0.6   20332325  27207328  11:44:48

hdisk1           0.0       0.0       0.0       3157         0  11:44:48

dac0             0.0     197.7       4.0   1506222925  1576705176  11:44:48

dac0utm          0.0       0.0       0.0          0         0  11:44:48

hdisk2           0.0       0.0       0.0          0         0  11:44:48

hdisk3           0.0       0.0       0.0          0         0  11:44:48

hdisk4           0.0       0.0       0.0          0         0  11:44:48

hdisk5           0.7     197.7       4.0   1506222925  1576705176  11:44:48

hdisk6           0.0       0.0       0.0          0         0  11:44:48

hdisk7           0.0       0.0       0.0          0         0  11:44:48

cd0              0.0       0.0       0.0          0         0  11:44:48

2.2 iostat报告解析
Iostat命令生成四种类型的报告, tty和cpu使用率报告, 磁盘使用率报告, 系统吞吐量报告和适配器吞吐量报告.

1, tty和cpu使用率报告

tty:      tin         tout    avg-cpu: % user % sys % idle % iowait  time

          0.0          2.7                0.8   0.3   98.7      0.2  11:44:48

对于多处理器系统, cpu值是所有处理器的总平均. 同时, IO等待状态是系统级定义的, 而不是每个处理器.

注释: tty是teletype的缩写.通常使用tty来简称各种类型的终端设备


 描述
 
Tin
 系统为所有tty读取的字符总数
 
Tout
 系统为所有tty写入的字符总数
 
% user
 用户使用cpu的时间百分比
 
% sys
 系统使用cpu的时间百分比
 
% idle
 Cpu空闲且系统没有未完成的io请求的时间百分比
 
% iowait
 Cpu空闲期间系统有未完成的磁盘io请求的时间百分比
 

每过一定的时间间隔, 内核就更新这条信息(一般每秒六十次). Tty报告提供了从系统中所有终端收到的每秒字符数, 以及每秒输出到系统所有终端的字符的总数.

2, 磁盘使用率报告

这个报告提供了在每个物理磁盘上的统计信息.


 描述
 
% tm_act
 物理磁盘处于活动状态的时间百分比
 
Kbps
 平均每秒传输(读或写)到驱动器的数据量
 
Tps
 传输次数, 也就是对物理磁盘的io请求次数
 
Kb_read
 读取的kb总数
 
Kb_wrtn
 写入的KB总数
 

3, 系统吞吐量报告

这个报告提供了针对系统的统计信息.


 描述
 
Kbps
 平均每秒传输(读或写)到系统的数据量
 
Tps
 传输次数, 也就是对系统的io请求次数
 
Kb_read
 读取的kb总数
 
Kb_wrtn
 写入的KB总数
 

4, 适配器吞吐量报告

这个报告提供了针对适配器的统计信息.


 描述
 
Kbps
 平均每秒传输(读或写)到适配器的数据量
 
Tps
 传输次数, 也就是对适配器的io请求次数
 
Kb_read
 读取的kb总数
 
Kb_wrtn
 写入的KB总数
 

 

三, sar –d看
搜集, 报告, 或者保存系统活动信息

# sar -d 1 1

 

AIX i2db 3 5 00CC886E4C00    07/10/09

 

System configuration: lcpu=4 drives=11

 

09:42:23     device    %busy    avque    r+w/s    Kbs/s   avwait   avserv

 

09:42:24     hdisk0      0      0.0        0        0      0.0      0.0

             hdisk1      0      0.0        0        0      0.0      0.0

               dac0      0      0.0        0        0      0.0      0.0

            dac0utm      0      0.0        0        0      0.0      0.0

             hdisk2      0      0.0        0        0      0.0      0.0

             hdisk3      0      0.0        0        0      0.0      0.0

             hdisk4      0      0.0        0        0      0.0      0.0

             hdisk5      0      0.0        0        0      0.0      0.0

             hdisk6      0      0.0        0        0      0.0      0.0

             hdisk7      0      0.0        0        0      0.0      0.0

                cd0      0      0.0        0        0      0.0      0.0


 描述
 
Device
 设备名称
 
%busy
 磁盘活动占时间百分比  对应% tm_act
 
Avque
 磁盘活动时间内未完成的请求的平均值,该值较高表明存在IO瓶颈
 
R+W/S
 对应tps, 报告从一个设备读和写数据的次数
 
Blks/s
 以0.5KB为单位的传输数据量
 
Avwait
 总是设置为0.0
 
Avserv
 总是设置为0.0
 

 

四, 使用lslv –l  lvname估逻辑卷的碎片情况
1,显示卷组列表:

# lsvg

rootvg

rootvg1

datavg

2, 查看卷组的逻辑卷组成

# lsvg -l datavg

datavg:

LV NAME             TYPE       LPs   PPs   PVs  LV STATE      MOUNT POINT

loglv00             jfs2log    1     1     1    open/syncd    N/A

fslv03              jfs2       720   720   1    open/syncd    /oradata

3, 显示某个逻辑卷的信息

# lslv fslv03

LOGICAL VOLUME:     fslv03                 VOLUME GROUP:   datavg

LV IDENTIFIER:      00cc886e00004c00000001153b9e95c7.2 PERMISSION:     read/write

VG STATE:           active/complete        LV STATE:       opened/syncd

TYPE:               jfs2                   WRITE VERIFY:   off

MAX LPs:            720                    PP SIZE:        128 megabyte(s)

COPIES:             1                      SCHED POLICY:   parallel

LPs:                720                    PPs:            720

STALE PPs:          0                      BB POLICY:      relocatable

INTER-POLICY:       minimum                RELOCATABLE:    yes

INTRA-POLICY:       middle                 UPPER BOUND:    32

MOUNT POINT:        /oradata               LABEL:          /oradata

MIRROR WRITE CONSISTENCY: on/ACTIVE                             

EACH LP COPY ON A SEPARATE PV ?: yes                                   

Serialize IO ?:     NO 

4, 显示每个逻辑卷由哪些物理分区组成

# lslv -m fslv03|head

fslv03:/oradata

LP    PP1  PV1               PP2  PV2               PP3  PV3

0001  0162 hdisk5           

0002  0163 hdisk5           

0003  0164 hdisk5           

0004  0165 hdisk5           

0005  0166 hdisk5           

0006  0167 hdisk5           

0007  0168 hdisk5           

0008  0169 hdisk5   

 

5, 评估逻辑卷的碎片情况

# lslv -l fslv03

fslv03:/oradata

PV                COPIES        IN BAND       DISTRIBUTION 

hdisk5            720:000:000   22%           160:159:159:160:082


 描述
 
PV
 物理卷名称
 
Copies
 三个字段分别代表

  720: 在物理卷上至少包含一个物理分区的逻辑分区的数量

  0: 在物理卷上至少包含两个物理分区(一个副本)的逻辑分区数量

  0: 在物理卷上至少包含两个物理分区(两个副本)的逻辑分区数量
 
In band
 物理卷上物理分区的百分比. 此物理卷属于逻辑卷, 且分配在由物理内分配策略指定的物理卷中
 
Distribution
 分配在物理卷每个区域内: 160:159:159:160:082

外部边缘(160), 外部中间(159), 中间(159), 内部中心(160),内部边缘(182)的物理分区数目.
 
对于该例中的结果说明:

Copies显示逻辑卷fslv03只复制了一份.

In Band显示了内策略是如何遵循的. 这个百分比越高, 分配效率就越好.

Distribution显示, 逻辑卷fslv03总共有720个逻辑分区, 外部边缘(160), 外部中间(159), 中间(159), 内部中心(160),内部边缘(182). In band = 159/720 = 22%.


6, 查看卷组的物理卷组成

# lsvg -p datavg

datavg:

PV_NAME           PV STATE          TOTAL PPs   FREE PPs    FREE DISTRIBUTION

hdisk5            active            799         78          00..00..00..00..78

五, 使用vmstat命令评估调页空间
# vmstat -s

293967066 total address trans. Faults: 地址翻译错误, 每次发生地址转换页面故障时增加.

383887108 page ins: 入页: 随虚拟内存管理器读入的每页增加. 计数随调页空间和文件空间的入页增加. 它和出页统计信息一起表示实际IO总量.

398373792 page outs

4197657 paging space page ins: 调页空间入页, 只随VMM启动的来自调页空间的入页而增加.

4351404 paging space page outs

0 total reclaims

237662205 zero filled pages faults

222070 executable filled pages faults

1399248325 pages examined by clock

1487 revolutions of the clock hand

518506491 pages freed by the clock

4249427 backtracks

420362 free frame waits

0 extend XPT waits

16247685 pending I/O waits

782289679 start I/Os

69941471 iodones

3375131147 cpu context switches

381625154 device interrupts

814614929 software interrupts

2805794153 decrementer interrupts

410037 mpc-sent interrupts

410037 mpc-receive interrupts

1677224 phantom interrupts

0 traps

24457805147 syscalls

六, 使用filemon命令监控系统IO
监视文件系统的性能, 并且报告代表逻辑文件, 虚拟内存段, 逻辑卷和物理卷的IO活动.

filemon [ -d ] [ -i Trace_File -n Gennames_File] [ -o File] [ -O Levels] [ -P ] [ -T n] [ -u ] [ -v ]

6.1 filemon标记描述
-I

-o file 写IO活动报告到指定的File, 而不是到stdout文件.

-d 启动filemon命令, 但是一直推迟跟踪直到用户执行trcon命令. 默认立刻启动.

-T n 设置内核的跟踪缓冲区大小为n字节. 缺省值32000字节.

-O levels 只监控指定的文件系统级别. 有效的级别标识是

Lf 逻辑文件级别

Vm 虚拟内存级别

Lv 逻辑卷级别

Pv 物理卷级别

All lf,vm,lv,pv的简单表示

6.2 filemon报告解析
1,最活动的文件报告


 描述
 
#MBS
 从文件中传输的数据总量, 递减排序
 
#opns
 在评估周期内, 文件被打开的次数
 
#Rds
 对文件的系统读取调用数目
 
#wrs
 对文件的系统写入调用数目
 
File
 文件名
 
Volume:inode
 
 

2,最活动的段报告


 描述
 
#MBS
 从段中传输的数据总量, 递减排序
 
#rpgs
 从磁盘读入到段的那些4KB的页的数目
 
#wpgs
 
 
Segid
 段的内部标识
 
Segtype
 输入段: 工作段, 持久段, 客户机段, 页面表段, 系统段或者特殊的永久段
 
Volume:inode
 
 

3,最活动的逻辑卷报告


 描述
 
Util
 卷的使用情况(忙的时间片)
 
#rblk
 从卷中读入的512字节的块的数目
 
#wblk
 
 
Kb/sec
 总共的传输吞吐量
 
Volume
 卷的名称
 

 

3,最活动的物理卷报告


 描述
 
Util
 卷的使用情况(忙的时间片)
 
#rblk
 从卷中读入的512字节的块的数目
 
#wblk
 
 
Kb/sec
 总共的传输吞吐量
 
Volume
 卷的名称
 

七, 监视磁盘IO的小结
一般来说, 高的%iowait表明系统存在一个应用程序问题, 缺少内存问题或低效的IO子系统配置. 例如, 应用程序的问题可能是由于过多的IO请求而不是处理许多数据. 理解IO瓶颈并且要清楚解决瓶颈问题的关键在于提高IO子系统的效率. 一些典型的解决方案可能包括.

1, 限制在特定的物理盘上活动逻辑卷和文件系统的数目. 该方法是为了在所有的物理磁盘驱动器中平衡文件IO.

2, 在多个物理磁盘间展开逻辑卷. 该方法在当有一些不同的文件被存取时特别有用.

3, 为一个卷组创建多个 Journaled 文件系统(JFS)日志并且把它们分配到特定的文件系统中(最好在快速写高速缓存驱动器中)。这对应用程序创建、删除或者修改大量文件特别是临时文件来说十分有益。

4, 如果 iostat 命令的输出结果表明您的负载的 I/O 活动没有被均衡地分配到系统磁盘驱动器中,并且一个或多个磁盘驱动器的使用率经常在 70-80 之间或更高,您就得考虑重组文件系统,例如备份和恢复文件系统以便减少碎片。碎片将引起驱动器过多地搜索并且可能产生大部分响应时间过长。

5, 如果很大,I/O 增强的后台作业将涉及和相应时间交互,您可能希望激活I/O 调步。

6, 如果有迹象表明一小部分文件被一次又一次地读取,您可以考虑附加的实存是否允许那些文件更加有效地缓存。

7, 如果负载的存取模式是随机占主导地位,您可能要考虑增加磁盘并把按那些随机存取的文件分布到更多的磁盘中。

8, 如果负载的存取模式是顺序占主导地位并且涉及多个磁盘驱动器,您可能要考虑增加一个或多个磁盘适配器。您也可以适当地考虑构建一个条带状逻辑卷来适应大型并且性能关键的顺序文件。

9, 使用快速写高速缓存设备。

10, 使用异步 I/O。

posted on 2010-04-05 14:16  一江水  阅读(11851)  评论(0编辑  收藏  举报