ATA133 RAID-контроллер от Silicon Image

Автор: niknik
Дата: 20.06.2002
Все фото статьи

Введение


Это уже третья статья, посвящённая ATA133 RAID-контроллерам, и уже из этого факта можно сделать вывод, что стандарт ATA133, о необходимости/бесполезности которого до сих пор идут споры, востребован рынком. Контроллеры двух столпов ATA RAID-рынка, компаний High-Point и Promise уже протестированы, и соответствующие обзоры Вы можете найти в разделе HDD нашего сайта. Теперь пришло время посмотреть на продукт компании, бросившей перчатку признанным лидерам рынка ATA RAID-контроллеров (за неимением полной информации о производителе контроллера, будем считать, что это Silicon Image).

Missundaztood


Сам контроллер выглядит очень неброско:

и единственное, что говорит о его "принадлежности" к SiliconImage - маркировка на чипе. Так как мы люди бывалые и видели много маркировок, то, обратившись на сайт SiliconImage, выяснили, что контроллер Sil680 основан на чипе CMD680, компании CMD (с чипами этой компании мы уже встречались на контроллерах AMI Hyperdisk). Кстати, судя по внешнему виду главной страницы сайта компании CMD, у неё более чем тесные связи с компанией SiliconImage. :)
С другой стороны, комплектация контроллера и его упаковка говорит о том, что его выпустила некая китайская компания, которая совсем не хочет публичной славы.
В отличие от контроллера Sil680, у нашего подопытного BIOS хранится не в микросхеме flash-памяти, а в обычной ПЗУ. То есть возможность обновления биоса отсутствует...
Однако, вместе с контроллером поставляются драйвера и программное обеспечение Sil680 и поэтому я закрою глаза на происхождение контроллера и буду считать, что мне достался "родной" контроллер от Silicon Image. :)

С краткой спецификацией контроллера Sil680 можно познакомиться здесь:

Краткая спецификация контроллера
 Host side interface  32bit 33 MHz PCI Bus, PCI 2.2 compliant
  Device side interface  ATA133
  RAID controller IC CMD 680
  Number of IDE channels  2 Channels
  Maximum number of drives  4 hard disk drives
  Supported Hard drives  Up to ATA133
  Supported RAID Levels  RAID 0, RAID 1, RAID 0+1
  Supported OSs  Windows 98/ME, Windows NT4.0, Win2000/XP
  Additional Features: Medley ATA Software Raid
  Dual independent DMA channels with 256B FIFO per channel
  Read Ahead
  Command buffering

Как видим, контроллер не поддерживает работу с PCI32/66МГц шиной, в отличие от своих конкурентов. Записывать это в недостатки пока не будем, так как предыдущие два контроллера и PCI32/33МГц шину утилизировать так и не смогли...
BIOS контроллера имеет очень простой, "диалоговый" интерфейс, но всеми нужными функциями обладает. Очень любопытной мне показалась возможность указывать порядок добавления винчестеров в массив, но, как удалось выяснить, на производительность массивов это повлияло только в режиме RAID01. Почему так получилось, мы узнаем по ходу тестирования.

Тестовая система и методика тестирования


Тестовая система и методика тестирования контроллера не претерпели изменений с прошлого раза, и, дабы не загромождать этот обзор, я решил их еще раз не повторять. Те, кто не следит за нашими публикациями или не помнит подробностей нашей методики, могут просто обратиться к предыдущему обзору контроллера Promise TX2000.

Winbench99


