Превышена пропускная способность шины

Шина PCIe: только ли физические ограничения влияют на скорость передачи?

Начну издалека. Прошлой зимой довелось мне делать USB-устройство с ядром, размещаемым в ПЛИС. Само собой, очень мне хотелось проверить реальную пропускную способность этой шины. Ведь в контроллере — там слишком много всего наверчено. Всегда можно сказать, что вот тут внесена задержка, или вон там. В случае же с ПЛИС — я вижу блок, прокачивающий данные, вот он сказал мне, что в нём данные есть. А вот я выставил, что всё обработано, и я готов принимать новую порцию (при этом, он уже принимает данные во второй буфер этой же конечной точки). Отлично, ставим готовность с первого же такта и смотрим, что получается, когда USB может «молотить» без остановки.

Превышена пропускная способность шины

А получается удивительная вещь. Если USB 2.0 устройство воткнуто в «голубенький» разъём (это который USB 3.0), то скорость получается одна. Если в «чёрненький» — другая. Вот мой график зависимости скорости записи в USB от длины передаваемых данных. USB3 и USB2 — это тип разъёма, устройство всегда USB 2.0 HS.

Я пробовал в разных машинах. Результат — близок. Никто не мог объяснить мне этот феномен. Уже потом я нашёл наиболее вероятную причину. А причина очень проста. Вот свойства контроллера USB 2.0:

У контроллеров, управляющих «голубеньким» разъёмом такого нет. А разница — как раз примерно процентов 20.

Из этого мы делаем вывод, что не всегда ограничения пропускной способности определяются физическими свойствами шины. Иногда накладываются ещё какие-то вещи. Переходим с этими знаниями в наши дни.

Видео:Что означает маркировка на шинах! Значение цифр и букв на резине.Скачать

Что означает маркировка на шинах! Значение цифр и букв на резине.

Первичный эксперимент

Итак. Всё начиналось весьма буднично. Шла проверка одной программы. Проверялся процесс записи данных одновременно на несколько дисков. Аппаратура простая: имеется материнская плата с четырьмя PCIe-слотами. Во все слоты воткнуты совершенно одинаковые карточки с AHCI-контроллерами, каждый из которых поддерживает исключительно PCIe x1.

Превышена пропускная способность шины

Каждая карта обслуживает 4 накопителя.
И вот выясняется следующий эффект. Берём один диск и начинаем записывать на него данные. Получаем скорость от 180 до 220 мегабайт в секунду (здесь и далее, мегабайт — это 1024*1024 байт):

Берём второй накопитель. Скорость записи на него — от 170 до 190 МБ/с:

Пишем сразу на оба — получаем просадку скорости:

Суммарная скорость получается в районе 290 МБ/с. Но удивительность состоит в том, что отлаживали (так получилось) эту программу мы на тех же накопителях, но на других каналах. И там всё было хорошо. Быстро перетыкаем в те каналы (они будут идти через другую карту), получаем прекрасную работу:

Видео:Что означает МАРКИРОВКА НА ШИНАХ / Значение всех цифр и букв на резинеСкачать

Что означает МАРКИРОВКА НА ШИНАХ / Значение всех цифр и букв на резине

Куплю слот в хорошем районе

Сразу скажу, что винить во всём какие-то чужие компоненты не стоит. Здесь всё написано нами, начиная от самой программы, заканчивая драйверами. Так что весь путь прохождения данных может быть проконтролирован. Неизвестность наступает только когда запрос ушёл в аппаратуру.

После первичного разбора выяснилось, что скорость не ограничивается в «длинных» слотах PCIe и ограничивается в «коротких». Длинные — это куда можно вставить карты x16 (правда, один из них работает в режиме не выше x4), а короткие — только для карт x1.

Превышена пропускная способность шины

