Hp-Proliant
ssd raid 上的 iops 非常低(低於 1000)
我在伺服器上遇到嚴重的性能問題,iops 非常低。
伺服器 :
- ProLiant DL360p Gen8
- 使用 HP Smart Array P420i 控制器(韌體 v6)
- 使用 4x Samsung 840 - 512GB 在 raid 1+0
這是三星840的詳細資訊:
hpacucli ctrl slot=0 pd 2I:1:6 show detail physicaldrive 2I:1:6 Port: 2I Box: 1 Bay: 6 Status: OK Drive Type: Data Drive Interface Type: Solid State SATA Size: 512.1 GB Firmware Revision: DXM04B0Q Serial Number: S12SNEAD102607E Model: ATA Samsung SSD 840 SATA NCQ Capable: True SATA NCQ Enabled: True Current Temperature (C): 16 Maximum Temperature (C): 70 Usage remaining: 100.00% Power On Hours: 0 SSD Smart Trip Wearout: False PHY Count: 1 PHY Transfer Rate: 6.0Gbps Drive Authentication Status: OK Carrier Application Version: 11 Carrier Bootloader Version: 6
這是基準測試結果
sudo fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --filename=test --bs=4k --iodepth=64 --size=4G --readwrite=randrw --rwmixread=75 test: (g=0): rw=randrw, bs=4K-4K/4K-4K/4K-4K, ioengine=libaio, iodepth=64 fio-2.1.3 Starting 1 process test: Laying out IO file(s) (1 file(s) / 4096MB) Jobs: 1 (f=1): [m] [99.8% done] [7152KB/2400KB/0KB /s] [1788/600/0 iops] [eta 00m:02s] test: (groupid=0, jobs=1): err= 0: pid=36718: Thu Mar 5 18:15:12 2015 read : io=3071.7MB, bw=2536.5KB/s, iops=634, runt=1240097msec write: io=1024.4MB, bw=866133B/s, iops=211, runt=1240097msec cpu : usr=0.28%, sys=1.18%, ctx=401767, majf=0, minf=2347 IO depths : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=0.1%, >=64=100.0% submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0% complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.1%, >=64=0.0% issued : total=r=786347/w=262229/d=0, short=r=0/w=0/d=0 Run status group 0 (all jobs): READ: io=3071.7MB, aggrb=2536KB/s, minb=2536KB/s, maxb=2536KB/s, mint=1240097msec, maxt=1240097msec WRITE: io=1024.4MB, aggrb=845KB/s, minb=845KB/s, maxb=845KB/s, mint=1240097msec, maxt=1240097msec Disk stats (read/write): dm-1: ios=785968/267543, merge=0/0, ticks=50476776/28341176, in_queue=79704028, util=100.00%, aggrios=788659/265218, aggrmerge=1953/2589, aggrticks=50709304/27483028, aggrin_queue=78191444, aggrutil=100.00% sda: ios=788659/265218, merge=1953/2589, ticks=50709304/27483028, in_queue=78191444, util=100.00%
在普通硬碟上執行相同的工作台顯示比在 ssd 上更多的 iops
任何的想法 ?
由於 MLC SSD 的工作方式,它們需要一個適當大小的本地 DRAM 記憶體來吸收傳入的寫入,同時寫入支持的 NAND。
但是,硬體 RAID 卡通常會禁用磁碟的記憶體並完全依賴自己的(卡上)DRAM 記憶體。雖然這不是經典 HDD 的問題,但如果無法使用內部 DRAM 記憶體,NAND 晶片(以及在其上建構的 SSD)固有的不可覆蓋特性會導致巨大的性能損失。
舉個例子:256 GB Crucial M550,連續寫入超過 400 MB/s,在禁用內部記憶體的情況下降至*5 MB/s。*對於隨機寫入,損失同樣嚴重。這就是企業級 SSD(過去)使用 SLC NAND 的確切原因:與 MLC 甚至 eMLC 相比,它們的程式時間要短得多。
因此,在將消費級 SSD 與品牌硬體 RAID 卡組合時,我總是有點緊張。另一方面,Linux mdraid 與任何級別的 SSD 配合得非常好。
對於您的特定情況,您可以進行一些測試以嘗試重新啟用內部磁碟記憶體(DELL/LSI 控制器提供這種可能性,我不知道 HP 控制器)。但是,請記住,啟用磁碟的寫入記憶體後,如果發生斷電,您將面臨數據失去的風險(除非您的磁碟具有斷電保護,但這在消費空間中非常罕見)。