Результаты в FAT32:
Результаты Winbench99 (FAT32)
  JBOD RAID0 2HDD RAID0 3HDD RAID0 4HDD RAID0 2HDD-1CH RAID1-1CH RAID1-2CH RAID01
 Business Disk WinMark 99 10800 10500 10900 11500 9830 10500 10600 10300
 High-End Disk WinMark 99 27300 33900 37400 37600 31200 27600 27800 33000
         
 HE:AVS/Express 3.4 27900 26200 29800 27400 22500 27900 27700 25700
 HE:FrontPage 98 121000 125000 127000 114000 126000 129000 130000 123000
 HE:MicroStation SE 36500 38100 36600 37600 35900 36700 37800 37000
 HE:Photoshop 4.0 11800 17000 20800 23600 14600 12100 12200 16100
 HE:Premiere 4.2 24800 33300 36500 35000 32000 24300 24800 30800
 HE:Sound Forge 4.0 41600 65200 72100 62800 58100 39300 41000 60300
 HE:Visual C++ 5.0 31700 39400 44000 40900 38300 31100 30700 40100
         
 Disk Access Time 41600 83000 65100 83400 53800 41500 41600 83000
 DTR:Beginning 24300 48600 66000 78400 43900 24300 24300 48600
 DTR:End 12.3 12.2 12.0 12.3 12.3 13.1 12.3 12.3

На диаграммах мы наглядно видим, насколько объединение винчестеров в RAID-массив "ускоряет" работу типичных Windows-приложений:


Точно также, как и на контроллерах RocketRAID и TX2000 основной прирост в скорости (по High-End Disk Winmark) по сравнению с одиночным диском (обозначенным, как JBOD) достигается при объединении в RAID0 двух дисков. Массив RAID0 из трёх дисков также обеспечивает прирост скорости, но уже не такой высокий, а добавление четвёртого диска в массив сопровождается таким маленьким приростом скорости, что говорить о нём как-то неловко. :)
В тесте Business Disk Winmark "польза" от объединения винчестеров в RAID0 почти незаметна.
Как обычно, нас интересует, насколько меняются скоростные характеристики массивов RAID0 на двух винчестерах и RAID1, если эти массивы создавать на одном или разных каналах контроллера.


Судя по результатам, скорость массива RAID1 практически не зависит от того, на скольких каналах он организован, а вот для RAID0-массива это, наоборот, критично.
Скорость массива RAID01 оказалась чуть меньше, чем у RAID0 на двух винчестерах.

Результаты в NTFS:

Результаты Winbench99 (NTFS)
  JBOD RAID0 2HDD RAID0 3HDD RAID0 4HDD RAID0 2HDD-1CH RAID1-1CH RAID1-2CH RAID01
 Business Disk WinMark 99 8790 8690 8250 8680 7660 8010 8040 8380
 High-End Disk WinMark 99 22100 27400 29700 30200 24300 21400 21400 25900
         
 HE:AVS/Express 3.4 21900 23200 24500 22800 17800 20700 20700 22700
 HE:FrontPage 98 95600 93500 94800 86900 94000 97300 91500 92900
 HE:MicroStation SE 31800 29200 26100 25400 24600 30100 28500 26800
 HE:Photoshop 4.0 11100 16300 19900 23100 14600 11300 11400 15900
 HE:Premiere 4.2 17700 24000 25200 25900 21500 16400 16500 21300
 HE:Sound Forge 4.0 30100 49000 57000 52000 43400 31200 29900 42000
 HE:Visual C++ 5.0 21300 28500 31000 30500 26700 20500 21200 27300


При увеличении количества винчестеров в RAID0 результаты по High-End тесту увеличиваются, а по Business Disk Winmark даже немного снижаются относительно скорости одиночного диска (JBOD).


Точно также как и под FAT32, скорость RAID1-массива не зависит от того, как винчестеры разбросаны по каналам, а RAID0-массиву определённо нравится двухканальная организация.

IOMeter


Весьма любопытно контроллер повёл себя в паттерне Workstation:

Результаты в паттерне Workstation
  JBOD RAID0 2HDD RAID0 3HDD RAID0 4HDD RAID0-1Ch RAID1-2Ch RAID1-1Ch RAID01
 1 96.74 112.56 98.06 111.27 87.03 94.03 96.70 109.08
 2 96.98 130.18 97.81 135.17 87.37 94.97 96.85 128.39
 4 96.77 139.27 98.06 155.29 87.20 94.69 96.95 136.65
 8 96.90 143.13 98.24 165.00 87.44 95.16 96.91 140.42
 16 97.00 145.43 98.00 168.52 87.32 94.89 97.31 142.91
 32 112.69 165.03 114.47 183.91 97.44 109.62 115.23 161.89