Всё бы ничего, но контроллеры в текущих картах в принципе не могут работать в режиме, отличном от PCIex1. То есть, все контроллеры должны быть в абсолютно идентичных условиях, независимо от длины слота! Ан нет. Кто живёт в «длинном» — работает быстро, кто в «коротком» — медленно. Хорошо. А быстро — насколько быстро? Добавляем третий накопитель, пишем на все три.

В «коротких» слотах ограничение всё ещё в районе 290 МБ/с:

В «длинных» — в районе 400 МБ/с:

Я перерыл весь Интернет. Во-первых, через некоторое время я уже смеялся со статей, где говорится о том, что пропускная способность PCIe gen 1 и gen 2 для x1 составляет 250 и 500 МБ/с. Это «сырые» мегабайты. За счёт оверхеда (я использую это нерусское слово, чтобы обозначить служебный обмен, идущий по тем же линиям, что и основные данные) для gen 2 получается именно 400 мегабайт в секунду полезного потока. Во-вторых, я упорно не мог найти ничего про магическую цифру 290 (забегая вперёд — до сих пор не нашёл).

Отлично. Пытаемся глянуть на топологию включения наших контроллеров. Вот она (013-015 — это суффиксы имён устройств, по которым я сопоставил их, чтобы как-то различать). Зелёные —быстрые, красные — медленные.

Контроллер «015» мы даже не рассматриваем. Он живёт в привилегированном слоте, предназначенном для видеокарты. Но 013-й подключён к тому же коммутатору, что и 012-й с 014-м. Чем он отличается?

Отдельные статьи говорят, что разные карты могут отличаться параметрами Max Payload. Я изучил конфигурационное пространство всех карт — этот параметр стоит у всех в одном и том же, минимально возможном значении. Мало того, в документации на чипсет этой материнки сказано, что иного значения и быть не может.

Читайте также: Honda crv летние шины

В общем, я перерыл всё в конфигурационном пространстве — всё настроено идентично. А скорость разная! Многократно перечитал документацию на чипсет — никаких настроек пропускной способности. Приоритеты — да, что-то про них написано, но тесты же ведутся при полном отсутствии нагрузки по другим каналам! То есть дело не в них.

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

Видео:пропускная способность шиныСкачать

пропускная способность шины

А что там у других плат?

Попробовали поменять материнскую плату на точно такую же. Никаких изменений. Попробовали заменить процессор (были основания считать, что он барахлит). Тоже никаких изменений скорости (но старый процессор и правда барахлил). Поставили материнскую плату более нового поколения — всё просто летает на всех слотах. Причём предельная скорость уже не 400, а 418 мегабайт в секунду, хоть в «длинных», хоть в «коротких» слотах:

Но здесь — никаких чудес. Привычным движением руки (за эти дни уже привык) считываем конфигурационное пространство и видим, что параметр Max Payload установлен не на 128, а на 256 байт.

Больше размер пакета — меньше количество пакетов. Меньше оверхед на их пересылку — больше полезных данных успевает пробежать за то же время. Всё верно.

Видео:Индекс скорости и Индекс нагрузки - что это такое?Скачать

Индекс скорости и Индекс нагрузки - что это такое?

Так кто же виноват?

Точного ответа на вопрос из заголовка, со ссылкой на документы, я не дам. Но мысль моя пошла по следующему пути: допустим, что ограничение потока задано внутри чипсета. Его нельзя программировать, оно задано намертво, но оно есть. Например, оно равно 290 мегабайт в секунду на каждую дифф. пару. Больше — режется уже где-то внутри чипсета на его внутренних механизмах. Поэтому в «длинном» слоте (куда можно воткнуть карты вплоть до x4) внутри чипсета для нашей карты ничего не режется, а мы упираемся в физический предел шины x1. В «коротком» же разъёме мы упираемся в это ограничение.

На самом деле, проверить это не просто, а очень просто. Втыкаем в 013-й слот не AHCI, а SAS-контроллер, который обслуживает сразу 8 накопителей и может работать в режимах PCIe вплоть до x4. Подключаем ему 4 шустрых SSD накопителя. Смотрим скорость записи — аж душа радуется:

