HP DL380 G7 + Smart Array P410i + sysbench -> performa raid 10 buruk

8

Saya memiliki sistem yang berjalan dengan pemanfaatan IO yang rendah:

  1. HP DL380G7 (RAM 24gb)
  2. Smart Array p410i dengan cache tulis berkapasitas 512mb yang didukung
  3. 6x SAS 10k rpm 146gb drive di RAID10
  4. Linux Debian Squeze, ext4 + LVM, hpacucli diinstal

iostat (cciss / c0d1 = array raid10, dm-7 = 60G lvm untuk pengujian):

Perangkat: rrqm / s wrqm / sr / sw / s rMB / s wMB / s avgrq-sz avgqu-sz menunggu svctm% util
cciss / c0d0 0,00 101,20 0,00 6,20 0,00 0,42 138,58 0,00 0,00 0,00 0,00
cciss / c0d1 0,00 395,20 3,20 130,20 0,18 2,05 34,29 0,04 0,26 0,16 2,08
dm-0 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
dm-2 0,00 0,00 3,20 391,00 0,18 1,53 8,87 0,04 0,11 0,05 1,84
dm-3 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
dm-4 0,00 0,00 0,00 106,80 0,00 0,42 8,00 0,00 0,00 0,00 0,00
dm-5 0,00 0,00 0,00 0,60 0,00 0,00 8,00 0,00 0,00 0,00 0,00
dm-6 0,00 0,00 0,00 2,80 0,00 0,01 8,00 0,00 0,00 0,00 0,00
dm-1 0,00 0,00 0,00 132,00 0,00 0,52 8,00 0,00 0,02 0,01 0,16
dm-7 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
dm-8 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00

hpacucli "ctrl all show config"

Smart Array P410i di Slot 0 (Tertanam) (sn: 5001438011FF14E0)

   array A (SAS, Ruang Tidak Terpakai: 0 MB)


      logis drive 1 (136,7 GB, RAID 1, OK)

      drive fisik 1I: 1: 1 (port 1I: kotak 1: bay 1, SAS, 146 GB, OK)
      physicaldrive 1I: 1: 2 (port 1I: box 1: bay 2, SAS, 146 GB, OK)

   array B (SAS, Ruang Tidak Terpakai: 0 MB)


      logicaldrive 2 (410.1 GB, RAID 1 + 0, OK)

      physicaldrive 1I: 1: 3 (port 1I: box 1: bay 3, SAS, 146 GB, OK)
      physicaldrive 1I: 1: 4 (port 1I: box 1: bay 4, SAS, 146 GB, OK)
      physicaldrive 2I: 1: 5 (port 2I: box 1: bay 5, SAS, 146 GB, OK)
      physicaldrive 2I: 1: 6 (port 2I: box 1: bay 6, SAS, 146 GB, OK)
      physicaldrive 2I: 1: 7 (port 2I: box 1: bay 7, SAS, 146 GB, OK)
      physicaldrive 2I: 1: 8 (port 2I: box 1: bay 8, SAS, 146 GB, OK)

   SEP (Vendor ID PMCSIERA, Model SRC 8x6G) 250 (WWID: 5001438011FF14EF)

hpacucli "ctrl all show status"

Smart Array P410i di Slot 0 (Tertanam)
   Status Pengontrol: Oke
   Status Cache: Oke
   Status Baterai / Kapasitor: Oke

Perintah Sysbench

sysbench --init-rng = on --test = fileio --num-threads 16 --file-num = 128 --file-block-size = 4K --file-total-size = 54G --file-test -mode = rndrd --file-fsync-freq = 0 --file-fsync-end = tidak berjalan --max-request = 30000

Hasil Sysbench

sysbench 0.4.12: tolok ukur evaluasi sistem multi-utas

Menjalankan tes dengan opsi berikut:
Jumlah utas: 16
Menginisialisasi generator angka acak dari timer.


Bendera ekstra file terbuka: 0
128 file, masing-masing 432Mb
Ukuran file total 54Gb
Ukuran blok 4Kb
Jumlah permintaan acak untuk IO acak: 30000
Rasio Baca / Tulis untuk uji IO acak kombinasi: 1,50
Menggunakan mode I / O sinkron
Melakukan tes baca acak
Utas dimulai!
Selesai