Обратите внимание, что скорость RAID0 на двух винчестерах больше, чем у одиночного винчестера, и в этом нет ничего необычного. Но, как только мы увеличиваем число винчестеров в RAID0-массиве до трёх, скорость массива резко падает! И, что еще более любопытно, если мы доведем число винчестеров в RAID0-массиве до четырёх, то его скорость вновь вырастет!
То, что RAID0, реализованный на двух каналах контроллера быстрее, чем его одноканальный аналог, вполне логично, но на RAID1 эта логика не распространяется. Как видим, одноканальный RAID1 хоть не намного, но быстрее, чем двухканальный вариант.
Массив RAID01 оказался чуть медленнее, чем RAID0 на двух винчестерах. Кстати о RAID01: в начале статьи я говорил, что BIOS контроллера при создании массива спрашивает, в каком порядке добавлять винчестеры. Массив RAID01 представляет собой миррор страйповых групп, и, как мы видели, для увеличения быстродействия страйп нужно делать на разных каналах, а миррор - на одном канале. Поэтому в страйп-группы нужно объединить винчестеры следующим образом:

группа 1. Primary master & Secondary master
группа 2. Primary slave & Secondary slave

В терминологии BIOS-а контроллера такой порядок добавления винчестеров будет таким: "0213". Другой порядок следования винчестеров сильно ухудшает скорость массива, но желающие могут поэкспериментировать. :)

В паттернах, тестирующих контроллер в режимах эмулирующих серверную нагрузку, контроллер Sil680 проявил себя, в целом, неплохо.

Результаты в паттерне SR2002
  JBOD RAID0 2HDD RAID0 3HDD RAID0 4HDD RAID0 2HDD-1Ch RAID1-2Ch RAID1-1Ch RAID01
 Fileserver        
 1 81 86.19 81.78 89.63 73.08 79.21 81.85 85.02
 4 81.14 132.75 82.6 135.65 73.21 79.52 82.08 131.49
 16 81.9 138.61 82.04 148.53 73.18 79.95 82.68 136.88
 64 117.37 191.89 118.1 200.96 106.25 112.79 117.58 189.37
 256 132.07 215.93 132.46 237.83 124.22 127.05 131.46 213.38
 Webserver        
 1 76.41 72.14 70.30 75.81 65.89 76.27 71.77 72.81
 4 76.37 117.08 97.31 118.59 65.96 76.47 72.24 118.49
 16 77.98 128.78 98.26 128.11 66.69 78.03 73.82 128.17
 64 122.52 181.87 139.54 174.78 98.60 122.53 112.21 183.71
 256 138.09 210.71 161.22 202.96 112.96 138.66 128.40 212.10

Скорость RAID0-массива неплохо масштабируется от количества винчестеров (но "глюк" со снижением производительности на трёх винчестерах повторяется) и контроллер очень чутко реагирует на увеличение нагрузки (глубины очереди команд).

Само собой, контроллер Sil680 не избежал самого сурового испытания в новом паттерне Database. Основной целью тестирования в этом паттерне является выяснение способности firmware контроллера и его драйверов работать с чередующимися случайными запросами на чтение и запись.

