二. IOPS 說明 linux
2.1 IOPS (Input/OutputPer Second)數據庫
IOPS 即每秒的輸入輸出量(或讀寫次數),是衡量磁盤性能的主要指標之一。app
IOPS是指單位時間內系統能處理的I/O請求數量,通常以每秒處理的I/O請求數量爲單位,I/O請求一般爲讀或寫數據操做請求。隨機讀寫頻繁的應用,dom
如OLTP(OnlineTransaction Processing),IOPS是關鍵衡量指標。ide
另外一個重要指標是數據吞吐量(Throughput),指單位時間內能夠成功傳輸的數據數量。對於大量順序讀寫的應用,如VOD(Video On Demand),則更關注吞吐量指標。工具
傳統磁盤本質上一種機械裝置,如FC, SAS, SATA磁盤,轉速一般爲5400/7200/10K/15K rpm不等。影響磁盤的關鍵因素是磁盤服務時間,即磁盤完成一個I/O請求所花費的時間,它由尋道時間、旋轉延遲和數據傳輸時間三部分構成。性能
(1)尋道時間測試
Tseek是指將讀寫磁頭移動至正確的磁道上所須要的時間。尋道時間越短,I/O操做越快,目前磁盤的平均尋道時間通常在3-15ms。this
(2)旋轉延遲spa
Trotation是指盤片旋轉將請求數據所在扇區移至讀寫磁頭下方所須要的時間。旋轉延遲取決於磁盤轉速,一般使用磁盤旋轉一週所需時間的1/2表示。
好比,7200 rpm的磁盤平均旋轉延遲大約爲60*1000/7200/2 = 4.17ms,而轉速爲15000 rpm的磁盤其平均旋轉延遲約爲2ms。
(3)數據傳輸時間
Ttransfer是指完成傳輸所請求的數據所須要的時間,它取決於數據傳輸率,其值等於數據大小除以數據傳輸率。
目前IDE/ATA能達到133MB/s(MBPS),SATA II可達到300MB/s的接口數據傳輸率,數據傳輸時間一般遠小於前兩部分時間。
IOPS(每秒IO次數) = 1s/(尋道時間+旋轉延遲+數據傳輸時間)
所以,理論上能夠計算出磁盤的最大IOPS,即IOPS = 1000ms/ (Tseek + Troatation),忽略數據傳輸時間。假設磁盤平均物理尋道時間爲3ms, 磁盤轉速爲7200,10K,15Krpm,則磁盤IOPS理論最大值分別爲:
IOPS = 1000 / (3 + 60000/7200/2) = 140
IOPS = 1000 / (3 + 60000/10000/2) = 167
IOPS = 1000 / (3 + 60000/15000/2) = 200
2.2 固態硬盤的IOPS
固態硬盤SSD是一種電子裝置, 避免了傳統磁盤在尋道和旋轉上的時間花費,存儲單元尋址開銷大大下降,所以IOPS能夠很是高,可以達到數萬甚至數十萬。
實際測量中,IOPS數值會受到不少因素的影響,包括I/O負載特徵(讀寫比例,順序和隨機,工做線程數,隊列深度,數據記錄大小)、系統配置、操做系統、磁盤驅動等等。
所以對比測量磁盤IOPS時,必須在一樣的測試基準下進行,即使如何也會產生必定的隨機不肯定性。
一般狀況下,IOPS可細分爲以下幾個指標:
Toatal IOPS:混合讀寫和順序隨機I/O負載狀況下的磁盤IOPS,這個與實際I/O狀況最爲相符,大多數應用關注此指標。
Random Read IOPS:100%隨機讀負載狀況下的IOPS。
Random WriteIOPS:100%隨機寫負載狀況下的IOPS。
Sequential ReadIOPS:100%順序負載讀狀況下的IOPS。
Sequential WriteIOPS:100%順序寫負載狀況下的IOPS。
三.ORION 工具說明
ORION (OracleI/O Calibration Tool) Oracle 公司推出的一個校準數據庫的存儲系統 I/O 性能的獨立工具。有關該工具的說明,參考:
Oracle ORION IO 測試工具
http://blog.csdn.net/tianlesoftware/article/details/5965331
咱們使用ORION 工具測試一下看看:
[root@qs-xe-dzora-pd software]# cat dave.lun
/dev/sdb1
[root@qs-xe-dzora-pd software]# ./orion_linux_x86-64 -run advanced -testname dave -num_disks 2
ORION: ORacle IO Numbers -- Version11.1.0.7.0
dave_20111026_2026
Test will take approximately 16 minutes
Larger caches may take longer
查看生成的結果:
[root@qs-xe-dzora-pd software]# ls dave*
dave_20111026_2026_iops.csv dave_20111026_2026_summary.txt dave.lun_20111026_2025_summary.txt
dave_20111026_2026_lat.csv dave_20111026_2026_trace.txt
dave_20111026_2026_mbps.csv dave.lun
[root@qs-xe-dzora-pd software]# cat dave_20111026_2026_summary.txt
ORION VERSION 11.1.0.7.0
Commandline:
-run advanced -testname dave -num_disks 2
This maps to this test:
Test: dave
Small IO size: 8 KB
Large IO size: 1024 KB
IO Types: Small Random IOs, Large RandomIOs
Simulated Array Type: CONCAT
Write: 0%
Cache Size: Not Entered
Duration for each Data Point: 60 seconds
Small Columns:, 0
Large Columns:, 0, 1, 2, 3, 4
Total Data Points: 15
Name: /dev/sdb1 Size: 449495069184
1 FILEs found.
Maximum Large MBPS=159.61 @ Small=0 andLarge=4 #<----159.61M爲吞吐量
Maximum Small IOPS=534 @ Small=10 andLarge=0
Minimum Small Latency=4.97 @ Small=1 andLarge=0
這裏顯示的吞吐量是160MBPS. IOPS 爲534.
-----------------------------------------
實驗:4塊物理硬盤,4塊作raid5和2塊盤分別raid0+1的讀性能比較。因爲寫會往本地盤寫入數據,暫時沒有測試
工具:Oracle orign
4塊物理盤作 raid 5
Name: /dev/sda2 Size: 896884531200
1 FILEs found.
Maximum Large MBPS=93.94 @ Small=0 and Large=2
Maximum Small IOPS=425 @ Small=5 and Large=0
Minimum Small Latency=7.63 @ Small=1 and Large=0
4塊物理盤,兩兩分別做raid0,算做一個小型的raid0+1,測試結果以下
Name: /dev/sda2 Size: 298388482560
Name: /dev/sdb1 Size: 298495378944
2 FILEs found.
Maximum Large MBPS=205.89 @ Small=0 and Large=4
Maximum Small IOPS=835 @ Small=10 and Large=0
Minimum Small Latency=5.33 @ Small=1 and Large=0
測試結果
不管中MBPS、IOPS仍是Latency,raid0+1的性能效果都要遠遠優於raid5,按照原來寫操做的性能應該更好。