Теперь добавляем те 4 диска, которые фигурировали в первых тестах. Скорость работы SSD предсказуемо просела:

Вычисляем суммарную скорость, проходящую через SAS-контроллер, получаем 1175 мегабайт в секунду. Делим на 4 (столько линий идёт в «длинный» слот), получаем… Барабанная дробь… 293 мегабайта в секунду. Где-то я это число уже видел!

Итак, в рамках данного проекта было доказано, что дело не в нашей программе или драйвере, а в странных ограничениях чипсета, которые наверняка «зашиты» намертво. Была выведена методика подбора материнских плат, которые могут быть использованы в проекте. А в целом, выводы делаем следующие.

Видео:Ширина шины: какая лучше? Простой способ выбратьСкачать

Ширина шины: какая лучше? Простой способ выбрать

Upgrade дисковой подсистемы старого сервера с шиной PCIe 1.0 — 2.0

Превышена пропускная способность шины

Понятно, что в первую очередь нужно, как правило:

  1. Увеличить оперативную память. Это настолько очевидный ход, что я даже не счёл нужным писать об этом в основной статье
  2. Поставить дополнительный процессор(ы) или заменить оба процессора на максимально производительные версии поддерживаемые сокетами сервера.

Для старых серверов, что память, процессоры, как правило, можно найти по бросовым ценам.

В определённый момент перед любым владельцем собственного сервера становится вопрос — upgrade или новый сервер.

Поскольку цена нового сервера сейчас может измеряться миллионами рублей, то многие идут по пути апгрейда.

Для удачного апгрейда очень важно использовать компромиссы, чтобы за незначительную плату (по отношению к цене нового сервера) мы получили существенный выигрыш производительности.

В статье приведён список серверных SSD PCI-E 2.0 x8, которые сильно подешевели сейчас, указаны рейд-контроллеры с поддержкой SSD-кеширования и испытан SATA III SSD на интерфейсе SATA II.

Самый очевидный способ апгрейда дисковой подсистемы — это переход с HDD на SSD. Это справедливо как для ноутбуков, так и для серверов. На серверах, пожалуй, отличие только в том, что SSD можно легко скомпоновать в рейд.

Правда есть тонкие моменты связанные с тем, что портов SATA III на старом сервере может и не быть и тогда придётся заменить или поставить соответствующий контроллер.

Есть, конечно, и промежуточные способы.

Читайте также: Строительство из отходов шин

Видео:Увеличение пропускной способности каналов связи в IP-видеонаблюденииСкачать

Увеличение пропускной способности каналов связи в IP-видеонаблюдении

Кеширование на SSD.

В целом этот способ неплохо подходит для баз данных, 1C, любого произвольного доступа. Скорость действительно убыстряется. Для огромных файлов, видеонаблюдения этот способ бесполезен.

Рейд-контроллеры LSI (IBM, DELL, CISCO, Fujtsu)

Начиная с серии 92xx у LSI есть технология CacheCade 2.0, которая позволяет использовать почти любые SATA SSD как кеш рейд-массива. Как на чтение, так и на запись. И даже создавать зеркало из кеширующих SSD.

С брендированными контроллерами всё сложнее. В особенности это касается IBM. Ключи и SSD для CacheCade придётся покупать у IBM за бешеные деньги, поэтому проще сменить контроллер на LSI и купить по-дешевке хардварный ключ. Софтверные ключи стоят существенно дороже хардварных.

Рейд-контроллеры Adaptec

На контроллерах Adaptec есть технология MaxCache, которая также позволяет использовать SSD как кеш. Нас интересуют версии контроллеров, которые заканчиваются на букву Q.