Результаты в паттерне Database
  0 10 20 30 40 50 60 70 80 90 100
 JBOD           
 1 76.08 78.64 81.43 84.41 87.90 91.84 95.96 100.83 106.29 112.71 74.03
 4 76.50 78.82 82.03 84.72 88.34 92.03 96.28 100.90 106.33 113.06 73.31
 16 77.04 79.62 82.48 85.24 88.51 92.03 96.49 100.77 106.46 112.92 73.89
 64 119.81 117.54 115.93 117.00 115.75 115.27 114.67 115.69 117.57 120.65 115.94
 256 135.96 130.59 129.19 134.11 134.61 136.85 138.81 140.76 143.52 146.53 131.00
 2HDD-RAID0-2CH           
 1 77.44 79.59 87.25 94.51 104.88 124.39 146.02 156.06 170.06 188.46 201.07
 4 123.36 133.44 139.20 143.58 149.11 154.88 161.58 170.16 181.02 195.33 135.26
 16 134.83 140.37 145.75 151.29 156.74 164.73 171.16 179.25 189.59 201.62 135.30
 64 200.34 203.21 201.43 200.31 199.31 198.63 198.77 200.29 202.10 209.02 204.57
 256 232.23 232.64 226.96 224.58 225.25 225.98 227.24 230.25 234.88 243.02 237.19
 2HDD-RAID0-1CH           
 1 68.20 71.87 76.64 83.19 91.78 105.82 131.39 146.30 159.59 178.57 207.91
 4 68.43 71.98 77.32 83.45 92.22 105.96 131.53 146.92 159.84 177.88 196.52
 16 68.14 71.95 77.22 83.54 91.62 105.78 131.10 146.40 159.61 177.62 196.93
 64 101.94 105.92 111.44 116.80 124.47 136.00 152.46 160.98 171.59 185.46 197.79
 256 118.67 124.12 130.45 138.00 146.85 157.54 168.63 181.18 195.93 215.89 221.68
 2HDD-RAID1-2CH           
 1 77.63 80.01 83.03 86.42 89.84 93.79 97.90 102.09 103.98 110.21 76.16
 4 78.08 80.43 83.69 87.06 90.64 94.57 98.75 103.44 104.63 110.89 74.58
 16 78.77 81.15 84.08 87.11 90.93 94.40 98.93 103.59 104.95 110.53 75.48
 64 119.00 118.29 120.09 119.16 118.13 117.62 117.27 117.69 114.18 117.63 116.51
 256 136.32 131.50 134.76 135.01 134.72 134.95 137.62 136.70 137.71 141.35 131.30
 2HDD-RAID1-1CH           
 1 77.66 80.40 84.02 88.01 92.47 97.59 103.33 110.14 117.62 126.49 138.41
 4 77.67 80.62 83.97 88.05 92.68 97.62 102.46 109.15 116.36 125.52 136.03
 16 78.23 81.12 84.63 88.28 92.66 97.72 103.15 109.30 116.76 125.10 135.84
 64 124.45 122.16 121.30 120.43 119.95 119.86 120.50 122.20 124.55 127.10 141.12
 256 142.74 136.25 131.62 128.29 127.13 126.23 126.18 125.83 126.22 135.14 158.89
 3HDD-RAID0           
 1 75.88 80.96 87.15 94.86 105.37 119.31 140.05 176.91 242.84 267.30 337.98
 4 106.67 112.12 120.33 130.81 143.22 164.09 197.30 228.97 245.56 273.31 309.67
 16 106.86 113.22 121.00 131.38 145.69 168.23 206.84 229.03 250.40 277.73 310.24
 64 153.49 159.38 166.27 174.93 186.23 204.39 235.96 248.82 262.61 284.31 310.93
 256 178.63 185.98 195.98 208.11 220.47 239.86 257.26 272.59 291.44 320.83 333.07
 4HDD-RAID0           
 1 78.52 84.10 90.12 99.48 110.26 125.21 145.93 180.96 254.54 332.01 398.07
 4 125.76 132.41 140.60 151.05 164.62 183.06 210.86 262.73 308.11 333.65 362.50
 16 137.83 145.34 154.74 168.75 184.19 209.45 254.33 291.95 310.72 338.67 361.66
 64 190.68 200.58 208.64 219.13 234.95 255.27 298.62 309.41 323.98 346.40 361.98
 256 223.77 235.22 249.42 260.43 280.81 303.84 325.88 337.34 355.36 381.30 392.02
 4HDD-RAID01           
 1 77.03 80.85 86.06 92.72 102.64 118.84 142.29 151.46 163.62 182.12 247.36
 4 123.17 131.39 136.59 141.56 145.44 151.09 157.26 164.44 173.52 187.85 235.01
 16 134.11 138.45 142.84 147.37 153.51 158.74 163.96 171.70 180.88 194.53 235.94
 64 205.08 201.04 197.40 195.75 193.78 192.11 190.46 190.82 192.52 199.64 235.89
 256 238.26 229.65 223.72 219.65 218.34 217.58 218.46 219.71 223.19 232.49 263.41

