HP DL380 G7 + Smart Array P410i + sysbench -> низкая производительность raid 10

8

У меня работает система с низким использованием ввода-вывода:

  1. HP DL380G7 (24 ГБ ОЗУ)
  2. Smart Array p410i с 512 МБ кэш-памяти записи
  3. 6 дисков SAS 10k rpm 146 ГБ в RAID10
  4. Debian Squeze linux, ext4 + LVM, установлен hpacucli

iostat (cciss / c0d1 = массив raid10, dm-7 = 60G lvm раздел для теста):

Устройство: rrqm / s wrqm / sr / sw / s rMB / s wMB / s avgrq-sz avgqu-sz await 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
дм-0 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
дм-2 0,00 0,00 3,20 391,00 0,18 1,53 8,87 0,04 0,11 0,05 1,84
дм-3 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
дм-4 0,00 0,00 0,00 106,80 0,00 0,42 8,00 0,00 0,00 0,00 0,00
дм-5 0,00 0,00 0,00 0,60 0,00 0,00 8,00 0,00 0,00 0,00 0,00
дм-6 0,00 0,00 0,00 2,80 0,00 0,01 8,00 0,00 0,00 0,00 0,00
дм-1 0,00 0,00 0,00 132,00 0,00 0,52 8,00 0,00 0,02 0,01 0,16
дм-7 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
дм-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 в слоте 0 (встроенный) (sn: 5001438011FF14E0)

   массив A (SAS, неиспользуемое пространство: 0 МБ)


      логический привод 1 (136,7 ГБ, RAID 1, ОК)

      физический привод 1I: 1: 1 (порт 1I: блок 1: отсек 1, SAS, 146 ГБ, ОК)
      физический привод 1I: 1: 2 (порт 1I: блок 1: отсек 2, SAS, 146 ГБ, ОК)

   массив B (SAS, неиспользуемое пространство: 0 МБ)


      Логический привод 2 (410,1 ГБ, RAID 1 + 0, ОК)

      физический привод 1I: 1: 3 (порт 1I: блок 1: отсек 3, SAS, 146 ГБ, ОК)
      физический привод 1I: 1: 4 (порт 1I: блок 1: отсек 4, SAS, 146 ГБ, ОК)
      физический привод 2I: 1: 5 (порт 2I: блок 1: отсек 5, SAS, 146 ГБ, ОК)
      физический привод 2I: 1: 6 (порт 2I: блок 1: отсек 6, SAS, 146 ГБ, ОК)
      физический привод 2I: 1: 7 (порт 2I: блок 1: отсек 7, SAS, 146 ГБ, ОК)
      физический привод 2I: 1: 8 (порт 2I: блок 1: отсек 8, SAS, 146 ГБ, ОК)

   SEP (идентификатор поставщика PMCSIERA, модель SRC 8x6G) 250 (WWID: 5001438011FF14EF)

hpacucli "ctrl all show status"

Smart Array P410i в слоте 0 (встроенный)
   Состояние контроллера: ОК
   Состояние кэша: ОК
   Состояние батареи / конденсатора: ОК

Команда 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 = off выполнить --max-запросы = 30000

Результаты Sysbench

sysbench 0.4.12: тест оценки многопоточной системы

Запуск теста со следующими параметрами:
Количество потоков: 16
Инициализация генератора случайных чисел из таймера.


Флаги открытия дополнительных файлов: 0
128 файлов по 432 МБ каждый
Общий размер файла 54 Гб
Размер блока 4Кб
Количество случайных запросов для случайного ввода-вывода: 30000
Коэффициент чтения / записи для комбинированного теста случайного ввода-вывода: 1,50
Использование режима синхронного ввода-вывода
Делать тест на случайное чтение
Темы начались!
Выполнено.

Выполнено операций: 30000 Чтение, 0 Запись, 0 Другое = 30000 Всего
Прочитано 117.19Mb Написано 0b Всего передано 117.19Mb (935.71Kb / sec)
  233,93 запросов / сек выполнено

Итоги выполнения теста:
    общее время: 128.2455с
    общее количество мероприятий: 30000
    общее время, затраченное на выполнение события: 2051.5525
    Статистика по запросу:
         мин: 0,00 мс
         среднее значение: 68,39 мс
         максимум: 2010.15мс
         ок. 95 процентиль: 660,40 мс

Справедливость темы:
    события (avg / stddev): 1875.0000 / 111.75
    время выполнения (avg / stddev): 128.2220 / 0.02

иостат во время теста

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

Устройство: rrqm / s wrqm / sr / sw / s rMB / s wMB / s avgrq-sz avgqu-sz await 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
дм-0 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
дм-2 0,00 0,00 0,00 51,60 0,00 0,20 8,00 49,72 877,26 19,38 100,00
дм-3 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
дм-4 0,00 0,00 0,00 0,70 0,00 0,00 8,00 0,00 0,00 0,00 0,00
дм-5 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
дм-6 0,00 0,00 0,00 0,00 0,00 0,00 0,00 7,00 0,00 0,00 100,00
дм-1 0,00 0,00 0,00 0,00 0,00 0,00 0,00 7,00 0,00 0,00 100,00
дм-7 0,00 0,00 208,50 0,00 0,82 0,00 8,04 25,00 75,29 4,80 100,00
дм-8 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00

Бонни ++ v1.96

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

