6、r%d 103 ODD* <5123 RindiSm. ■\Vr:e卯S嚴匸旳=』曰
叫
Twcw ytmoiyRjmSam
SSD
ZOO.COC 4KBA>.itomR?rfWt* 1 口PS^
FC :耐幣SaM
OCZ 日帕 Z-C-^ve R4
星SO
53D
Ua IS iw.coo SPS IK1
Tg柬 Mfenwy Sysztrns RinSafr 030Ap?aaflct
sso
l.fflK KO* £KE HMIddHnRMd.^Y-te :6卸’
祀 NfifiiiiE>nd
FuiiHMg ?Ow Qdi' i> ng* PC-:
7、U-nli
SSD
1.150 QW* 4?腫譏V*? IOPS122
OGZ 血闘 pif&沁 Zdvt 砒 PCb 藝9也SSC
SSD
Wto 5.3JO.MaiO?5―
Tms F^emwySyHe^s RanSaoTfl
S5D
1^0 DM Rartwi 樹嚴
PCfi
注:上表源自維基百科 在AIX中,對于同一個磁盤(或者LUN),隨著每次I/O讀寫數(shù)據(jù)的大小不通, IOPS的數(shù)值也不是固定不變的。例如,每次I/O寫入或者讀出的都是連續(xù)的大 數(shù)據(jù)塊,此時IOPS相對會低一些;在不頻繁換道的情況下,每次寫入或者讀出 的數(shù)據(jù)塊小,相對來講IOPS就會高
8、一些。
I/O讀寫的類型
大體上講,I/O的類型可以分為:讀/寫I/O、大/小塊I/O、連續(xù)/隨機I/O, 順序/并發(fā)I/O。在這幾種類型中,我們主要討論一下:大/小塊I/O、連續(xù) /隨機I/O,順序/并發(fā)I/O。
大/小塊I/O
這個數(shù)值指的是控制器指令中給出的連續(xù)讀出扇區(qū)數(shù)目的多少。如果數(shù)目較多, 如64, 128等,我們可以認為是大塊I/O;反之,如果很小,比如4, 8,我們 就會認為是小塊I/O,實際上,在大塊和小塊I/O之間,沒有明確的界限。
連續(xù)/隨機I/O
連續(xù)I/O指的是本次I/O給出的初始扇區(qū)地址和上一次I/O的結(jié)束扇區(qū)地址 是完全連續(xù)或者相隔不多的。反之,如果相
9、差很大,則算作一次隨機I/O
連續(xù)I/O比隨機I/O效率高的原因是:在做連續(xù)I/O的時候,磁頭幾乎不用 換道,或者換道的時間很短;而對于隨機I/O,如果這個I/O很多的話,會導(dǎo) 致磁頭不停地換道,造成效率的極大降低。
順序/并發(fā)I/O
從概念上講,并發(fā)I/O就是指向一塊磁盤發(fā)出一條I/O指令后,不必等待它回 應(yīng),接著向另外一塊磁盤發(fā)I/O指令。對于具有條帶性的RAID(LUN),對其 進行的I/O操作是并發(fā)的,例如:raid0+l(l+0),raid5等。反之則為順序I/O。
磁盤I/O性能的監(jiān)控
監(jiān)控磁盤的I/O性能,我們可以使用AIX的系統(tǒng)命令,例如:sar-d, iostat,
10、 topas, nmon等。下面,我將以nmon和topas為例,講述在系統(tǒng)中如何觀察 磁盤I/O的性能。
t opas
登錄AIX操作系統(tǒng),輸入topas,然后按D,會出現(xiàn)如下界面:
Disk
flus護
KBP3
TP^S
KB-R
ART
sat
kB-W
AWT
Mar
ACW
AGU
hdiskO
SrO
78.0K
19.5
0.0
0.0
0.0
78.0K
20.3
65.1
e.s
0.0
MtaUZ
卩衛(wèi)
6 口
4 口
SCI
6口
6 口
4口
s 口
m 口
hdiskl
0.0;
11、0.0
口?口
0.0
0.0
El.tJ
0.0
0.0
0.0
D?D
0.0
0.0
Q.O
0.0
0.0
D.O
0.D
0,0
D,0
D.D
□ eD
0,0
hdiskS
D.O
口?D
O.D
6.D
□ ?口
O-a
O.0
0.0
□?D
0』
hdiak^
0.0
OK
0?£
0.0
0.0
CLCi
2.0K
0.9
0.9
0?Q
0.0
在上圖中,TPS即為磁盤的IOPS, KBPS即為磁盤每秒的吞吐量。由于服務(wù)器處 于空閑的狀態(tài),我們可以看到I OPS, KBP
12、S的數(shù)據(jù)都非常低。
我們使用dd if命令向磁盤hdisk2發(fā)讀I/O,block大小為1MB:
# drf if =/dev/rhdisk2 af=/d已丄丄 bs=1024k£
[1] 1O485£BO
利用topas進行監(jiān)控:
此時,hdisk2的吞吐量為163.9M, IOPS為655。
我們再啟動一個dd if,使hdisk的busy數(shù)值達到100%:
甘 dd xf-/dev/chdxsk2 j bs-iO£^k£
[2] 111^1343
Topss ttomtoE ior host:.
p740 01 hebmg
ataniEn 2
13、Kon Dec 1^ 17:10:£3
2011
l*i3k
Jusy%
KBPS
TPS
KB-R
AKT
KRT
Kfi-?
JlHT
HUT
XQV
AQD
h日乙屮號2
ioo.D
30^,1H
1 PZK
304.in
5,6
斗4 3
0.0
0.0
0,0
0, 1
0.0
hdisSO
3.S
3D.OK
7x5
0.0
0.0
0.0
30.0K
4-1
S.S
c.o
0.0
hd&Sfcl
0,0
0.0
0.0
0,0
0.0
?!隹?
0.0
a.o
0.0
0.0
0.0
14、
h >iisk3
0.0
0.0
0x0:
0.0
0B0
0.0
0.0
0?0
0.0
O.D
0.0
0,0
OrO
OrO
0.0
0r0
0.0
OrO
O.Q
0.0
0,0
OrO
hdisk4
O.D
0.0
DuO
0.0
0.0
O.D
0.0
0.0
OuO
0.0
0.0
從上圖可以看出,在磁盤busy達到100%的時候,其吞吐量為304.1M,I0PS為 1200。
hdisk2是本地集成的SAS盤,我們可以查出本地集成SAS通道的帶寬為3Gb:
1 grep -i sas
15、
hdislcO
Available
oo-OS-00
車血條Disk Drive
hd islc5
00^0&-D0
SAS RA1(? 0 SSD Array
pdisko
ivAiiaUlt
□0"05"00
Physical 3AS 丄丄d Stitt rrivt
3B.3 0
IvaiLHble
oo-aa-oo
Control丄耳匸 SAS Frotacol
Available
00-0&-00
SAS Enclosure Services Devi.ce
sf
Im
oo-oa-oa-rr
SAS Storage Franewcr
16、lc Conm
sissasd
JtvailAble
~OO
17、以得到此時磁盤hdisk2吞吐量為318M。
使用nmon收集一個時間段的數(shù)據(jù),然后使用nmon analyzer進行分析,可以 得出更為直接的圖表:
X nmon -F OnlyFortest -s 5 -u 100
將收集好的nmon文件使用nmon analyzer進行分析,得出如下報表:
圖2.nmon圖表顯示磁盤性能
磁盤I/O性能調(diào)優(yōu)
確認磁盤I/O存在性能問題
對于隨機負載,當遇到余下情況時,我們那通常認為存在I/O性能問題:
1. 平均讀時間大于15ms
2. 在具有寫cache的條件下,平均寫時間大于2.5ms
對于順序負載,當遇到余下情況時,我們
18、那通常認為存在I/O性能問題:
1. 在一個磁盤上有兩個連續(xù)的I/O流
2. 吞吐量不足(即遠遠小于磁盤I/O帶寬)
對于一塊磁盤來講,隨著IOPS數(shù)量的增加,I/O service也會增加,并且會有 一個飽和點,即IOPS達到某個點以后,IOPS再增加將會引起I/O service time 的顯著增加。
圖3.磁盤IOPS與IO service time關(guān)系圖
1OPSA5 lO^rii
19、數(shù)值。如果I0PS和吞吐量均很低,磁盤的busy%也很低,我們 會認為磁盤壓力過小,造成吞吐量和IOPS過低;只有在I0PS和吞吐量均很低, 磁盤的busy%很高(接近100%)的時候,我們才會從磁盤I/O方面分析I/O性 通過調(diào)整AIX參數(shù)改善磁盤I/O性能 在AIX系統(tǒng)中,有關(guān)磁盤I/O性能相關(guān)的參數(shù)我們主要調(diào)整的參數(shù)如下圖:
圖4.AIX常見的磁盤I/O性能參數(shù)
Fib「日SAM 1山加殛
dynlrk
fc err recov
FCS
HDISK
RMT:SMC
num cmd e!ems
queue depth
alt pathing
max xfer
20、size
max transfer
需要注意的是,下面幾個參數(shù)的調(diào)整值,只是經(jīng)驗數(shù)值;對于不同的應(yīng)用,不同 的場景,應(yīng)具體情況具體分析。
調(diào)整I/O隊列長度 queue_depth是AIX —次可以傳送到磁盤設(shè)備的命令的數(shù)量,把命令放在隊列 中再傳送給磁盤可以提高I/O性能。AIX中定義的每個磁盤在ODM庫中都有 queue_depth屬性。這個屬性限制了 AIX可以傳送到設(shè)備的最大命令的數(shù)量。
queue_depth默認數(shù)值為4
queue_depth 4 raid level 0
將hdisk2的隊列長度從16調(diào)整為64:
:[ro口匕凰上3:
21、丄£注匕匸工-El hdis)c2 | -i queue
匕 no
已 ue_depxih 64
「T-ci-kRaLwz+w"
max_transfer 參數(shù)
這個參數(shù)的含義是,存儲driver可以向存儲發(fā)的最大的I/O。通過增加 max_transfer的數(shù)值,我們可以允許VG的LTG的數(shù)值更大。
這個參數(shù)我們可以從64M調(diào)整到128M。
[raot:@at3ni3:/] -1 hdisk2 -a irax^ttansfern0x080000 -P
bidiakE changed
{匸 ddtg曰j 1薛attr -Cl hdizkE || -i r ansi er
22、
nm_CCHnsiet I DxCi調(diào)QD口 I 血耳unupi TRAJSSrER Size Ttue
Itaoi曲t苦nl聖門■
光纖卡num_cmd_elems參數(shù)
如果是通過光纖卡連接的外置存儲,可以考慮調(diào)整num_cmd_elems,這個參數(shù)的 作用是:controls maximum number of in-flight Ios
這個參數(shù)的默認值為500,我們將其修改為1000:
L/] trhdfV -I ftsO -ft. uutn ctod c lemd" 100D -P
fcsO ch&UQtd
Jroot&Atan£a:/]_13attr -£1 igr
23、ep -i nuft^ctud^cittus
nu&_?rf_eLcm Xakimw of &訊皿孫 to quw to the True 光纖卡 max_xfer_size 參數(shù) :attribute also controls a DMA memory area used to hold data for transfer, and at the default is 16 MB. 這個參數(shù) 是控制DMA區(qū)域的,用于保持傳輸?shù)臄?shù)據(jù)的的區(qū)域,它的默認值是16MB,可以 把這個數(shù)值調(diào)整成128MB,這樣光纖卡的帶寬會高一些?
[rootSatsnis: 7] chdev -1 icsO -
24、a aak zfer a izt-Ox 800000 -P
fcao changed
El 色卩-1 TEAK XfCt
mx xitrr siiti 0x800000
■ ■ 1 ■
Tranujier Sue
True
FSCSI設(shè)備
對于FSCSI設(shè)備而言,我們可以通過設(shè)置參數(shù):dyntrk和fc_err_recov來達 到路徑快速切換的目的:This sets the adapters to fast fail over and reduces the amount of time required to select a new data path.
25、
# chdev -I f4C310 -a dyntrk=ye5 fc err recov-tast fail
修改完畢以后,榮如下命令進行確認:
# lsattr -El £scsiO
Hour chi^ adapter is CONNECTED Dymutaic Track 1 nj of TC Devices
False
True
pt cat li dyntrk
yes
±c err recov
"wr
f ast_±al^(
[FC Fabcic Event Error RECOVERY
PolicyTtuel
\sw £e class
I _
Adapter SCSI ID
FC Clasfs for F abr ic
-fal3t Ttu亡
總結(jié) 在AIX下調(diào)整磁盤I/O性能是一個相對復(fù)雜的工作,參數(shù)的數(shù)值往往是根據(jù)環(huán) 境的變化而不通。這就要求我們在熟悉磁盤I/O性能架構(gòu)的基礎(chǔ)上,靈活調(diào)整。