Как обычно, мы сначала посмотрим, как зависит скорость RAID0-массива от доли операций записи при различной глубине очереди команд:


Судя по внешнему виду графиков, контроллер Sil680 использует алгоритмы, схожие с наработками Promise.
Скорость массивов сильно зависит от количества винчестеров только в режимах, близких к RandomWrite.


У меня начинает медленно прогрессировать дежа-вю! :)
В том смысле, что где-то я уже это видел... Массивы, в которых есть винчестеры, соседствующие на одном шлейфе, значительно лучше реагируют на рост доли операций записи (следовательно, мы можем предполагать то, что для такой пары винчестеров осуществляется отложенная запись). Кстати, это отлично видно из следующей диаграммы:


Обратите внимание, что график массива RAID0 из двух винчестеров (на разных каналах) напоминает график одиночного винчестера, только "поднятый" по вертикали. Но, как только в RAID0-массиве появляется пара винчестеров, подключенных на один шлейф, контроллер включает форсаж...
Жалко, что контроллер не умеет делать отложенное чтение :)

Собственно, следующие диаграммы тоже очень похожи на те, что мы видели в обзоре Promise TX2000:


Массив RAID0 на двух канала быстрее своего одноканального аналога во всех режимах, исключая RandomWrite, а RAID1 массив на одном канале быстрее, чем двухканальный RAID1 при большой доле операций записи.


Из любопытного можем отметить:
1. резкое падение скорости массивов, реализованных на двух каналах в режиме RandomWrite
2. большое отставание одноканального RAID0-массива от двухканального аналога при небольшой доле операций записи.


При большой глубине очереди команд сортировка запросов проходит "идеально" и двухканальные массивы выглядят очень неплохо.

Завершают нашу "обязательную программу" тесты на способность контроллера работать с Sequential-запросами, причём размер блока данных мы будем менять от 512 байт до 1МБ.

Результаты в паттерне SequentialRead
  JBOD RAID0 2HDD RAID0 3HDD RAID0 4HDD RAID0 2HDD-1Ch RAID1-2Ch RAID1-1Ch RAID01
 0.5 7.76 7.49 7.51 11.73 7.47 7.49 7.51 7.51
 1 10.84 13.71 13.70 23.09 13.68 10.79 10.76 13.67
 2 14.96 22.64 25.09 40.11 21.22 14.87 14.84 22.71
 4 39.22 30.74 34.57 47.46 27.96 39.21 39.22 30.40
 8 39.22 45.87 45.77 62.28 32.18 39.20 39.22 44.39
 16 39.28 62.00 56.63 73.72 46.82 39.24 39.26 62.23
 32 39.30 72.41 60.95 77.75 51.06 39.17 39.22 74.98
 64 39.22 78.23 61.75 80.69 52.32 39.31 39.31 78.37
 128 39.38 78.59 62.76 81.22 51.77 39.38 39.38 78.32
 256 39.43 78.70 62.38 81.20 53.42 39.40 39.44 78.69
 512 39.43 78.80 62.55 82.06 52.36 39.42 39.42 78.86
 1024 39.39 78.67 62.44 82.53 51.99 39.41 39.37 78.75

