Как стать автором
Обновить

Зачем и как мы разработали свою серверную материнскую плату

Блог компании Конференции Олега Бунина (Онтико) Высокая производительность *Производство и разработка электроники *Компьютерное железо DIY или Сделай сам
Всего голосов 51: ↑36 и ↓15 +21
Просмотры 7K
Комментарии 38

Комментарии 38

Проброс сети через CPU в системе «доставки и обработки видео», вы серьёзно?

Только перед тем, как набрасываться на Максима Лапшина (@erlyvideo), вспомните, что этот человек написал Erlyvideo, затем Flussonic (и успешно продаёт его), лауреат премии HIghLoad++ за вклад в развитие IT-экосистемы в России, работает с видео уже более десяти лет и об обработке видео знает, наверное, чуть ли не больше всех в стране.

Я бы на вашем месте переформулировал вопрос без токсичного наброса "вы серьезно". Во что-нибудь типа "Подскажите, пожалуйста, зачем вы сделали проброс сети через CPU?"

Так будет понятно, что это вы чего-то не догнали, а не Максим ошибся.

Но это так, непрошенный совет...

 работает с видео уже более десяти лет и об обработке видео знает, наверное, чуть ли не больше всех в стране.

Звучит как "сначала добейся", фу так делать.

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

Согласен, был неправ.

Простите, но что нужно «догонять» лауреату премии, чтобы понимать, что что-то более-менее качественное в сфере доставки (и чуть менее в сфере обработки) видео чем «мы взяли АРМ, а не Intel» отметает даже саму идею пропускать сетевой трафик чере CPU без предварительной фильтрации. Пусть у вас там хоть ХайЛоад+=2 с опытом 20 лет, но 200 мегабит - это дичь.

Естественно, если мы понимаем термин доставка видео с камер и броадкастинг одинаково, в чём у меня сомнения, но кто я, а кто Максим, тут да, аргументов нет.

Так будет понятно, что это вы чего-то не догнали, а не Максим ошибся.

Вот сейчас вы немного перегнули палку, не надо так. Пока не доказано обратное, в публичной дискуссии на технические темы спрашивающий, даже с подковыркой, считается не менее квалифицированным специалистом, чем автор материала. Почему бы вам не ответить в стиле "Мы не использовали аппаратные ускорители...", а потом выдохнуть и продолжить "... потому что мы собирались использовать их позже"? Фидбек, даже негативный, всё равно фидбек.

Согласен, с формулировками был неправ.

Не у всех есть ресурсы Google или Microsoft чтобы выводить трафик сразу аж на ASIC и FPGA, или городить огород прямиком на шине PCIe.

Скажу больше: не у всех есть желание заниматься этой дичью. Тем более что одна из целей - минимизация стоимости клиентского устройства.

А точно нужно быть гуглом, чтобы осилить какой нибудь Zynq 7020? Стоит 100$, есть и ARM и гигабитная сетка, и PCIe, и при этом FPGA на борту и можно навернуть аппаратных кодеков и прочей реал-тайм прелести. В крайнем случае есть DSP процы с ARM типа DaVinci от TI, которые вообще заточены под обработку видео.

не у всех есть желание заниматься этой дичью

"Мы сделали сервер, но он дрянь полная, ибо мы не хотели заниматься этой дичью"

Насколько мне известно свою аппаратную базу начинают разрабатывать как раз с целью сделать хорошо и дешево конкретно под свою задачу.

Нижние Zynq 7000 - это конечно весело, но там FPGA не настолько жирный чтобы на нём реализовывались серьёзные задачи обработки видео. Его конечно пытаются продавать для таких задач, но это натягивание совы на глобус. Нужно очень постараться чтобы на этой штуке ускорять видео и при этом выиграть по производительности, энергопотреблению или цене на фоне тех же видеокарт, у которых в железе уже и ядер с FPU вагон, и кодеки под кучу разных форматов из коробки.

В целом сейчас пытаться перетаскивать типичные для GPU задачи на FPGA - идея крайне спорная, по озвученным выше причинам. Без опыта вкатываться в такое я не посоветую никому.

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

Так а при чем тут GPU? Речь идёт о данном сервере с процом ARM. Если там не Ampere, а это не он, то Zynq является полноценной альтернативой для какого-нибудь ARM SoC от Broadcom.

И все же - минимизация стоимости - это одна из подзадач всей той дичи, которой "никто не хочет заниматься". Но вот и выходит по логике вещей, что и минимизация не очень то и сдалась с таким подходом...

хотели Техническое Задание (говорить с придыханием). Конечно, мы его родить не могли

Просто типичные манагеры... Как можно заниматься 10 лет софтом и не смочь составить то требования хотя бы и оформить его в задание? А самое интересное как вы собрались после завершения разработки понять разработали ли вам то, что нужно или нет?

«Это же вы написали! Вы же сами захотели посреди комнаты фонтан!»

Теперь все понятно. Вы захотели кнопку "сделать заебись", но ответственность и думать - это слишком сложно))

И всё, оказывается, будет работать — просто не так быстро, как нужно

