首先聲明,同事做的實驗
使用fio對SATA、SSD、PCIE進行了測試
測試說明:
1、測試命名 sync_write_4k_32
sync表示測試方式,可以是sync或者libaio,sync就是發起IO請求等待IO完成后,此thread繼續發起IO請求,實現並發采用fio發起多線程實現;libaio,異步IO,thread發起IO請求后,IO請求進行IO隊列,此模式為了實現並發多測試,采用控制iodepth實現
write:為測試IO請求方法,包括write、read、rw、randwrite、randread、randrw,分別為:順序寫、順序讀、順序讀寫、隨機寫、隨機讀、隨機讀寫,混合讀寫是,rw比率為1.5
4k:測試數據塊大小,測試了4k、8k、16k、32k、128k,16k為數據庫數據塊大小,圖表采用16k
32:並發數,32並發性能最高,圖表采用32線程
2、PCIE裸設備測試,是執行寫/dev/fda,其他未說明的,是寫文件系統,比如/data/test,是SSD的目錄下文件測試
3、PCIE寫裸設備曾經導致PCIE異常(另郵件說明過)
測試結果:
順序讀寫帶寬MB/S |
順序讀寫IOPS | |||||||||
testname | SATA | SSD | PCIE | PCIE裸設備 | testname | SATA | SSD | PCIE | PCIE裸設備 | |
sync_write_16k_32 | 485.755 | 473.061 | 613.859 | 1225.1 | sync_write_16k_32 | 30359 | 29566 | 38366 | 78460 | |
sync_read_16k_32 | 981.42 | 756.029 | 2244.2 | 1939.1 | sync_read_16k_32 | 62810 | 47251 | 143624 | 124155 | |
sync_rw_16k_32 | 708.361 | 690.881 | 875.036 | 1350.544 | sync_rw_16k_32 | 44271 | 43179 | 54688 | 84408 | |
順序讀寫延遲us | ||||||||||
testname | SATA | SSD | PCIE | PCIE裸設備 | ||||||
sync_write_16k_32 | 1052.3 | 1080.39 | 832.16 | 298.58 | ||||||
sync_read_16k_32 | 508.7 | 676.54 | 222.06 | 257.03 | ||||||
sync_rw_16k_32 | 1078.82 | 739.205 | 583.695 | 377.965 |
隨機讀寫帶寬MB/S | 隨機讀寫IOPS | |||||||||
testname | SATA | SSD | PCIE | PCIE裸設備 | testname | SATA | SSD | PCIE | PCIE裸設備 | |
sync_randwrite_16k_32 | 7.392 | 78.324 | 337.51 | 607.112 | sync_randwrite_16k_32 | 462 | 4895 | 21094 | 37944 | |
sync_randread_16k_32 | 20.004 | 761.049 | 2071.3 | 1957.9 | sync_randread_16k_32 | 1250 | 47565 | 132558 | 125303 | |
sync_randrw_16k_32 | 10.55 | 358.271 | 902.758 | 811.373 | sync_randrw_16k_32 | 659 | 22391 | 56421 | 50710 | |
隨機讀寫延遲us | ||||||||||
testname | SATA | SSD | PCIE | PCIE裸設備 | ||||||
sync_randwrite_16k_32 | 36929.88 | 3748.15 | 818.35 | 841.71 | ||||||
sync_randread_16k_32 | 25584.52 | 671.61 | 238.27 | 254.3 | ||||||
sync_randrw_16k_32 | 96364.745 | 954.425 | 297.875 | 629.365 |
結論:順序讀寫普通SATA盤和SSD差別不大,甚至SSD要低於SATA;隨機讀寫上SSD明顯高於SATA,尤其是隨機讀,這也是一般數據庫系統的瓶頸所在;PCIe性能好的無解,而且現在成本也降得可以接受,是提高數據庫性能的一個非常好的選擇。