Скорость чтения / записи SSD (Intel 530) очень низкая с RAID 10
Объяснение:
У нас есть сервер:
- Модель: HP ProLiant DL160 G6
- 4 х 240 ГБ SSD (RAID-10)
- 72 ГБ оперативной памяти DDR3
- 2 х L5639
- RAID-контроллер HP P410 (256 МБ, V6.40, версия Rom: 8.40.41.00)
SSD-диски - это 4 новых 2,5-дюймовых Intel 530 со скоростью чтения 540 МБ / с и скоростью записи 490 МБ / с.
- CentOS 6
- Файловые системы ext4
но это результат теста скорости чтения на рейде 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
и это для скорости записи:
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
мы надеялись на скорость чтения 1 ГБ с рейдом 10, но 270 МБ даже не скорость одного диска!
Вопросы:
- Почему это так медленно?
- Это из-за RAID-контроллера?
Обновление 1 - та же скорость чтения / записи:
После изменения некоторых настроек, как указано в ответах, у меня есть результат ниже:
(Кто-нибудь знает, почему он показывает 4 ГБ вместо 400 МБ в качестве скорости чтения?!)
РЕДАКТИРОВАТЬ: похоже, что команда была неправильной, и мы должны были использовать -s144g для этого количества оперативной памяти, поэтому он показывает 4 ГБ (как предложено в комментариях 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
но старый hdparm -t /dev/sda
Команда все еще показывает:
Время чтения буферизованного диска: 810 МБ за 3,00 секунды = 269,85 МБ / с
Обновление 2 (пакет tuned-utils) - Скорость чтения теперь 600 МБ / с:
Наконец-то появилась надежда, что мы отключили кэш на контроллере raid и сделали некоторые другие вещи ранее, но безуспешно, но, поскольку мы перезагрузили сервер и снова установили ОС, мы забыли установить "tuned-utils", как это было предложено в ответе ewwhite (Спасибо ээээээээээ для этой удивительной посылки, которую Вы предложили)
После установки tuned-utils
и выбирая enterprise-storage
В профиле скорость чтения теперь составляет ~600 МБ / с +, но скорость записи по-прежнему очень низкая (~160 МБ) (:
Вот результат для iozone -t1 -i0 -i1 -i2 -r1m -s144g
команда:
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
Даже с hdparm -t /dev/sda
Команда у нас есть:
Время чтения буферизованного диска: 1802 МБ за 3,00 секунды = 600,37 МБ / с
Любые предложения по очень медленной скорости записи?
Обновление 3 - Некоторая информация запрашивается в комментариях:
Скорость записи по-прежнему очень низкая (~150 МБ / с, что не составляет 1/3 от одного диска)
Выход для df -h
а также 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
2 ответа
В то время как другой ответ здесь поднимает некоторые вопросы, ваши конкретные проблемы связаны с ограничениями платформы и конфигурацией ОС:
Вы ограничены в пропускной способности благодаря использованию пользовательских SSD-дисков SATA на RAID-контроллере HP Smart Array P410. На этих контроллерах диски SATA работают со скоростью 3,0 Гбит / с (3G), а не с 6,0 Гбит / с (6 ГБ). Так что это барьер, который влияет на скорость чтения ваших твердотельных накопителей Intel; 300 МБ / с или меньше на диск.
Контроллер Smart Array P410 предъявляет особые требования и рекомендации при использовании с твердотельными накопителями. Короче говоря, контроллер способен производить 50000 операций ввода-вывода в секунду, отключить ускоритель массива для объема вашего SSD, и производительность превысит ~6 дисков.
Производительность диска не всегда зависит от скорости последовательного чтения / записи. Попробуйте сравнительный анализ с подходящим инструментом, таким как iozone или bonnie ++. Вы по-прежнему получаете преимущества случайного ввода-вывода от нескольких дисков.
На уровне операционной системы установите пакет tuned-utils и установите для профиля значение
enterprise-performance
чтобы удалить барьеры записи из ваших файловых систем и установить правильный лифт ввода-вывода для вашей настройки. Это также рассматривается в других вопросах.Похоже, вы используете LVM. Это также может оказать влияние...
Вот отчет по iozone для G7 ProLiant, работающего с четырьмя потребительскими твердотельными накопителями SATA 6G (с понижением до скорости 3G) на одном и том же RAID-контроллере HP Smart Array P410.
Вы должны увидеть ~470 МБ / с и 650 МБ / с +.
[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
О дорогой, с чего начать?
В этом так много всего, и вам нужно хорошее понимание всего. Простое добавление нескольких дисков к RAID-контроллеру не даст желаемых результатов.
Это не может быть легко ответ. Но, по крайней мере, вот список вещей, которые вы должны посмотреть:
- Контроллер даже имеет необходимую пропускную способность? (-> Таблицы)
- Имеет ли контроллер достаточную пропускную способность для хоста (даже на версии 1.0, так как он x8)
- Достаточно ли пропускной способности системного чипсета (CPU-Controller)? (Неизвестно)
- Какую стратегию записи вы поручили контроллеру использовать? (это то, что, скорее всего, укусил вас)
- Все ли выровнено (разделы начинаются, LV, PV)?
- Согласованы ли размеры блоков? (Размер полосы RAID, размер блока, блоки FS,...)
- Оптимизирована ли файловая система для настройки RAID? (Уровень и размер блока)
Поскольку ваша пропускная способность для всего RAID (без учета FS) значительно ниже, чем для одного диска, скорее всего, вы неправильно настроили стратегию записи; Контроллер, вероятно, ожидает, пока все диски подтвердят запись (и если у вас нет оперативной памяти на резервной батарее контроллера, это может быть в ваших интересах).