Страшно, когда ардуинщики берутся делать сервер. При таком подходе можно было все спаять МГТФом, на частотах 500 МГц запустилось бы как раз.

А вот system on module — вполне можно

Ааааа, теперь все ясно, я думал вы сервер сделали, а вы SoM малины запустили. Вот он сервер, который мы заслужили.

Ну и просто круто от Intel отказаться!

Когда не смог осилить проц, но решил оформить это как победу. У меня в одной из бывших компаний был похожий CТО, когда не смог оправдывался все фразой "оно нам просто не нужно". ARM это хорошо, но когда это Ampere.

> Просто типичные манагеры… Как можно заниматься 10 лет софтом и не смочь составить то требования хотя бы и оформить его в задание?

Сейчас так принято. Во времена, когда даже дорогущий софт поставляется по принципу ass is, можно хреначить что угодно с двухнедельными итерациями (по новомодным методам) пока все не устанут и не сделают вид, что всем все нравится. Я даже начинаю понимать призывающих отказаться от атомной энергетики. Ибо с современными способами проектирования это добром не кончится (смайлик добавить по вкусу). А недавний пример с самолетами мы еще помним.

Статья откровенно пустая. Вы там что, исчерпали квоту на конкретику?

Читать, как вы весело вкатились в разработку плат высокой сложности и пробежались по граблям - это конечно норм. Инженерно-технический треш, который вылезает на задачах такого типа - всегда весело.

Но ёлы-палы, вы не умрёте если напихаете в статью хотя бы немного технических деталей. А то выходит так, что вы делаете ускоритель непонятно чего, на непонятно какой элементной базе, сталкиваетесь с непонятно какими проблемами, делаете непонятно какой прототип и уходите на второй круг. Даже фотка итогового устройства одна, и в шакальном разрешении.

Это "несушка" на 8 штук тегра nx. Это даже не ксавьеры ))

"технологи возвращали нам платы со словами: «Это нельзя сделать» "
Звучит странно. Когда разрабатываешь топологию HDI (High-Density-Interconnect) PCB - всегда заранее знаешь технологические параметры и ограничения, все DRC, препреги, ожидаемые импедансы, типы переходных отверстий, какие слои паруются, будут ли лазерные отверстия, можно ли отверстия стекировать. Если потом технологи сказали "нет", то для конструктора это залет.

В теории информация у производителя исчерпывающая и говорит всё что разработчику платы нужно знать о его возможностях. Вбиваешь прям в DRC, делаешь плату, кидаешь в производство, получаешь "ок" на следующий день и плата у тебя в руках через месяц. Конечно, эта плата сделана идеально и запускается с первого раза. В теории.

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

информация немного не соответствует реальным возможностям производства

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

Могу поделиться "практикой", 20 лет занимался разработкой "железа" и, в том числе спроектировал сотни PCB под серийное производство (работа на самом деле очень скучная и рутинная, но это была только часть моих обязанностей, так что было весело перепрыгивать между программированием, HDL-дизайном и платами):

- "вбиваешь прям в DRC, делаешь плату, кидаешь в производство, получаешь "ок" на следующий день и плата у тебя в руках через месяц" - да, а что тут сложного? Иногда бывают уточняющие вопросы от производителей, изредка что-то минимально надо переделать. Категорическое "не сделаем" очень-очень редко звучало, чаще были предложения - "а вот так было бы проще, надежнее и дешевле, согласны? Доделаете?"


- "Конечно, эта плата сделана идеально" - с мало-мальски сложными платами на первой итерации идеально не бывает никогда - там с размерами ошибся, там компонент при закупке поменяли, тут разъем подвинуть, тут в схеме ошибся, тут новую фичу хотят, несколько итераций - это нормально

- "запускается с первого раза". Да, запускается. У меня были буквально единичные случаи когда не запуcкалось. Это сейчас кетайцы, есть прямой доступ к ним и дешевое прототипирование. А когда году в начале нулевых отдаешь $5K за десять прототипов 12-слойки, то к проектированию подходишь очень тщательно. Тут и независимое ревью компонентов в CAD-е, и ревью схемы, и сквозная верификация платы со схемой, и сигнал интегрити и все-все-все. Косяки на первых платах есть всегда. Но критический косяк приводящий к незапуску, который нельзя пропатчить паяльником - это очень серьезный залет.

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

Cкажите пожалуйста, "сквозная верификация платы со схемой" - это имеется в виду в ручном режиме (как раз этим я регулярно занимаюсь), или в каком-то САПРе?

Информации довольно мало, но процесс в целом выглядит так, как будто его планировали и осуществляли относительно малоквалифицированные (по крайней мере в этой конкретной области) люди. Складывается ощущение, что члены команды подраздували трудности и спотыкались на самых очевидных местах.

Прямо сейчас я рисую схему похожего устройства (насколько можно понять ваши замыслы из туманных намеков) на базе одного из процессоров семейства NXP Layerscape, в разработке "железа" там нет ничего такого уберсложного, чего не осилила бы обычная команда схемотехник + конструктор печатных плат + конструктор-механик. Все доки свободно лежат на сайте NXP и доступны сразу после регистрации, демо-борды продаются по себестоимости (~ $4k, если не ошибаюсь), техподдержка отвечает.

