queue_depth 是AIX 一次可以傳送到磁盤設備的命令的數量,把命令放在隊列中再傳送給磁盤可以提高I/O 性能。
AIX 中定義的每個磁盤在ODM 庫中都有queue_depth屬性。這個屬性限制了AIX 可以傳送到設備的最大命令的數量。通常這個值是由磁盤設備廠商來確定的,並且數值做爲設備支持包的一部分存放在PdAt 庫中。
如果在安裝存儲設備的時候,AIX 沒有找到正確的ODM 定義,它將使用通用的磁盤ODM 定義。通用定義的queue_depth 是1,這意味着AIX 每次只能送一個命令到設備中,並將降低I/O 性能。
摘自IBM官方網站!
1、先用查看所有磁盤每兩秒的IO
# iostat 2System 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不是越大越好。