На левой половине ринга представлен аппаратный контроллер 3ware 9690SA-8I с 448 MB ОЗУ (512 MB по паспорту) и BBU на шее
# modinfo 3w_9xxx filename: /lib/modules/2.6.18-128.el5/kernel/drivers/scsi/3w-9xxx.ko version: 2.26.08.003-2.6.18RH license: GPL description: 3ware 9000 Storage Controller Linux Driver author: AMCC srcversion: 99F90AB8F214BD4984AD826 alias: pci:v000013C1d00001005sv*sd*bc*sc*i* alias: pci:v000013C1d00001004sv*sd*bc*sc*i* alias: pci:v000013C1d00001003sv*sd*bc*sc*i* alias: pci:v000013C1d00001002sv*sd*bc*sc*i* depends: scsi_mod vermagic: 2.6.18-128.el5 SMP mod_unload gcc-4.1 module_sig: 883f350497747d675ed35fe9471dce112238109c943875d83a1ef6a41b17bbf9b7eda2ab980c5820a0c86fcde4ae7e1ba47773945828dc39b5e97a46d # tw_cli /c0 show all /c0 Driver Version = 2.26.08.003-2.6.18RH /c0 Model = 9690SA-8I /c0 Available Memory = 448MB /c0 Firmware Version = FH9X 4.06.00.004 /c0 Bios Version = BE9X 4.05.00.015 /c0 Boot Loader Version = BL9X 3.08.00.001 /c0 Serial Number = L340504A9060151 /c0 PCB Version = Rev 041 /c0 PCHIP Version = 2.00 /c0 ACHIP Version = 1501291E /c0 Controller Phys = 8 /c0 Connections = 6 of 128 /c0 Drives = 6 of 128 /c0 Units = 6 of 128 /c0 Active Drives = 6 of 128 /c0 Active Units = 6 of 32 /c0 Max Drives Per Unit = 32 /c0 Total Optimal Units = 6 /c0 Not Optimal Units = 0 /c0 Disk Spinup Policy = 1 /c0 Spinup Stagger Time Policy (sec) = 1 /c0 Auto-Carving Policy = off /c0 Auto-Carving Size = 2048 GB /c0 Auto-Rebuild Policy = on /c0 Controller Bus Type = PCIe /c0 Controller Bus Width = 8 lanes /c0 Controller Bus Speed = 2.5 Gbps/lane #
На правой половине — программная реализация рейда на базе драйвера md(4) из поставки CentOS Linux 5.3 (Linux 2.6.18-128.el5)
# modinfo raid0
filename: /lib/modules/2.6.18-128.el5/kernel/drivers/md/raid0.ko
alias: md-level-0
alias: md-raid0
alias: md-personality-2
license: GPL
srcversion: 3974570A623AFD015BF1B44
depends:
vermagic: 2.6.18-128.el5 SMP mod_unload gcc-4.1
module_sig: 883f350497747dd75ed35fe9471dce112457809f46e4a3e85bad21f9fb9088b27b0573772754ec109e2ef9bc44b4355f4fbec740b378aaa962d427761f
# modinfo raid1
filename: /lib/modules/2.6.18-128.el5/kernel/drivers/md/raid1.ko
alias: md-level-1
alias: md-raid1
alias: md-personality-3
license: GPL
srcversion: 6F708B349A9029D2CD37BE1
depends:
vermagic: 2.6.18-128.el5 SMP mod_unload gcc-4.1
module_sig: 883f350497747dd75ed35fe9471dce11262be0a0831f9ce7ef56f61271c84c43728e1f1182abbc70a0a0fdc8b1e6661cd2a13315ab1cc890955d657c63
#
Ринг | Аппаратная платформа Supermicro 1025W-URB/32 ГБ. |
Судья | bonnie++ -x 10 -b |
Поединок | Производительность RAID10 |
Боец 3ware ловко разместил на своем борту конфигурацию массива в следующей компоновке
# tw_cli /c0/u0 show all
/c0/u0 status = OK
/c0/u0 is not rebuilding, its current state is OK
/c0/u0 is not verifying, its current state is OK
/c0/u0 is initialized.
/c0/u0 Cache State = on
/c0/u0 volume(s) = 1
/c0/u0 name =
/c0/u0 serial number = 3SD0CXBL895F450038EA
/c0/u0 Ignore ECC policy = off
/c0/u0 Auto Verify Policy = on
/c0/u0 Storsave Policy = balance
/c0/u0 Command Queuing Policy = on
Unit UnitType Status %RCmpl %V/I/M VPort Stripe Size(GB)
------------------------------------------------------------------------
u0 RAID-10 OK - - - 64K 405.094
u0-0 RAID-1 OK - - - - -
u0-0-0 DISK OK - - p0 - 135.031
u0-0-1 DISK OK - - p2 - 135.031
u0-1 RAID-1 OK - - - - -
u0-1-0 DISK OK - - p3 - 135.031
u0-1-1 DISK OK - - p4 - 135.031
u0-2 RAID-1 OK - - - - -
u0-2-0 DISK OK - - p5 - 135.031
u0-2-1 DISK OK - - p6 - 135.031
u0/v0 Volume - - - - - 405.094
#
md(4) немного помешкавшись принял следующую расстановку (физически жесткие диски по прежнему подключены к 3ware контроллеру и экспортируются каждый как Single Drive)
# cat /proc/mdstat
Personalities : [raid1] [raid0]
md2 : active raid0 md23[2] md22[1] md21[0]
414283648 blocks 64k chunks
md21 : active raid1 sdb2[1] sda2[0]
131106368 blocks [2/2] [UU]
md22 : active raid1 sdd1[1] sdc1[0]
141588736 blocks [2/2] [UU]
md23 : active raid1 sdf1[1] sde1[0]
141588736 blocks [2/2] [UU]
md1 : active raid1 sdb1[1] sda1[0]
10482304 blocks [2/2] [UU]
unused devices: <none>
#
По окончание единоборства рефери бережно сохранили необработанные результаты, полученные от 3ware и md(4).
Усреднив результаты по нескольким замерам и подведя итог, судьи остались немного в замешательстве боец md(4) превзошел своего соперника 3ware по блочной записи более чем на 126%, по перезаписи на 65%, по блочному чтению на 10%. Однако md(4) проиграл в забеге на количество random seek(ов) (хаотичных перемещений головок дисков) на 37%.
После непродолжительных думок и посиделок составили графическое превосходство бойцов друг над другом.
Разнообразить шоу удалось выступлением 3ware в смежной весовой категории с уменьшенным Stripe Size с 64 KB до 16 KB в 3х поединках (bonnie++ -x 3 -b). С первых строчек поступающие данные от bonnie++ расстроили судей. Боец 3ware в весовой категории Stripe Size = 16 KB проиграл все схватки самому себе в весе Stripe Size = 64 KB, а именно, блочная запись упала практически на 40%, перезапись — 74%, блочное чтение — 15%, random seeks — 45%.
+----------------------+-------------------+----------------+------------------+--------------+ | me | put_block | rewrite | get_block | seeks | +----------------------+-------------------+----------------+------------------+--------------+ | 3ware 64KB stripe sz | 96356 | 67310 | 310724 | 847 | | md(4) 64KB stripe sz | 218658 (+126%) | 111368 (+65%) | 344830 (+10%) | 618 (-37%) | | 3ware 16KB stripe sz | 70323 (-37%) | 38525 (-74%) | 269569 (-15%) | 582 (-45%) | +----------------------+-------------------+----------------+------------------+--------------+
Дополнение от 03.08.2009. Чтобы помериться пузом, решили провести аналогичный эксперимент на подвернувшейся под руку FreeBSD-8.0-BETA3. Более ранние версии, к сожалению, наотрез отказывалась устанавливаться через карточку удаленного управления. Дальнейшее сравнение будет не до конца честным, т.к. версия 8.0-BETA3 поставляется с ядром, в котором включены дополнительные проверки.
> dmesg | grep WITNESS WARNING: WITNESS option enabled, expect reduced performance. WARNING: WITNESS option enabled, expect reduced performance. >
С уверенностью не могу ответить на вопрос имеют ли они влияние на дисковую подсистему. Однако времени на пересборку ядра попросту не было.
Действие разворачивается на той же самой машине и том же самом дисковом контроллере. В портах FreeBSD лежала обновленная версия bonnie++ 1.96. О ее особенностях немного позднее.
Приведем настройки дискового контроллера и созданного RAID10 массива
freebsd# tw_cli /c0 show all /c0 Driver Version = 3.70.05.001 /c0 Model = 9690SA-8I /c0 Available Memory = 448MB /c0 Firmware Version = FH9X 4.06.00.004 /c0 Bios Version = BE9X 4.05.00.015 /c0 Boot Loader Version = BL9X 3.08.00.001 /c0 Serial Number = L340504A9060151 /c0 PCB Version = Rev 041 /c0 PCHIP Version = 2.00 /c0 ACHIP Version = 1501291E /c0 Controller Phys = 8 /c0 Connections = 6 of 128 /c0 Drives = 6 of 128 /c0 Units = 1 of 128 /c0 Active Drives = 6 of 128 /c0 Active Units = 1 of 32 /c0 Max Drives Per Unit = 32 /c0 Total Optimal Units = 1 /c0 Not Optimal Units = 0 /c0 Disk Spinup Policy = 1 /c0 Spinup Stagger Time Policy (sec) = 1 /c0 Auto-Carving Policy = off /c0 Auto-Carving Size = 2048 GB /c0 Auto-Rebuild Policy = on /c0 Rebuild Rate = 1 /c0 Verify Rate = 1 /c0 Controller Bus Type = PCIe /c0 Controller Bus Width = 8 lanes /c0 Controller Bus Speed = 2.5 Gbps/lane Unit UnitType Status %RCmpl %V/I/M Stripe Size(GB) Cache AVrfy ------------------------------------------------------------------------------ u0 RAID-10 OK - - 64K 405.094 ON ON VPort Status Unit Size Type Phy Encl-Slot Model ------------------------------------------------------------------------------ p0 OK u0 136.73 GB SAS 0 - SEAGATE ST9146803SS p1 OK u0 136.73 GB SAS 1 - SEAGATE ST9146803SS p2 OK u0 136.73 GB SAS 2 - SEAGATE ST9146803SS p4 OK u0 136.73 GB SAS 4 - SEAGATE ST9146803SS p6 OK u0 136.73 GB SAS 6 - SEAGATE ST9146803SS p7 OK u0 136.73 GB SAS 7 - SEAGATE ST9146803SS Name OnlineState BBUReady Status Volt Temp Hours LastCapTest --------------------------------------------------------------------------- bbu On Yes OK OK OK 0 xx-xxx-xxxx freebsd#
Вместо десяти прогонов bonnie++ получили девять, т.к. за ночь тест не успел завершиться в срок. С этого момента начинается самое интересное. В итоговом CSV файле количество полей в заголовке не совпадает с количеством полей данных, а точнее данные содержат на два поля больше. Сошлись во мнение, что четвертое и пятое поле явно не соответствуют картине происходящего. Значения этих колонок были исключены и мы получили материал для анализа.
Скалькулировав значения, был получен преинтересный результат. Блочное чтение проигрывало блочной записи (чтение: 152327 KB/s, запись: 177383 KB/s). Каких-либо логических объяснений нам не удалось найти. Чтобы оставить возможность будущим поколениям поразмыслить над значениями, свели результаты в единую таблицу
+------------------------------+-------------------+----------------+------------------+--------------+ | me | put_block | rewrite | get_block | seeks | +------------------------------+-------------------+----------------+------------------+--------------+ | Linux 3ware 64KB stripe sz | 96356 | 67310 | 310724 | 847 | | Linux md(4) 64KB stripe sz | 218658 (+126%) | 111368 (+65%) | 344830 (+10%) | 618 (-37%) | | Linux 3ware 16KB stripe sz | 70323 (-37%) | 38525 (-74%) | 269569 (-15%) | 582 (-45%) | | FreeBSD 3ware 64KB stripe sz | 177383 (+84%) | 11668 (-476%) | 152337 (-103%) | 541 (-56%) | +------------------------------+-------------------+----------------+------------------+--------------+
А md же поддерживает raid-10 нативно, без 2-х уровней:
mdadm —create /dev/md0 —bitmap=internal —metadata=1.0 —layout=f2 —level raid10 —raid-devices=4 /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1
Разве он будет чем-то принципиально отличаться от созданной конфигурации ?
Теоретически может — смотри опцию —laouyt, практически не проверял, был бы рад если бы вы продолжили бы серию тестов.
по-моему чистый выигрыш 3ware — в реальной жизни seek важнее 🙂
ещё хотелось бы заметить — md пользовался bbu и кешм 3ware. не стоит автоматически распространять результаты теста на вариант md + «тупой» контроллер.
Аппаратные решения не дают иногда необходимой гибкости. Например, на md можно построить массив из дисков, в которых только первая половина будет задействована (от внешней стороны блинов до серидины диска). Исключив из использования наиболее тормозную часть диска — внутреннюю.
+ выигрыш в производительности
— потеря дискового пространства.
Протестируй на FreeBSD 7.2 !!!
Что еще прикажете, моЙ повелителЬ?