Kecepatan baca / tulis SSD (Intel 530) sangat lambat dengan RAID 10

11

Penjelasan:

Kami memiliki Server:

  • Model: HP ProLiant DL160 G6
  • SSD 4 x 240GB (RAID-10)
  • RAM DDR3 72GB
  • 2 x L5639
  • Pengontrol RAID HP P410 (256MB, V6.40, versi Rom: 8.40.41.00)

Drive SSD adalah 4 5 "Intel 530 2.5" baru dengan kecepatan baca 540MB / s dan kecepatan tulis 490MB / s

  • CentOS 6
  • Sistem file ext4

tapi ini adalah hasil tes untuk kecepatan baca pada serangan 10:

hdparm -t /dev/sda

/dev/sda:
 Timing buffered disk reads:  824 MB in  3.00 seconds = 274.50 MB/sec
[root@localhost ~]# hdparm -t /dev/mapper/vg_localhost-lv_root

/dev/mapper/vg_localhost-lv_root:
 Timing buffered disk reads:  800 MB in  3.01 seconds = 266.19 MB/sec

dan ini untuk kecepatan tulis:

dd bs=1M count=512 if=/dev/zero of=test conv=fdatasync
512+0 records in
512+0 records out
536870912 bytes (537 MB) copied, 4.91077 s, 109 MB/s

kami berharap untuk kecepatan baca 1GB dengan serangan 10 tetapi 270MB bahkan bukan kecepatan satu disk!

Pertanyaan:

  1. Kenapa sangat lambat?
  2. Apakah ini karena Kontroler RAID?

Pembaruan 1 - Kecepatan Baca / Tulis yang Sama:

Setelah mengubah beberapa pengaturan sebagaimana disebutkan dalam jawaban saya mendapatkan hasil di bawah ini:

(Adakah yang tahu mengapa ini menunjukkan 4GB, bukannya 400MB sebagai kecepatan baca ?!)

EDIT: sepertinya perintah itu salah dan kita seharusnya menggunakan -s144g untuk jumlah ram ini, itu sebabnya ini menunjukkan 4GB (seperti yang disarankan dalam komentar oleh ewwhite)

[root@192 ~]# iozone -t1 -i0 -i1 -i2 -r1m -s56g
        Iozone: Performance Test of File I/O
                Version $Revision: 3.408 $
                Compiled for 64 bit mode.
                Build: linux

        Record Size 1024 KB
        File size set to 58720256 KB
        Command line used: iozone -t1 -i0 -i1 -i2 -r1m -s56g
        Output is in Kbytes/sec
        Each process writes a 58720256 Kbyte file in 1024 Kbyte records

        Children see throughput for  1 initial writers  =  135331.80 KB/sec
        Children see throughput for  1 rewriters        =  124085.66 KB/sec
        Children see throughput for  1 readers          = 4732046.50 KB/sec
        Children see throughput for 1 re-readers        = 4741508.00 KB/sec
        Children see throughput for 1 random readers    = 4590884.50 KB/sec
        Children see throughput for 1 random writers    =  124082.41 KB/sec

tetapi hdparm -t /dev/sdaperintah lama masih menunjukkan:

Waktu buffered disk berbunyi: 810 MB dalam 3,00 detik = 269,85 MB / detik

Perbarui 2 (paket uted-utils) - Kecepatan Baca sekarang 600MB / s:

Akhirnya ada harapan, kami telah menonaktifkan cache dari raid controller dan melakukan beberapa hal sebelumnya tanpa hasil, tetapi karena kami memuat ulang server dan menginstal OS lagi, kami lupa menginstal "tuned-utils" seperti yang disarankan dalam jawaban ewwhite (Terima kasih ewwhite untuk paket keren ini yang kamu sarankan)