Operasi yang dilakukan: 30000 Baca, 0 Tulis, 0 Lainnya = 30000 Total
Baca 117.19Mb Tertulis 0b Total ditransfer 117.19Mb (935.71Kb / detik)
  233.93 Permintaan / detik dieksekusi

Ringkasan eksekusi tes:
    total waktu: 128.2455s
    total jumlah acara: 30000
    total waktu yang diambil oleh eksekusi acara: 2051.5525
    statistik per permintaan:
         min: 0,00 ms
         rata-rata: 68,39 ms
         maks: 2010.15ms
         sekitar 95 persentil: 660,40 ms

Keadilan benang:
    acara (rata-rata / stddev): 1875.0000 / 111.75
    waktu eksekusi (avg / stddev): 128.2220 / 0.02

iostat selama pengujian

avg-cpu:% user% nice% system% iowait% steal% idle
           0,00 0,01 0,10 31,03 0,00 68,86

Perangkat: rrqm / s wrqm / sr / sw / s rMB / s wMB / s avgrq-sz avgqu-sz menunggu svctm% util
cciss / c0d0 0,00 0,10 0,00 0,60 0,00 0,00 9,33 0,00 0,00 0,00 0,00
cciss / c0d1 0,00 46,30 208,50 1,30 0,82 0,10 8,99 29,03 119,75 4,77 100,00
dm-0 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
dm-2 0,00 0,00 0,00 51,60 0,00 0,20 8,00 49,72 877,26 19,38 100,00
dm-3 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
dm-4 0,00 0,00 0,00 0,70 0,00 0,00 8,00 0,00 0,00 0,00 0,00
dm-5 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
dm-6 0,00 0,00 0,00 0,00 0,00 0,00 0,00 7,00 0,00 0,00 100,00
dm-1 0,00 0,00 0,00 0,00 0,00 0,00 0,00 7,00 0,00 0,00 100,00
dm-7 0,00 0,00 208,50 0,00 0,82 0,00 8,04 25,00 75,29 4,80 100,00
dm-8 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00

Bonnie ++ v1.96

cmd: / usr / sbin / bonnie ++ -c 16 -n 0

Menulis byte pada satu waktu ... selesai
Menulis dengan cerdas ... selesai
Menulis ulang ... selesai
Membaca satu byte pada satu waktu ... selesai
Membaca dengan cerdas ... selesai
mulai ... selesai ... selesai ... selesai ... selesai ... selesai ...
Versi 1.96 ------ Output Sekuensial ------ - Input Penting- --Random-
Concurrency 16 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Ukuran Mesin K / detik% CP K / detik% CP K / detik% CP K / detik% CP K / detik% CP / detik% CP
seo-db 48304M 819 99 188274 17 98395 8 2652 78 201280 8 265.2 1
Latensi 14899us 726ms 15194ms 100ms 122ms 665ms

1,96,1,96, seo-db, 16,1337541936,48304M ,, 819,99,188274,17,98395,8,2652,78,201280,8,265,2,1 ,,,,,,,,,,,,,,,,, ,,,, 14899us, 726ms, 15194ms, 100ms, 122ms, 665ms ,,,,,,

Pertanyaan

Jadi, sysbench menunjukkan 234 pembacaan acak per detik.
Saya berharap setidaknya 400.
Apa yang bisa menjadi hambatan? LVM?
Sistem lain dengan mdadm raid1 + 2x 7200rpm drive menunjukkan lebih dari 200 pembacaan acak per detik ...

Terima kasih atas bantuannya!

Oleg Golovanov
sumber
Berapa ukuran garis? iostat terlihat seperti sysbench hanya bekerja pada satu drive fisik.
Dmitri Chubarov
hpacucli mengatakan, bahwa ukuran strip adalah 256 ribu. Perangkat DM-x dari iostat bukan drive fisik, tetapi partisi lvm. DM-7 adalah partisi 60GB lvm, di mana saya menjalankan sysbench.
Oleg Golovanov
Apa sebenarnya yang Anda uji dengan sysbenchbaris perintah khusus ini ? Apakah Anda mensimulasikan skenario penggunaan dunia nyata?
ewwhite
Saya mensimulasikan database PostgreSql, yang secara internal menggunakan blok 4kb. Aplikasi saya membuat banyak pembacaan / penulisan acak pada file data besar (aplikasi berhenti pada saat pengujian)
Oleg Golovanov