Конечно, запустить Intel’овский процессор класса Core​ i9 на столе — это безнадега. Потому что это очень сложное устройство с жутко синхронизированными таймингами старта, подачей напряжения и пр.

Это достаточно рядовая инженерная проблема.

Например, технологи возвращали нам платы со словами: «Это нельзя сделать», и железячники перекомпоновывали детали на плате — переносили, перетаскивали.

Фигня какая-то. У каждого производителя есть список технологических требований (пример для "Резонита"), цифры из которого вводятся в ваш САПР. После этого отгрузить плату, которую "возвращают технологи", становится практически невозможно.

Не упирайте так на git и CI, здесь это не главное. Выхлоп инженера - здоровенный бинарь (~5 Мбайт схема, ~30 Мбайт плата), относитесь спокойно к тому, что не видите толкового diff'а.

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

Не упирайте так на git и CI, здесь это не главное

Особенно когда в современных САПР-ах есть собственные системы контроля версий нативные типа прекрасного Altium 360 Pro за 800$/год с дифами, генерацией КД, версионностью и хранением в облаке + удобный веб просмоторщик + администрирование доступа.

Оно есть, но не для того о чём вы думаете. Да, факапы на разных этапах пути неизбежны, но у железячников к ним подход особый, они их предусматривают закладывая в дизайн пространство для манёвра. В зависимости от объёма производства и личной заинтересованности :-)

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

За зарплату миддла, чудес будет не меньше. Имеющие опыт люди не работают за еду и спрос на их услуги велик, особенно в последнее время. Ибо скупой здесь пролюбит и время и деньги :-)

Красивый рассказ, составленный из нелепых баек коллег.

Там ведь написали, что большинство делает что-то на специфичное на гос или оборонку. Там скорее всего будет все на уровне прошлого тысячелетия. Вообще выглядит как наколенная разработка, для которой искали где подешевле а не где нормально.

Если есть не просто доставка видео, но и его обработка, то тут важно наличие аппаратных кодеков в процессоре. В Intel их точно достаточно, а вот есть ли они на выбранном ARM процессоре? И как с их поддержкой в ядре? Может они есть, но не задействованы. Долга конечно просадка в скорости может быть серьёзной, и проблема уже не в сетевой части.

Доставку даже HD/3G с камеры через CPU никто в своём уме не делает, на что-то более серьёзное тем более никакой ARM не поможет, даже без обработки.

На этом этапе у нас была офигенная история. Сестру этой платы курьер при доставке к дизайнеру-железячнику просто выбросил по пути в мусорный бак. Плату, которая была практически в единственном экземпляре.

Кажется, история про этот случай была бы интереснее.

Мелкое фото платы, где большая часть закрыта радиаторами. А можно без радиаторов? И с 2х сторон?

И ссылку на архив с исходниками!))

Кому нужны исх.коды для ориг.конструкции? — Можно только посмотреть, если хватит терпения. Аналогично фото 2х внешних слоев, которые вряд ли получится перевести в чертежи этих слоев, для многослойной платы, практической ценности не имеют. Простое любопытство, нпр., оценить плотность монтажа.

Это лишь ваше мнение, а для авторов это может быть вполне закрытой и ценной информацией. Обычно в компаниях, что производят сервера NDA даже фотки не позволяют показывать. Максимум фотки и части дизайна предыдущих поколений.

Если в компаниях паранойя, то это неоспоримо.


Тогда может не надо было публиковать эту статью: вдруг кто-то что-то использует?

Если в компаниях паранойя, то это неоспоримо.

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

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

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

сразу вспоминаются платы asrock которые thin mini itx, а по факту что-то свое, но еще интереснее! там mxm слот, т.е. плата уже чуть побольше. вместо обычных 1слота m.2 и второго недо-m.2, их несколько штук!

если бы сюда добавить больше VRM, pci-e x8 перевернутый продольно, оптические/3-10Гбит порты за доп $ и тд. а. особенно 2 слота sodimm мало. есть же некоторые платы от рабочих станций/моноблоков, и там слотов больше 2, но компактны. как есть и под 2011, 2011-v3 китайские платы очень компактные, на которых смогли аккуратно и компактно разместить слоты под оперативку, гут!

крч, нужное что-ниб нафаршированное под завязку в минимальном корпусе. еще и кулер выпустить, который одновременно с мультика, питальников и тп снимает теплосьемником(ками), чтобы закрывал сверху на все 17*20 см. и в высоту не сильно выпирало.+- как у видюх. accelero s1 plus. только побольше и поквадратнее, с небольшими в высоту 90+- мм тоненькими вентиляторами как на видюхах.

крч. скопировать +- всю ту плату асрока (но питальник куда мощнее!), но под новые сокеты, а лучше что-ниб серверное , чтоб кол-во ядер надолго хватило.

Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.