队列深度 queue_depth

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不是越大越好。


你可能感兴趣的:(Unix)