Jawaban:

10

Sistem Anda pasti berkinerja buruk berdasarkan spesifikasi perangkat keras Anda. Saya memuat sysbenchutilitas pada beberapa server HP ProLiant DL380 G6 / G7 yang tidak aktif yang menjalankan CentOS 5/6 untuk memeriksa kinerjanya. Ini adalah partisi tetap normal bukan LVM. (Saya biasanya tidak menggunakan LVM, karena fleksibilitas yang ditawarkan oleh pengontrol HP Smart Array)

DL380 G6 memiliki 6-disk RAID 1 + 0 array pada Smart Array P410 controller dengan 512MB cache yang didukung baterai. DL380 G7 memiliki susunan SLC SSD perusahaan 2-disk. Sistem file adalah XFS . Saya menggunakan baris perintah sysbench yang sama seperti yang Anda lakukan:

sysbench --init-rng=on --test=fileio --num-threads=16 --file-num=128 --file-block-size=4K --file-total-size=54G --file-test-mode=rndrd --file-fsync-freq=0 --file-fsync-end=off --max-requests=30000 run

Hasil saya adalah 1.595 acak baca-per-detik di 6-disk.
Pada SSD, hasilnya adalah 39047 pembacaan acak per detik . Hasil lengkap ada di akhir posting ini ...

  • Adapun pengaturan Anda, hal pertama yang melompat pada saya adalah ukuran partisi pengujian Anda. Anda hampir mengisi partisi 60GB dengan file tes 54GB. Saya tidak yakin apakah ext4 memiliki masalah kinerja di 90 +%, tapi itu hal tercepat untuk Anda ubah dan uji ulang. (atau gunakan kumpulan data uji yang lebih kecil)

  • Bahkan dengan LVM, ada beberapa opsi penyetelan yang tersedia pada pengontrol / pengaturan disk ini. Memeriksa baca-depan dan mengubah pengaturan penjadwal I / O dari cfq default ke batas waktu atau noop sangat membantu. Silakan lihat pertanyaan dan jawabannya di: Linux - penyetelan pengontrol RAID perangkat keras dunia nyata (scsi dan cciss)

  • Apa rasio cache pengontrol RAID Anda? Saya biasanya menggunakan saldo tulis / baca 75% / 25%. Ini harus menjadi tes cepat. Susunan 6 disk selesai dalam 18 detik. Waktu Anda lebih dari 2 menit.

  • Bisakah Anda menjalankan uji bonnie ++ atau iozone pada partisi / array yang dimaksud? Akan sangat membantu untuk melihat apakah ada hambatan lain pada sistem. Saya tidak terbiasa dengan sysbench , tapi saya pikir alat-alat lain ini akan memberi Anda gambaran yang lebih baik dari kemampuan sistem.

  • Opsi mount filesystem mungkin membuat perbedaan kecil, tapi saya pikir masalahnya bisa lebih dalam dari itu ...

output hpacucli ...

Smart Array P410i in Slot 0 (Embedded)    (sn: 50123456789ABCDE)

   array A (SAS, Unused Space: 0 MB)

      logicaldrive 1 (838.1 GB, RAID 1+0, OK)

      physicaldrive 1I:1:1 (port 1I:box 1:bay 1, SAS, 300 GB, OK)
      physicaldrive 1I:1:2 (port 1I:box 1:bay 2, SAS, 300 GB, OK)
      physicaldrive 1I:1:3 (port 1I:box 1:bay 3, SAS, 300 GB, OK)
      physicaldrive 1I:1:4 (port 1I:box 1:bay 4, SAS, 300 GB, OK)
      physicaldrive 2I:1:5 (port 2I:box 1:bay 5, SAS, 300 GB, OK)
      physicaldrive 2I:1:6 (port 2I:box 1:bay 6, SAS, 300 GB, OK)

   SEP (Vendor ID PMCSIERA, Model  SRC 8x6G) 250 (WWID: 50123456789ABCED)