Q-контроллеры способны использовать почти любой SSD, а не только SSD поставляемые Adaptec.

  • Начиная с 5xxx у всех контроллеров есть поддержка Hybrid raid. Суть этой технологии, что производится чтение всегда с SSD, когда есть зеркало один из дисков в котором SSD.
  • 5xxxQ, например 5805ZQ. Эти контроллеры поддерживают MaxCache 1.0. Только кеширование чтения.
  • 6xxQ, например 6805Q. MaxCache 2.0. Кеширование чтения и записи.
  • 7xxQ, например 7805Q. MaxCache 3.0. Кеширование чтения и записи.
  • 8xxQ для целей апгрейда почти не имеет смысла использовать из-за высоких цен.

Статья про кеширование на SSD на Хабре (контроллеры и ОС).

Программные технологии кеширования на SSD

Я не буду освещать эти технологии. Практически в любой ОС сейчас они поддерживаются. Мне запомнилось, что при использовании btrfs, она автоматически переправляет запросы на чтение к устройству с самой короткой очередью — SSD.

Видео:ТИХИЕ ШИНЫ ЭТОГО НЕ ЗНАЮТ БОЛЬШИНСТВО АВТОМОБИЛИСТОВСкачать

ТИХИЕ ШИНЫ ЭТОГО НЕ ЗНАЮТ БОЛЬШИНСТВО АВТОМОБИЛИСТОВ

SATA III SSD на интерфейсе SATA II

Поскольку не всегда есть возможность и деньги на новый контроллер, то возникает вопрос насколько хорошо SATA III SSD работают на устаревшем интерфейсе SATA II.

Проведём небольшой тест. В качестве подопытного у нас будет SATA III SSD Intel S3710 на 400ГБ.

Random Read, iopsAvg read latency, mSRandom Write, iopsAvg write latency, mSLinear read, MB/sLinear write, MB/s
SATA II212412135804282235
SATA III680730.468613920.52514462

Как видно разница и по линейной скорости, IOPS, задержкам очень приличная, поэтому имеет смысл использовать только SATA III интерфейс, а если его нет, то ставить контроллер.

Справедливости ради скажу, что по другим экспериментам разница в скорости случайного чтения и записи получилась незначительная. Возможно, такая большая разница по IOPS между SATA II и SATA III могла получиться потому что у меня стоял какой-то крайне неудачный контроллер SATA II или драйвер с какими-то багами.

Однако факт такой, что нужно проверять скорость SATA II — вдруг у вас такой же тормозной контроллер. В этом случае обязателен переход на SATA III контроллер.

Видео:НИЗКОПРОФИЛЬНЫЕ ШИНЫ ЭТО ДОЛЖЕН ЗНАТЬ КАЖДЫЙ АВТОМОБИЛИСТСкачать

НИЗКОПРОФИЛЬНЫЕ ШИНЫ ЭТО ДОЛЖЕН ЗНАТЬ КАЖДЫЙ АВТОМОБИЛИСТ

PCIe SSD на шине PCI-e 2.0 или 1.0

Как известно, самые быстрые SSD — это PCI-e NVMe, которые не ограничены протоколами SAS или SATA.

Однако при установке современных PCI-e SSD нужно учитывать факт, что большинство из них используют всего 4 линии PCI-e, как правило PCI-e 3.0 или 3.1.

А теперь посмотрим таблицу скоростей шины PCI-e.

Пропускная способность PCI Express, Гбайт/с
Год
выпуска
Версия
PCI Express
КодированиеСкорость
передачи
Пропускная способность на x линий
×4×8×16
20021.08b/10b0.50 Гбайт/с1.0 Гбайт/с2.0 Гбайт/с4.0 Гбайт/с
20072.08b/10b1.0 Гбайт/с2.0 Гбайт/с4.0 Гбайт/с8.0 Гбайт/с
20103.0128b/130b1.97 Гбайт/с3.94 Гбайт/с7.88 Гбайт/с15.8 Гбайт/с

При установке PCI 3.0 х4 SSD в шину PCI-e 2.0 он будет работать на таком же числе линий, но на существенно меньшей скорости. Есть проблема в том, что линейные скорости современных PCI-e SSD превышают пропускную способность шины PCI-e 2.0 и тем более PCI-e 1.0.

