IOPS (Input/Output Operations Per Second),,即每秒進行讀寫(I/O)操作的次數(shù),,多用于數(shù)據(jù)庫等場合,衡量隨機訪問的性能。存儲端的IOPS性能和主機端的IO是不同的,,IOPS是指存儲每秒可接受多少次主機發(fā)出的訪問,主機的一次IO需要多次訪問存儲才可以完成,。例如,,主機寫入一個最小的數(shù)據(jù)塊,也要經(jīng)過“發(fā)送寫入請求,、寫入數(shù)據(jù),、收到寫入確認(rèn)”等三個步驟,也就是3個存儲端訪問,。
IOPS兩大瓶頸編輯兩大瓶頸主要體現(xiàn)在2個方面:吞吐量與IOPS,。 IOPS吞吐量編輯吞吐量主要取決于陣列的構(gòu)架,光纖通道的大小(陣列一般都是光纖陣列,,至于SCSI這樣的SSA陣列,,我們不討論)以及硬盤的個數(shù),。陣列的構(gòu)架與每個陣列不同而不同,他們也都存在內(nèi)部帶寬(類似于pc的系統(tǒng)總線),,不過一般情況下,,內(nèi)部帶寬都設(shè)計的很充足,不是瓶頸的所在,。 光纖通道的影響還是比較大的,,如數(shù)據(jù)倉庫環(huán)境中,對數(shù)據(jù)的流量要求很大,,而一塊2Gb的光纖卡,,所能支撐的最大流量應(yīng)當(dāng)是2Gb/10(小B)=200MB/s(大B)的實際流量,當(dāng)5塊光纖卡才能達到1GB/s的實際流量,,所以數(shù)據(jù)倉庫環(huán)境可以考慮換4Gb的光纖卡,。 最后說一下硬盤的限制,這里是最重要的,,當(dāng)前面的瓶頸不再存在的時候,,就要看硬盤的個數(shù)了,我下面列一下不同的硬盤所能支撐的流量大?。?/div> 10 K rpm 15 K rpm ATA ——— ——— ——— 10M/s 13M/s 8M/s 那么,,假定一個陣列有120塊15K rpm的光纖硬盤,那么硬盤上最大的可以支撐的流量為120*13=1560MB/s,,如果是2Gb的光纖卡,,可能需要6塊才能夠,而4Gb的光纖卡,,3-4塊就夠了,。 IOPSIOPS編輯決定IOPS的主要取決于陣列的算法,cache命中率,,以及磁盤個數(shù),。陣列的算法因為不同的陣列不同而不同,如我們遇到在hds usp上面,,可能因為ldev(lun)存在隊列或者資源限制,,而單個ldev的iops就上不去,所以,,在使用這個存儲之前,,有必要了解這個存儲的一些算法規(guī)則與限制。 cache的命中率取決于數(shù)據(jù)的分布,,cache size的大小,數(shù)據(jù)訪問的規(guī)則,,以及cache的算法,,如果完整的討論下來,,這里將變得很復(fù)雜,可以有一天好討論了,。我這里只強調(diào)一個cache的命中率,,如果一個陣列,讀cache的命中率越高越好,,一般表示它可以支持更多的IOPS,,為什么這么說呢?這個就與我們下面要討論的硬盤IOPS有關(guān)系了。 硬盤的限制,,每個物理硬盤能處理的IOPS是有限制的,,如 10 K rpm 15 K rpm ATA ——— ——— ——— 100 150 50 同樣,如果一個陣列有120塊15K rpm的光纖硬盤,,那么,,它能撐的最大IOPS為120*150=18000,這個為硬件限制的理論值,,如果超過這個值,,硬盤的響應(yīng)可能會變的非常緩慢而不能正常提供業(yè)務(wù)。 在raid5與raid10上,,讀iops沒有差別,,但是,相同的業(yè)務(wù)寫iops,,最終落在磁盤上的iops是有差別的,,而我們評估的卻正是磁盤的IOPS,如果達到了磁盤的限制,,性能肯定是上不去了,。 那我們假定一個case,業(yè)務(wù)的iops是10000,,讀cache命中率是30%,,讀iops為60%,寫iops為40%,,磁盤個數(shù)為120,,那么分別計算在raid5與raid10的情況下,每個磁盤的iops為多少,。 raid5: 單塊盤的iops = (10000*(1-0.3)*0.6 + 4 * (10000*0.4))/120 = (4200 + 16000)/120 = 168 這里的10000*(1-0.3)*0.6表示是讀的iops,,比例是0.6,除掉cache命中,,實際只有4200個iops 而4 * (10000*0.4) 表示寫的iops,,因為每一個寫,在raid5中,,實際發(fā)生了4個io,,所以寫的iops為16000個 為了考慮raid5在寫操作的時候,,那2個讀操作也可能發(fā)生命中,所以更精確的計算為: 單塊盤的iops = (10000*(1-0.3)*0.6 + 2 * (10000*0.4)*(1-0.3) + 2 * (10000*0.4))/120 = (4200 + 5600 + 8000)/120 = 148 計算出來單個盤的iops為148個,,基本達到磁盤極限 raid10 單塊盤的iops = (10000*(1-0.3)*0.6 + 2 * (10000*0.4))/120 = (4200 + 8000)/120 = 102 可以看到,,因為raid10對于一個寫操作,只發(fā)生2次io,,所以,,同樣的壓力,同樣的磁盤,,每個盤的iops只有102個,,還遠(yuǎn)遠(yuǎn)低于磁盤的極限iops。 在一個實際的case中,,一個恢復(fù)壓力很大的standby(這里主要是寫,,而且是小io的寫),采用了raid5的方案,,發(fā)現(xiàn)性能很差,,通過分析,每個磁盤的iops在高峰時期,,快達到200了,,導(dǎo)致響應(yīng)速度巨慢無比。后來改造成raid10,,就避免了這個性能問題,,每個磁盤的iops降到100左右。
|
|