Как обычно, сначала посмотрим, как зависит скорость RAID0-массива от количества винчестеров в нём.

JBOD & RAID0 - SequentialRead

Хм... Скорость массива RAID0 из двух винчестеров вдвое больше, чем у одиночного винчестера, а вот RAID0 из трёх винчестеров неприятно удивил :(
Массив RAID0 из четырёх винчестеров довольно неплох при работе с блоками данных небольшого объёма, но показанная их максимальная скорость лишь немногим больше, чем у RAID0-массива из двух винчестеров. Что же это за магическая цифра в 80МБ/сек, в которую упирается уже третий ATA133 RAID-контроллер? Может что-то в консерватории?.
2Ch vs. 1Ch - SequentialRead

При сравнении скорости чтения с массивов RAID0 и RAID1, реализованных на одном и двух каналах контроллера, очевидно, что для RAID0-массива предпочтительнее двухканальная организация, а для массива RAID1 совершенно не важно, как он организован. Технология 3Ware - TwinStor, в которой чтение производится с обоих винчестеров массива, по всей видимости, компанией Silicon Image не была лицензирована. :)
Любознательные могут спросить меня, где на этой диаграмме график массива RAID1 на двух каналах.
Клянусь, он там есть! :)

Результаты в паттерне SequentialWrite
  JBOD RAID0 2HDD RAID0 3HDD RAID0 4HDD RAID0 2HDD-1Ch RAID1-2Ch RAID1-1Ch RAID01
 0.5 2.34 2.20 2.18 2.40 2.15 2.31 1.12 1.03
 1 4.77 4.53 4.46 4.91 4.33 4.70 2.56 2.37
 2 9.49 9.63 9.11 10.22 8.73 9.34 5.42 5.33
 4 18.51 21.76 19.69 22.26 17.89 18.24 10.79 12.80
 8 35.11 51.90 44.88 56.25 35.77 33.54 21.31 30.32
 16 39.38 78.74 77.60 92.96 63.73 39.25 32.91 44.95
 32 39.38 78.77 94.70 107.67 78.70 39.36 39.40 51.67
 64 39.36 78.80 107.22 116.44 78.76 39.37 39.31 55.52
 128 39.40 78.76 107.07 116.13 78.71 39.39 39.40 55.81
 256 39.40 78.59 105.39 116.42 78.54 39.33 39.40 56.05
 512 39.38 78.79 107.51 115.52 78.70 39.39 39.36 56.27
 1024 39.33 78.67 107.75 116.21 78.69 39.36 39.37 56.09

JBOD & RAID0 - SequentialWrite

Стоп, секунду... На наших изумлённых глазах у контроллера на обычной PCI32/33МГц трансфер по шине превысил 100МБ/сек! И не просто превысил, а на 16МБ/сек!!!
Сказать тут нечего, кроме: - "Браво!"
2Ch vs. 1Ch - SequentialWrite

При сравнении скоростей записи RAID0 и RAID1-массивов, реализованных на одном и двух каналах, никаких чудес не происходит. При малом размере блока данных, одноканальные массивы уступают своим двухканальным аналогам, но, при увеличении размера блока данных скорость обоих вариантов реализации массивов на двух винчестерах, достигнув максимума, сравнивается.

Выводы


Неизвестный науке контроллер на чипе CMD680, стоимостью 24 у.е. в розницу, показал неплохие результаты в Winbench99 и очень высокие - во всех паттернах IOMeter. Скорость контроллера в Sequential-паттернах оказалась вообще уникальной - при последовательной записи на массив RAID0 из четырёх винчестеров 1МБ-блоков данных утилизация PCI32-шины достигла 87 процентов (116 МБ/сек из 133 возможных...).

Насколько контроллер хорош на фоне своих конкурентов, мы узнаем очень скоро, так как результаты RocketRAID 133 с новым BIOS-ом и на новых драйверах уже получены, а пока можно сказать одно - контроллер на CMD680 стоит дороже денег, за которые продаётся. :)