M.2 SSD и PCI-e переходник

Есть неплохие варианты апгрейда, когда мы покупаем за 10 долларов переходник и ставим M.2 SSD в сервер, но опять таки для хороших SSD будет зарезание скоростей (в особенности на PCI-e 1.0), да и M.2 SSD не всегда отличаются готовностью для серверных нагрузок: большой износостойкостью, защитой по питанию и стабильностью скоростных характеристик из-за заполнения SLC-кеша на дешевых моделях.

Итак этот способ может подойти только для сервера с шиной PCI-e 2.0 и занятом некритичной работой.

PCI-E 2.0 x8 SSD

Самый экономически логичный апгрейд — это использование PCI-E 2.0 x8 SSD для серверов с шиной PCI-e 1.0 (пропускная способность до 2 ГБ/сек) и PCI-e 2.0 (до 4 ГБ/сек).

Подобные SSD серверного сейчас можно совершенно недорого купить на как на различных маркетплейсах, так и на интернет-аукционах, в том числе и в России.

Я составил таблицу таких морально устаревших SSD, которые прекрасно разгонят ваш старый сервак. В конец таблицы я добавил несколько SSD с интерфейсом PCI-E 3.0 x8. Вдруг вам повезёт и попадутся по разумной цене.

НазваниеTBPBWPCI-E4k read iops, K4k write iops, Kread, MB/swrite, MB/s
Fusion-io ioDrive II DUO MLC2.432.548049030002500
SANDISK FUSION IOMEMORY SX350-13001.3422534528001300
SANDISK FUSION IOMEMORY PX600-13001.31623537527001700
SANDISK FUSION IOMEMORY SX350-16001.65.527037528001700
SanDisk Fusion ioMemory SX300-32003.21134538527002200
SanDisk Fusion ioMemory SX350-32003.21134538528002200
SANDISK FUSION IOMEMORY PX6002.63235038527002200
Huawei ES3000 V21,68,7639527015501100
Huawei ES3000 V23,217,5277023031002200
EMC XtremSF2,234011027001000
HGST Virident FlashMAX II2,23335010327001000
HGST Virident SSD FlashMAX II4,810.1269512600900
HGST Virident FlashMAX III2,27.15315927001400
Dell Micron P420M1.49.2750953300630
Micron P420M1.49.2750953300630
HGST SN2601.625.10120020061702200
HGST SN2603,217,52120020061702200
Intel P36083,217,58508045002600
Kingston DCP10003,22,78100018068006000
Oracle F3203.22975012055001800
Samsung PM17253.229100012060002000
Samsung PM1725a3.229100018062002600
Samsung PM1725b3.21898018062002600

Превышена пропускная способность шины

Из этих SSD особняком стоят Fusion ioMemory. Научным директором Fusion был Стив Возняк. Потом эту компанию за 1.2 миллиарда долларов купила SanDisk. В своё время они стоили от $50 000 за штуку. Сейчас же можно их купить за несколько сотен долларов в новом состоянии за диск ёмкостью от 1ТБ и выше.

Если приглядеться к таблице, то видно они имеют довольно высокое число IOPS на запись практически равное числу IOPS на чтение. Учитывая их текущую цену, на мой взгляд, на эти SSD стоит обратить внимание.

Правда у них есть несколько особенностей:

  1. Они не могут быть загрузочными
  2. Нужен драйвер для использования. Драйвера есть практически подо всё, но под последние версии Linux их придётся компилировать.
  3. Оптимальный размер сектора у них 4096 байт. (512 тоже поддерживается)
  4. Драйвер при наихудшем сценарии может потреблять довольно много RAM (при размере сектора 512 байт)
  5. Скорость работы зависит от скорости процессора, поэтому энергосберегающие технологии лучше отключать. Это и плюс и минус, так как с помощью мощного процессора устройство может работать даже быстрее, чем это указано в спецификациях
  6. Нуждается в хорошем охлаждении. Для серверов это не должно быть проблемой.
  7. Не рекомендуется для ESXi, так как ESXi предпочитает диски с сектором 512N, а это может повлечь большой расход памяти драйвером.
  8. Брендированные версии этих SSD, как правило, не поддерживаются вендорами до уровня последнего драйвера от SanDisk (март 2019)

