У меня работает система с низким коэффициентом использования ввода-вывода:
iostat (cciss / c0d1 = массив raid10, dm-7 = раздел lvm 60 ГБ для тестирования):
Device: rrqm/s wrqm/s r/s w/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 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 in Slot 0 (Embedded) (sn: 5001438011FF14E0) array A (SAS, Unused Space: 0 MB) logicaldrive 1 (136.7 GB, RAID 1, OK) physicaldrive 1I:1:1 (port 1I:box 1:bay 1, SAS, 146 GB, OK) physicaldrive 1I:1:2 (port 1I:box 1:bay 2, SAS, 146 GB, OK) array B (SAS, Unused Space: 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 in Slot 0 (Embedded) Controller Status: OK Cache Status: OK Battery/Capacitor Status: OK
Команда 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 run --max-requests=30000
Результаты Sysbench
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: 30000 Read, 0 Write, 0 Other = 30000 Total Read 117.19Mb Written 0b Total transferred 117.19Mb (935.71Kb/sec) 233.93 Requests/sec executed Test execution summary: total time: 128.2455s total number of events: 30000 total time taken by event execution: 2051.5525 per-request statistics: min: 0.00ms avg: 68.39ms max: 2010.15ms approx. 95 percentile: 660.40ms Threads fairness: events (avg/stddev): 1875.0000/111.75 execution time (avg/stddev): 128.2220/0.02
iostat во время теста
avg-cpu: %user %nice %system %iowait %steal %idle 0,00 0,01 0,10 31,03 0,00 68,86 Device: rrqm/s wrqm/s r/s w/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 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
Бонни ++ v1.96
cmd: /usr/sbin/bonnie++ -c 16 -n 0 Writing a byte at a time...done Writing intelligently...done Rewriting...done Reading a byte at a time...done Reading intelligently...done start 'em...done...done...done...done...done... Version 1.96 ------Sequential Output------ --Sequential Input- --Random- Concurrency 16 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP seo-db 48304M 819 99 188274 17 98395 8 2652 78 201280 8 265.2 1 Latency 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,,,,,,
Вопросы
Итак, sysbench показал 234 случайных чтения в секунду.
Я ожидаю, что это будет минимум 400.
Что может быть узким местом? LVM?
Другая система с дисками mdadm raid1 + 2x 7200 об / мин показывает более 200 случайных чтений в секунду ...
Спасибо за любую помощь!
Ваша система определенно неэффективна с учетом технических характеристик вашего оборудования. Я загрузил 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 имеет 2-дисковый SSD-массив SLC корпоративного класса. Файловые системы 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 к крайний срок или нет полезно. Пожалуйста, смотрите вопросы и ответы по адресу: Linux - настройка аппаратного RAID-контроллера в реальном мире (scsi и cciss)
Каков коэффициент кэш-памяти вашего RAID-контроллера? Я обычно использую баланс записи / чтения 75% / 25%. Это должен быть быстрый тест. Сборка 6-дискового массива завершилась за 18 секунд. Ваш занял более 2 минут.
Вы можете запустить Бонни ++ или 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