Setelah menginstal tuned-utilsdan memilih enterprise-storageprofil kecepatan baca sekarang ~ 600MB / s + tetapi kecepatan tulis masih sangat lambat (~ 160MB) (:

Inilah hasil untuk iozone -t1 -i0 -i1 -i2 -r1m -s144gperintah:

    Children see throughput for  1 initial writers  =  165331.80 KB/sec
    Children see throughput for  1 rewriters        =  115734.91 KB/sec
    Children see throughput for  1 readers          =  719323.81 KB/sec
    Children see throughput for 1 re-readers        =  732008.56 KB/sec
    Children see throughput for 1 random readers    =  549284.69 KB/sec
    Children see throughput for 1 random writers    =  116389.76 KB/sec

Bahkan dengan hdparm -t /dev/sdaperintah yang kita miliki:

Waktu buffered disk berbunyi: 1802 MB dalam 3,00 detik = 600,37 MB / detik

Ada saran untuk kecepatan menulis yang sangat lambat?

Perbarui 3 - Beberapa informasi yang diminta dalam komentar:

Kecepatan tulis masih sangat rendah (~ 150MB / s yang bahkan tidak 1/3 dari satu disk)

Output untuk df -hdan fdisk -l:

[root@192 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       441G  3.2G  415G   1% /
tmpfs            36G     0   36G   0% /dev/shm


[root@192 ~]# fdisk -l
Disk /dev/sda: 480.0 GB, 480047620096 bytes
255 heads, 63 sectors/track, 58362 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00040c3c

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1       58363   468795392   83  Linux
Ara
sumber
Untuk tes ini, Anda mungkin harus menentukan dua kali lipat jumlah RAM yang dipasang di server.
ewwhite
Bisakah Anda memberi tahu kami versi firmware dari pengontrol Smart Array P410 Anda?
ewwhite
@ewwhite terima kasih atas komentar Anda, versi firmware p410 (256MB, V6.40) dan versi rom 8.40.41.00, apakah perintah iozone saya salah? jika ya, bisakah Anda memberi tahu saya perintah yang benar untuk diuji? karena semua yang saya coba saya dapatkan kecepatan baca di GB
Ara
Ada yang sangat salah di sini. Anda hanya mendapatkan ~ 122MB / s menulis. Angka 4GB / s yang Anda lihat adalah operasi dari cache, sehingga string perintah Anda akan terlihat seperti iozone -t1 -i0 -i1 -i2 -r1m -s144g. :(
ewwhite
@ewwhite Terima kasih banyak, kecepatan baca sekarang sangat bagus (terinci seperti pembaruan 2 dalam pertanyaan saya), tetapi kecepatan menulis sangat mengecewakan, apakah Anda punya saran untuk itu?
Ara

Jawaban:

16

Sementara jawaban lain di sini ada beberapa poin, masalah spesifik Anda disebabkan oleh keterbatasan platform dan konfigurasi OS:

  • Anda dibatasi throughput dengan menggunakan SSD SATA konsumen pada pengontrol RAID HP Smart Array P410 . Disk SATA beroperasi pada 3.0Gbps (3G) pada pengontrol ini dan bukan 6.0Gbps (6G). Jadi itu penghalang yang memengaruhi kecepatan baca SSD Intel Anda; 300MB / s atau kurang per drive.

  • Kontroler Smart Array P410 memiliki persyaratan khusus dan praktik terbaik saat digunakan dengan SSD. Singkatnya, pengontrol mampu 50.000 IOPS, menonaktifkan akselerator array untuk volume SSD Anda dan kinerja puncak di ~ 6 drive.

  • Kinerja disk tidak selalu tentang kecepatan baca / tulis berurutan. Coba pembandingan dengan alat yang tepat seperti iozone atau bonnie ++ . Anda masih mendapatkan manfaat I / O acak dari banyak drive Anda.

  • Pada level sistem operasi, instal paket tuned-utils dan atur profil enterprise-performanceuntuk menghapus hambatan penulisan dari sistem file Anda dan atur elevator I / O yang tepat untuk pengaturan Anda. Ini tercakup dalam pertanyaan lain di sini juga.

  • Sepertinya Anda menggunakan LVM. Itu bisa berdampak juga ...

Berikut ini adalah laporan iozone untuk G7 ProLiant yang berjalan dengan empat SSD SATA 6G konsumen (turun ke kecepatan 3G) pada pengontrol RAID HP Smart Array P410 yang sama.

Anda seharusnya melihat ~ 470MB / s menulis dan 650MB / s + membaca.

[root@mdmarra /data/tmp]# iozone -t1 -i0 -i1 -i2 -r1m -s56g
        Iozone: Performance Test of File I/O
                Version $Revision: 3.394 $
                Compiled for 64 bit mode.
                Build: linux 

        Record Size 1024 KB
        File size set to 58720256 KB
        Command line used: iozone -t1 -i0 -i1 -i2 -r1m -s56g
        Output is in Kbytes/sec
        Each process writes a 58720256 Kbyte file in 1024 Kbyte records

        Children see throughput for  1 initial writers  =  478209.81 KB/sec
        Children see throughput for  1 rewriters        =  478200.84 KB/sec
        Children see throughput for  1 readers          =  677397.69 KB/sec
        Children see throughput for 1 re-readers        =  679523.88 KB/sec
        Children see throughput for 1 random readers    =  437344.78 KB/sec
        Children see throughput for 1 random writers    =  486254.41 KB/sec
putih
sumber
Terima kasih banyak, modelnya adalah "DL160 G6", ya ada backplane yang terlibat :( saya bahkan akan senang dengan 600MB di sini, tapi 270MB benar-benar lambat, apa yang menurut Anda harus saya lakukan, apakah perampasan perangkat lunak membantu?
Ara
2
Oke, dengan DL160 G6, Anda harus memiliki dua kabel dari pengontrol RAID ke drive backplane ... 8 slot drive. Masalah Anda di sini adalah throughput drive, metodologi pengujian Anda dan pengaturan server. Coba saran lain yang saya cantumkan dalam jawaban saya.
ewwhite
Sedikit menarik tentang P410 hanya melakukan 3G pada SATA, dan praktik terbaik khusus. Mod up. (Namun LVM seharusnya tidak menjadi pemukul berat dalam hal dampak kinerja negatif, juga dicatat di sini: unix.stackexchange.com/questions/7122/… )
Roman
1
@ Ara Tidak ada pengontrol SATA 6G untuk ProLiant. Itulah intinya. SSD Anda hanya akan berjalan pada kecepatan 3G pada platform ini kecuali jika Anda menggunakan SAS SAS .
ewwhite
1
@Ara Software RAID akan memerlukan koneksi ke pengontrol yang berbeda, seperti SAS HBA (misalnya LSI 9211-8i) ... itu akan memungkinkan Anda untuk melihat bandwidth penuh disk Anda, tetapi ada aspek lain dari kinerja SSD di luar murni bandwidth baca / tulis berurutan.
ewwhite
12

Oh sayang, harus mulai dari mana?

Ada begitu banyak yang terlibat, dan Anda membutuhkan pemahaman yang baik tentang segalanya. Hanya melempar banyak disk ke pengontrol RAID tidak akan menghasilkan hasil yang Anda cari.

Ini tidak bisa dijawab dengan mudah. Tapi setidaknya, berikut adalah daftar hal yang harus Anda perhatikan:

  • Apakah Controller bahkan memiliki throughput yang dibutuhkan? (-> Lembar Data)
  • Apakah Controller bahkan memiliki bandwidth yang cukup untuk Host (itu, bahkan pada v1.0, karena itu x8)
  • Apakah chipset sistem memiliki throughput yang cukup (CPU-Controller)? (tidak diketahui)
  • Strategi menulis apa yang telah Anda perintahkan kepada Controller untuk digunakan? ( inilah yang kemungkinan besar telah menggigit Anda )
  • Apakah semuanya selaras (Partisi dimulai, LV, PV)?
  • Apakah ukuran blok diselaraskan? (Ukuran garis RAID, ukuran blok, blok FS, ...)
  • Apakah sistem file dioptimalkan untuk pengaturan RAID? (Level dan Ukuran blok)

Karena throughput Anda terhadap keseluruhan RAID (mengabaikan FS) jauh lebih rendah daripada satu disk, kemungkinan Anda telah salah mengatur strategi penulisan Anda; Pengontrol mungkin menunggu semua disk untuk mengkonfirmasi penulisan (dan kecuali jika Anda mendapat RAM pada baterai pengontrol yang didukung, ini mungkin untuk kepentingan terbaik Anda).

Roma
sumber
ini benar-benar lebih sulit daripada yang saya pikir, saya pikir itu semudah meningkatkan ram Pengendali Raid ke 512MB! , terima kasih Roman, izinkan saya memeriksa apa yang baru saja Anda katakan berharap menemukan alasannya
Ara
Sebagian besar di atas adalah strategi pemecahan masalah yang valid untuk kasus tepi, tetapi tidak berlaku untuk spesifikasi konfigurasi pengirim asli. Controller di sini memiliki throughput dan bandwidth yang diperlukan, CPU baik-baik saja, controller RAID default ke 25:75 R / W cache ratio (harus dinonaktifkan sepenuhnya untuk penggunaan SSD), CentOS6 menyelaraskan partisi dengan benar dan ada terlalu banyak potensi abstraksi untuk mendapatkan ukuran blok "selaras". Tiga masalah yang dihadapi adalah disk 6G dicekik dengan kecepatan 3G, hambatan penulisan filesystem mungkin diaktifkan dan lift I / O adalah CFQ default.
ewwhite
1
Model server sayangnya tidak dicatat pada saat jawaban saya. Senang mengetahui tentang pelambatan. Saya pikir hambatan dan CFQ tidak membutuhkan banyak biaya dalam "patokan" khusus ini, tetapi informasi yang berharga tetap.
Roman
@Roman Maaf saya tidak menyebutkan model sebelumnya, saya sangat menghargai bantuan Anda, saya mencoba panduan Anda dan ewwhite untuk mencapai 500-600MB, saya kira itu kecepatan tertinggi yang dapat saya capai dengan batas 3G ini
Ara
1
Tidak masalah sama sekali. Pastikan Anda mengikuti tautan dalam jawaban ewwhite, karena ada hal-hal spesifik yang harus dilakukan dengan P410 bersamaan dengan SSD. Juga, pastikan Anda mendistribusikan keempat disk secara merata di kedua koneksi dari backplane ke controller.
Roman