Я провёл тесты Fusion ioMemory в сравнении с довольно современным серверным SSD Intel P3700 PCI-E 3.0 x8 (последний стоит раза в 4 дороже, чем Fusion похожей ёмкости). Заодно можно и посмотреть насколько сильно зарезается скорость из-за шины x4.

Fusion PX600 1.3TB PCI-E 2.0 x8Intel P3700 1.6TB PCI-E 3.0 x4

Да, линейная скорость чтения однозначно зарезается у Intel P3700. По паспорту должна быть 2800 МБ/сек, а у нас 1469 МБ/с. Хотя в целом можно сказать, что при шине PCI-e 2.0 можно использовать серверные SSD PCI-E 3.0 x4, если их удастся достать по разумной цене.

Выводы

Дисковую подсистему старого сервера с шиной PCI-E 1.0 или 2.0 можно раскочегарить за счёт использования SSD, которые умеют утилизировать 8 линий PCI-E, которые дают пропускную способность до 4ГБ/сек (PCI-E 2.0) или 2ГБ/сек (PCI-E 1.0). Наиболее экономически это выгодно сделать используя морально устаревшие PCI-E 2.0 SSD.

Также просты в реализации компромиссные варианты связанные с покупкой ключа CacheCade для контроллеров LSI или замены контроллера Adaptec на Q-версию.

Ну и совершенно банальный способ — это купить (рейд)контроллер SATA III для того, чтобы SSD работали на полной скорости и вынестина них всё требующее скорости.

  • Свежие записи
    • Нужно ли менять пружины при замене амортизаторов
    • Скрипят амортизаторы на машине что делать
    • Из чего состоит стойка амортизатора передняя
    • Чем стянуть пружину амортизатора без стяжек
    • Для чего нужны амортизаторы в автомобиле

    🔍 Видео

    Жёсткость шины и высота профиля. Размеры шин. Как выбрать.Скачать

    Жёсткость шины и высота профиля. Размеры шин. Как выбрать.

    Секрет чернения шин от перекуповСкачать

    Секрет чернения шин от перекупов

    Как понять, когда протектор износился и шины пора менятьСкачать

    Как понять, когда протектор износился и шины пора менять

    Системная шина персонального компьютера ISAСкачать

    Системная шина персонального компьютера ISA

    Вот ЧЕМ надо ЧЕРНИТЬ ШИНЫ (качественно, безопасно, дешево)Скачать

    Вот ЧЕМ надо ЧЕРНИТЬ ШИНЫ (качественно, безопасно, дешево)

    АвтоОрск / АвтоГаджеты / Почему нельзя ставить колеса больше заводских?Скачать

    АвтоОрск / АвтоГаджеты / Почему нельзя ставить колеса больше заводских?

    На какую ось ставить новые шины | Правила перестановки шинСкачать

    На какую ось ставить новые шины | Правила перестановки шин

    Полный гид по ротации колёс: схемы для разных приводов и рисунков протектораСкачать

    Полный гид по ротации колёс: схемы для разных приводов и рисунков протектора

    Системная шина персонального компьютера AGPСкачать

    Системная шина персонального компьютера  AGP

    Как шины влияют на расход топливаСкачать

    Как шины влияют на расход топлива

    Ремонт шины! Быстрый 100 способ своими рукамиСкачать

    Ремонт шины! Быстрый 100 способ своими руками

    Хранение шин. 3 основных правила.Скачать

    Хранение шин. 3 основных правила.
Поделиться или сохранить к себе:
Технарь знаток