sysbench DL380 G6 6-disk hasil ...

sysbench 0.4.12:  multi-threaded system evaluation benchmark

Running the test with following options:
Number of threads: 16
Initializing random number generator from timer.

Extra file open flags: 0
128 files, 432Mb each
54Gb total file size
Block size 4Kb
Number of random requests for random IO: 30000
Read/Write ratio for combined random IO test: 1.50
Using synchronous I/O mode
Doing random read test
Threads started!
Done.

Operations performed:  30001 Read, 0 Write, 0 Other = 30001 Total
Read 117.19Mb  Written 0b  Total transferred 117.19Mb  (6.2292Mb/sec)
 1594.67 Requests/sec executed

Test execution summary:
    total time:                          18.8133s
    total number of events:              30001
    total time taken by event execution: 300.7545
    per-request statistics:
         min:                                  0.00ms
         avg:                                 10.02ms
         max:                                277.41ms
         approx.  95 percentile:              25.58ms

Threads fairness:
    events (avg/stddev):           1875.0625/41.46
    execution time (avg/stddev):   18.7972/0.01

sysbench DL380 G7 SSD hasil ...

sysbench 0.4.12:  multi-threaded system evaluation benchmark

Running the test with following options:
Number of threads: 16
Initializing random number generator from timer.


Extra file open flags: 0
128 files, 432Mb each
54Gb total file size
Block size 4Kb
Number of random requests for random IO: 30000
Read/Write ratio for combined random IO test: 1.50
Using synchronous I/O mode
Doing random read test
Threads started!
Done.

Operations performed:  30038 Read, 0 Write, 0 Other = 30038 Total
Read 117.34Mb  Written 0b  Total transferred 117.34Mb  (152.53Mb/sec)
39046.89 Requests/sec executed

Test execution summary:
    total time:                          0.7693s
    total number of events:              30038
    total time taken by event execution: 12.2631
    per-request statistics:
         min:                                  0.00ms
         avg:                                  0.41ms
         max:                                  1.89ms
         approx.  95 percentile:               0.57ms

Threads fairness:
    events (avg/stddev):           1877.3750/15.59
    execution time (avg/stddev):   0.7664/0.00
putih
sumber
Terima kasih atas jawaban terinci! Hasil Anda luar biasa ... >> Saya biasanya tidak menggunakan LVM, terutama dengan fleksibilitas yang ditawarkan oleh pengontrol RAID HP. Fleksibilitas apa yang Anda maksud? >> Apa rasio cache pengontrol RAID Anda? 75/25, standar) >> Saya pikir masalahnya lebih dalam dari itu ... ya! Saya menambahkan hasil bonnie ++ v1.96 pada akhir posting utama saya. Tampaknya hasilnya tidak begitu baik :( Pada awalnya saya akan mencoba untuk menjauh dari LVM dan menjalankan tes lagi. Jika itu tidak membantu - saya kira, ada sesuatu yang salah dengan pengontrol serangan.
Oleg Golovanov
Bisakah Anda menunjukkan bonnie++baris perintah Anda ?
ewwhite
Maaf, salah saya. Baris perintah: / usr / sbin / bonnie ++ -c 16 -n 0
Oleg Golovanov
3
Saya mengubah scheduler dari cfq ke noop, dan hasil benchmark meningkat secara dramatis! )) Sekarang menunjukkan sysbench untuk saya 1500+ membaca acak / detik ... Besar, terima kasih besar :)
Oleg Golovanov
1
Coba deadlinejuga ... Di bawah beban DB, mungkin berjalan lebih baik daripada noop, ditambah ada beberapa merdu tambahan di Anda /sys/block/cciss1/queue/iosched/jika Anda gunakan deadline. Lihat posting ini untuk detail lebih lanjut tentang penyetelan yang lebih halus. Saya bisa mendapatkan tes itu hingga 2600 pembacaan acak / detik dengan melakukannya.
ewwhite