queue_depth 是AIX 一次可以传送到磁盘设备的命令的数量,把命令放在队列中再传送给磁盘可以提高I/O 性能。
AIX 中定义的每个磁盘在ODM 库中都有queue_depth属性。这个属性限制了AIX 可以传送到设备的最大命令的数量。通常这个值是由磁盘设备厂商来确定的,并且数值做为设备支持包的一部分存放在PdAt 库中。
如果在安装存储设备的时候,AIX 没有找到正确的ODM 定义,它将使用通用的磁盘ODM 定义。通用定义的queue_depth 是1,这意味着AIX 每次只能送一个命令到设备中,并将降低I/O 性能。
摘自IBM官方网站!
1、先用查看所有磁盘每两秒的IO
# iostat 2
System configuration: lcpu=8 drives=4 ent=2.00 paths=6 vdisks=1
tty: tin tout avg-cpu: % user % sys % idle % iowait physc % entc
0.0 33.5 9.7 13.2 70.9 6.1 0.5 24.0
Disks: % tm_act Kbps tps Kb_read Kb_wrtn
hdisk3 77.0 27674.0 3734.5 55332 16
hdisk2 0.0 0.0 0.0 0 0
hdisk0 0.0 0.0 0.0 0 0
hdisk4 0.0 0.0 0.0 0 0
2、针对IO大的单独监控
# iostat -D hdisk3 2
System configuration: lcpu=8 drives=4 paths=6 vdisks=1
hdisk3 xfer: %tm_act bps tps bread bwrtn
70.5 24.7M 4219.4 24.6M 59.4K
read: rps avgserv minserv maxserv timeouts fails
4212.9 1.2 0.1 24.2 0 0
write: wps avgserv minserv maxserv timeouts fails
6.5 0.7 0.4 1.4 0 0
queue: avgtime mintime maxtime avgwqsz avgsqsz sqfull
0.0 0.0 0.2 0.0 5.0 90.0
--------------------------------------------------------------------------------
hdisk3 xfer: %tm_act bps tps bread bwrtn
73.5 33.7M 5223.0 33.7M 30.7K
read: rps avgserv minserv maxserv timeouts fails
5220.5 1.3 0.1 24.2 0 0
write: wps avgserv minserv maxserv timeouts fails
2.5 0.7 0.4 1.4 0 0
queue: avgtime mintime maxtime avgwqsz avgsqsz sqfull
0.0 0.0 0.2 0.0 6.0 110.0
--------------------------------------------------------------------------------
发现sqfull队列较多
3、查看此盘的详细参数
# lsattr -El hdisk3
PCM PCM/friend/fcpother Path Control Module False
algorithm fail_over Algorithm True
clr_q no Device CLEARS its Queue on error True
dist_err_pcnt 0 Distributed Error Percentage True
dist_tw_width 50 Distributed Error Sample Time True
hcheck_cmd inquiry Health Check Command True
hcheck_interval 60 Health Check Interval True
hcheck_mode nonactive Health Check Mode True
location Location Label True
lun_id 0x1000000000000 Logical Unit Number ID False
max_transfer 0x40000 Maximum TRANSFER Size True
node_name 0x50060160bb2051bb FC Node Name False
pvid 00c5de15e20c62760000000000000000 Physical volume identifier False
q_err yes Use QERR bit True
q_type simple Queuing TYPE True
queue_depth 8 Queue DEPTH True
reassign_to 120 REASSIGN time out value True
reserve_policy single_path Reserve Policy True
rw_timeout 30 READ/WRITE time out value True
scsi_id 0x50f00 SCSI ID False
start_timeout 60 START unit time out value True
unique_id 3521360060160AC9128008E97701A4063E11106RAID 503DGCfcp Unique device identifier False
ww_name 0x5006016d3b2051bb FC World Wide Name False
4、修改队列深度(需要取消挂载才能修改)
# chdev -l hdisk3 -a queue_depth=64
********************************************************************
因为H3C的工程师调整了queue_depth的值,变化很大,所以找下资料看下相关的信息,找到一篇很好的文章,转下
queue_depth是指hdisk层面上命令队列的深度
它针对的是hdisk,如果有多路径软件的话,它针对的就是多路径的hdisk,如powerdisk,dlmfdrv。
那如何调整queue_depth?何时调整呢?
首先我们来讲讲如何调整:
queue_depth的调整是针对hdisk层面的,对有多路径的系统对应的是多路径的盘,比如hdiskpower,dlmfdrv之类的。它是指hdisk层面的命令队列的长度。
对不同的系统均有不同的默认值。在Aix上面,hds默认是2。
如何判断是否需要调整queue_depth呢?
在aix5.3上面可以用iostat -D来查看。
其中sqfull表示的是自系统启动以来queue_depth超出的次数。
如何查看queue_depth的值呢?
lsattr”>lsattr -El hdisk100
queue_depth 2 Queue DEPTH True
如何修改queue_depth的值呢?
chdev -l hdisk100 -a queue_depth=10
将queue_depth设置成多少呢?
这里有个简单的算法。
假如说底层raid group 是4d+4d,即8块盘。
现在15000rpm的fc盘的命令队列为16。8块盘总共的
列为16*8=128。
假如说这个raid group上面切了10个lun或ldev,则每个lun上面的queue_depth不要超过128/10=13。这个queue_depth不是越大越好。