Hp-Proliant

ssd raid 上的 iops 非常低(低於 1000)

  • March 5, 2015

我在伺服器上遇到嚴重的性能問題,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 控制器)。但是,請記住,啟用磁碟的寫入記憶體後,如果發生斷電,您將面臨數據失去的風險(除非您的磁碟具有斷電保護,但這在消費空間中非常罕見)。

引用自:https://serverfault.com/questions/673313