web-dev-qa-db-ja.com

SSDレイドのIOPSが非常に低い(1000未満)

サーバーで深刻なパフォーマンスの問題が発生しており、IOPSが非常に低くなっています。

サーバー:

  • ProLiant DL360p Gen8
  • hP Smart Array P420iコントローラー(ファームウェアv6)を使用
  • 4x Samsung840-RAIDで512GB1 + 0

ここに1つのサムスン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%

通常のhddで同じベンチを実行すると、ssdよりも多くのIOPSが表示されます

何か案が ?

2
Charly Koza

MLC SSDの動作方法により、着信書き込みを吸収すると同時にバッキングNANDに書き込むには、適切なサイズのローカルDRAMキャッシュが必要です。

ただし、ハードウェアRAIDカードは多くの場合disableディスクのキャッシュであり、独自の(オンカード)DRAMキャッシュのみに依存しています。これは従来のHDDの問題ではありませんが、NANDチップ(およびSSDがそれらの上に構築される)の本質的な上書きしない性質により、内部DRAMキャッシュを使用できない場合、パフォーマンスが大幅に低下します。

例を挙げると、400 MB/sを超えるシーケンシャル書き込みを備えた256GB Crucial M550は、内部キャッシュが無効になっている場合、5 MB/sに低下します。ランダム書き込みでは、損失も同様に深刻です。これが、エンタープライズSSDが(過去に)SLC NANDを使用した正確な理由です。それらのプログラム時間は、MLCやeMLCと比較してはるかに短いです。

このため、コンシューマークラスのSSDとブランドのハードウェアRAIDカードを組み合わせると、いつも少し緊張します。一方、Linux mdraidは、あらゆるクラスのSSDで素晴らしくうまく機能します。

特定のケースでは、内部ディスクキャッシュを再度有効にしようとしてテストを行うことができます(Dell/LSIコントローラーはこの可能性を提供しますが、HPコントローラーについてはわかりません)。ただし、ディスクの書き込みキャッシュを有効にすると、停電が発生した場合にデータ損失が発生することに注意してください(ディスクに電力損失保護がない限り、これはコンシューマースペースでは非常にまれです)。

2
shodanshok