Запись байта за раз ... сделано
Пишем грамотно ... сделано
Переписывание ... сделано
Чтение байта за раз ... сделано
Чтение грамотно ... сделано
начать их ... сделано ... сделано ... сделано ... сделано ... сделано ...
Версия 1.96 ------ Последовательный вывод ------ - Последовательный ввод- - Случайный-
Параллелизм 16 -Per Chr- -Block-- -Переписать- -Per Chr- -Block-- -Seeks--
Размер машины K / сек% CP K / сек% CP K / сек% CP K / сек% CP K / сек% CP K / сек% CP / сек% CP
seo-db 48304M 819 99 188274 17 98395 8 2652 78 201280 8 265,2 1
Задержка 14899us 726ms 15194ms 100ms 122ms 665ms

1.96,1.96, сео-дб, 16,1337541936,48304M ,, 819,99,188274,17,98395,8,2652,78,201280,8,265.2,1 ,,,,,,,,,,,,,, ,,,, 14899us, 726ms, 15194ms, 100мс, 122ms, 665ms ,,,,,,

Вопросов

Итак, sysbench показал 234 случайных чтения в секунду.
Я ожидаю, что это будет по крайней мере 400.
Что может быть узким местом? LVM?
Другая система с дисками mdadm raid1 + 2x 7200rpm показывает более 200 случайных операций чтения в секунду ...

Спасибо за любую помощь!

Олег Голованов
источник
Каков размер полосы? iostat выглядит так, как будто sysbench работал только на одном физическом диске.
Дмитрий Чубаров
hpacucli говорит, что размер полосы 256k. Устройства DM-x от iostat - это не физические диски, а разделы lvm. DM-7 - это раздел 60 ГБ lvm, где я запускал sysbench.
Олег Голованов
Что именно вы тестируете с этой конкретной sysbenchкомандной строкой? Вы моделируете сценарий реального использования?
Ewwhite
Я имитирую базу данных PostgreSql, которая внутренне использует блоки по 4 КБ. Мое приложение выполняет много случайных операций чтения / записи больших файлов данных (приложение остановилось во время тестирования)
Олег Голованов

Ответы:

10

Ваша система определенно не работает на основе ваших аппаратных спецификаций. Я загрузил sysbenchутилиту на пару неработающих серверов HP ProLiant DL380 G6 / G7, работающих под управлением CentOS 5/6, чтобы проверить их производительность. Это обычные фиксированные разделы вместо LVM. (Я обычно не использую LVM из-за гибкости, предлагаемой контроллерами HP Smart Array)

DL380 G6 имеет 6-дисковый массив RAID 1 + 0 на контроллере Smart Array P410 с 512 МБ кэш-памяти с батарейным питанием. DL380 G7 имеет двухдисковый SLC SSD-массив предприятия. Файловые системы XFS . Я использовал ту же командную строку 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=off --max-requests=30000 run

Мои результаты были 1595 случайных чтений в секунду на 6 дисках.
На SSD результат составил 39047 случайных операций чтения в секунду . Полные результаты в конце этого поста ...

  • Что касается вашей настройки, первое, что бросается в глаза, это размер вашего тестового раздела. Вы почти заполняете раздел 60 ГБ тестовыми файлами 54 ГБ. Я не уверен, что у ext4 проблема с 90 +%, но это самая быстрая вещь, которую вы можете изменить и повторно протестировать. (или используйте меньший набор тестовых данных)

  • Даже с LVM есть некоторые параметры настройки, доступные в этой настройке контроллера / диска. Полезно проверить упреждающее чтение и изменить настройку планировщика ввода-вывода со стандартного cfq на deadline или noop . Пожалуйста, смотрите вопрос и ответы по адресу: Linux - реальная настройка аппаратного RAID-контроллера (scsi и cciss)

  • Каков ваш коэффициент кэширования RAID-контроллера? Я обычно использую 75% / 25% баланса записи / чтения. Это должно быть быстрое испытание. Массив из 6 дисков завершен за 18 секунд. Ваш занял более 2 минут.

  • Можете ли вы запустить тест bonnie ++ или iozone для рассматриваемого раздела / массива? Было бы полезно проверить, есть ли какие-либо другие узкие места в системе. Я не был знаком с sysbench , но я думаю, что эти другие инструменты помогут вам лучше понять возможности системы.

  • Параметры монтирования файловой системы могут иметь небольшое значение, но я думаю, что проблема может быть глубже, чем это ...

вывод 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-дисковые результаты ...

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 результаты ...

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
ewwhite
источник
Спасибо за подробный ответ! Ваши результаты потрясающие ... >> Обычно я не использую LVM, особенно с гибкостью, предлагаемой RAID-контроллерами HP. Какую гибкость вы имеете в виду? >> Какое у вас отношение кеша RAID контроллера? 75/25, по умолчанию) >> Я думаю, что проблема глубже ... да! Я добавил Бонни ++ v1.96 результаты в конце моего основного поста. Кажется, результаты не так хороши :( Сначала я попытаюсь отойти от LVM и снова запустить тест. Если это не поможет - я полагаю, что-то не так с raid controller.
Олег Голованов
Можете ли вы показать свою bonnie++командную строку?
Ewwhite
Извини, я виноват. Командная строка: / usr / sbin / bonnie ++ -c 16 -n 0
Олег Голованов
3
Я изменил планировщик с cfq на noop, и результаты тестов резко возросли! )) Теперь sysbench показывает для меня 1500+ случайных чтений / секунду ... Большое, большое спасибо :)
Олег Голованов
1
Попробуйте deadlineтоже ... При загрузке БД, она может работать лучше чем noop, плюс есть некоторые дополнительные настройки в вашем, /sys/block/cciss1/queue/iosched/если вы используете deadline. Смотрите этот пост для более подробной информации о более тонкой настройке. Это позволило мне получить до 2600 случайных операций чтения в секунду.
Ewwhite