Erlang на embedded платформе
От: Gaperton http://gaperton.livejournal.com
Дата: 18.11.08 20:49
Оценка:
Кто-нибудь пробовал? Можете описать, какие минимальные требования, как он вообще живет, и с какими проблемами столкнулись?
Re: Erlang на embedded платформе
От: Аноним  
Дата: 18.11.08 23:06
Оценка:
Здравствуйте, Gaperton, Вы писали:

G>Кто-нибудь пробовал? Можете описать, какие минимальные требования, как он вообще живет, и с какими проблемами столкнулись?

нет. но скажи нам просто, зачем???
Re: Erlang на embedded платформе
От: Cyberax Марс  
Дата: 18.11.08 23:33
Оценка: +1
Здравствуйте, Gaperton, Вы писали:

G>Кто-нибудь пробовал? Можете описать, какие минимальные требования, как он вообще живет, и с какими проблемами столкнулись?

Пробовал. Запускал Erlang на MIPS'овой доске с 233Mhz CPU. Результаты, откровенно, не очень-то обрадовали.

Тормозит весьма сильно. Следующую версии переписали на С++ в Erlang'овом стиле.
Sapienti sat!
Re: Erlang на embedded платформе
От: gandalfgrey  
Дата: 19.11.08 12:52
Оценка:
Здравствуйте, Gaperton, Вы писали:

G>Кто-нибудь пробовал? Можете описать, какие минимальные требования, как он вообще живет, и с какими проблемами столкнулись?


Ну, не совсем ембеддед — на МикроПС запускали с Линуксом. 64 мега памяти, Целерон. Работает нормально ( Мнезию не использовали ). Каких-то особенных проблем не вылезло — дык, это обычный компутер, только маааленький.
Читал в свое время ( лет 5 назад ), что люди запускали Ерланг на свистках ( это пень 3-ий 32/64 мега РАМы и флеш внутри сетевого разьема ). Жаловались на производительность — но это и понятно.
Re[2]: Erlang на embedded платформе
От: Gaperton http://gaperton.livejournal.com
Дата: 21.11.08 08:03
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Здравствуйте, Gaperton, Вы писали:


G>>Кто-нибудь пробовал? Можете описать, какие минимальные требования, как он вообще живет, и с какими проблемами столкнулись?

C>Пробовал. Запускал Erlang на MIPS'овой доске с 233Mhz CPU. Результаты, откровенно, не очень-то обрадовали.

Скоко памяти было на доске было всего, скоко было доступно VM, включен ли был своп, и если да, то куда? Применяли ли HiPE? Что была за задача?

C>Тормозит весьма сильно. Следующую версии переписали на С++ в Erlang'овом стиле.


Профилировали? Что тормозит? Переписывание кусков на linked-in driver рассматривали?

Хм. В 98 году помнишь какие процы были? Вот мне интересно — как они в AXD301 его на тормозных ультрах поднимали.
Re[2]: Erlang на embedded платформе
От: Gaperton http://gaperton.livejournal.com
Дата: 21.11.08 08:05
Оценка:
Здравствуйте, Аноним, Вы писали:

G>>Кто-нибудь пробовал? Можете описать, какие минимальные требования, как он вообще живет, и с какими проблемами столкнулись?

А>нет. но скажи нам просто, зачем???

А вы с какой целью интересуетесь?
Re[2]: Erlang на embedded платформе
От: Gaperton http://gaperton.livejournal.com
Дата: 21.11.08 08:11
Оценка:
Здравствуйте, gandalfgrey, Вы писали:

G>Здравствуйте, Gaperton, Вы писали:


G>>Кто-нибудь пробовал? Можете описать, какие минимальные требования, как он вообще живет, и с какими проблемами столкнулись?


G>Ну, не совсем ембеддед — на МикроПС запускали с Линуксом. 64 мега памяти, Целерон. Работает нормально ( Мнезию не использовали ). Каких-то особенных проблем не вылезло — дык, это обычный компутер, только маааленький.


МикроПС — это что? PC104? 64 метра — супер. Какая частота у целерона? Диск или флеш был? Своп включали? Какой дистрибутив применяли? HiPE включали?

G>Читал в свое время ( лет 5 назад ), что люди запускали Ерланг на свистках ( это пень 3-ий 32/64 мега РАМы и флеш внутри сетевого разьема ). Жаловались на производительность — но это и понятно.


Скажем так, на крайняк можно собрать платформу на базе младших версий Intel Atom. Тогда он точно будет не хуже по производительности, чем Эрикссоновское железо десятилетней давности, на котором Эрланг жил, и энергии жрать будет мало.

Кроме того, есть SoC от интела с интегрированными мостами на базе Pentium M. А также, более дешевые и тормозные SoC от AMD (Geode), и совсем неторопливые <100 Мгц писюки от сторонних производителей.

Но я думаю об армах, примерно 400Мгц или около того, и оперативкой около 128 метров. Без свопа. С флешкартой в качестве диска. Пойдет?
Re[3]: Erlang на embedded платформе
От: gandalfgrey  
Дата: 21.11.08 10:00
Оценка:
Здравствуйте, Gaperton, Вы писали:

G>МикроПС — это что? PC104? 64 метра — супер. Какая частота у целерона? Диск или флеш был? Своп включали? Какой дистрибутив применяли? HiPE включали?

МикроПС — это такая коробочка, размером от электробритвы до толстой книги. Используется для промышленных нужд. Начинка бывает самая разная — от Пня 2 до Пня 4, и по памяти так же. Стоят все равно дохрена — промышленные бренды, итить !
Своп в таких вещах обычно не используюти з-за непредсказуемого влияния на реактивность. Было и с винчестером ( 2.5 дюйма, насколько я помню ), и с флэшем. Версия Ерланга была 9.хх, насколько помню. Хайп точно не использовали, его и не было в опциях сборки из стандартного пакета. ОС — в основном ФриБСД, но ставили и Линух АСП.

G>Скажем так, на крайняк можно собрать платформу на базе младших версий Intel Atom. Тогда он точно будет не хуже по производительности, чем Эрикссоновское железо десятилетней давности, на котором Эрланг жил, и энергии жрать будет мало.

А что это за Атом ? Это что-то вроде 186 процессора ?

G>Но я думаю об армах, примерно 400Мгц или около того, и оперативкой около 128 метров. Без свопа. С флешкартой в качестве диска. Пойдет?

128 мег — это более чем ! своп не нужен. Вот насчет производительности на АРМе сказать сложно, проще попробовать. На ОТП 9.хх самые времякритичные операции ( на тухленьком железе ) :
— выборка и массовое удаление из ETS
— формирование строк через io:fwrite
— паттерн матчинг с термами, где много строк ( это можно обьехать архитектурно, что я и сделал )
Можно состряпать крохотный тестик, который покажет приемлемость ( или наоборот ) данного железа
Re[4]: Erlang на embedded платформе
От: Gaperton http://gaperton.livejournal.com
Дата: 21.11.08 10:32
Оценка:
Здравствуйте, gandalfgrey, Вы писали:

G>Здравствуйте, Gaperton, Вы писали:


G>>МикроПС — это что? PC104? 64 метра — супер. Какая частота у целерона? Диск или флеш был? Своп включали? Какой дистрибутив применяли? HiPE включали?

G>МикроПС — это такая коробочка, размером от электробритвы до толстой книги. Используется для промышленных нужд. Начинка бывает самая разная — от Пня 2 до Пня 4, и по памяти так же. Стоят все равно дохрена — промышленные бренды, итить !
G>Своп в таких вещах обычно не используюти з-за непредсказуемого влияния на реактивность. Было и с винчестером ( 2.5 дюйма, насколько я помню ), и с флэшем. Версия Ерланга была 9.хх, насколько помню. Хайп точно не использовали, его и не было в опциях сборки из стандартного пакета. ОС — в основном ФриБСД, но ставили и Линух АСП.

Я думаю свою железку сделать, чтобы утоптать себестоимость железа в сотню долларов. Что без свопа и без Хайпа — это хорошо. Это обнадеживает.

G>>Скажем так, на крайняк можно собрать платформу на базе младших версий Intel Atom. Тогда он точно будет не хуже по производительности, чем Эрикссоновское железо десятилетней давности, на котором Эрланг жил, и энергии жрать будет мало.

G>А что это за Атом ? Это что-то вроде 186 процессора ?

Он совместим по системе команд с Core 2 Duo, в ем до двух аппаратных тредов, каждый тред — очень простой — одна инструкция за такт, он жрет очень мало энергии, и он дешевый. Частоты — до 1,6 Ггц. Предназначен для карманных компов, планшетников, и нетбуков.
http://www.intel.com/design/intarch/atom500/index.htm?iid=ipp_embed+proc_atomz5xx
Минус — требуется внешний мост, и непонятно, как его поднять без видеоконтроллера, который нахрен не нужен. _Пока_ непонятно.

Еще вот решения от Интела на одном кристалле на базе Pentium, которые тоже могут подойти.
http://www.intel.com/design/intarch/ep80579/index.htm?iid=ipp_embed+proc_EP80579_proc

Можно Geode-ов набрать: http://www.amd.com/ru-ru/ConnectivitySolutions/ProductInformation/0,,50_2330_9863,00.html

А можно взять Арм-ы. Которые работают до 600 Мгц, и где выбор однокристальных вариантов просто огромен.

G>>Но я думаю об армах, примерно 400Мгц или около того, и оперативкой около 128 метров. Без свопа. С флешкартой в качестве диска. Пойдет?

G>128 мег — это более чем ! своп не нужен.
Отлично. Это я и хотел узнать, спасибо.

G>Вот насчет производительности на АРМе сказать сложно, проще попробовать. На ОТП 9.хх самые времякритичные операции ( на тухленьком железе ) :

G>- выборка и массовое удаление из ETS
Это не хорошо. Впрочем, резерв для оптимизации есть, если нужен хэш — можно использовать по месту process dictionary, это раз в 10 быстрее.

G>- формирование строк через io:fwrite

Это понятно. io пользоваться вообще не надо по возможности. Он для диагностики и отладки. Для ввода-вывода надо использовать file — это в десятки раз быстрее.

G>- паттерн матчинг с термами, где много строк ( это можно обьехать архитектурно, что я и сделал )

Можно переехать на представление строк в виде бинарисов — в R12 бинарисы очень быстры.

G>Можно состряпать крохотный тестик, который покажет приемлемость ( или наоборот ) данного железа


Отлично. Думаю, принципиальных проблем не будет. Скажем, такая платформа:

400 Мгц ARM, последней редакции. Надо будет предусмотреть, чтоб можно было 600 Мгц впаять.
Ethernet-разъем.
RS-232/485 разъем. Возможно, два.
Возможно, USB-разъем, может быть два. Кстати, есть какие-нибудь стандартные промышленные USB-разъемы, чтобы завинчивались? А то больно легко зараза он вынимается, подозрительно как-то.
Память — 128 метров, возможность допаивания еще 128 метров.
Flash — скажем, разъем для карты памяти до 4 гиг.
Embedded Linux, с real-time расширениями. Кстати, вопрос — а каким образом сейчас модно делать real time в линуксе?

Ну, формат платы типа PC-104, то есть 9 на 9 см, разъемы там, то, се. Да, еще момент — может быть такая платформа уже есть, и кто-нибудь тупо даст мне ссылку на плату? Плачу баллами
Re[5]: Erlang на embedded платформе
От: gandalfgrey  
Дата: 21.11.08 11:22
Оценка:
Здравствуйте, Gaperton, Вы писали:

G>Я думаю свою железку сделать, чтобы утоптать себестоимость железа в сотню долларов. Что без свопа и без Хайпа — это хорошо. Это обнадеживает.

А реально ее сделать ? Все равно чипы будут готовые, только плата своя и обвязку выбрать можно подешевле. Но в 100 баксов все равно не влезет

G>Он совместим по системе команд с Core 2 Duo, в ем до двух аппаратных тредов, каждый тред — очень простой — одна инструкция за такт, он жрет очень мало энергии, и он дешевый. Частоты — до 1,6 Ггц. Предназначен для карманных компов, планшетников, и нетбуков.

G>http://www.intel.com/design/intarch/atom500/index.htm?iid=ipp_embed+proc_atomz5xx
G>Минус — требуется внешний мост, и непонятно, как его поднять без видеоконтроллера, который нахрен не нужен. _Пока_ непонятно.
Да это просто крутизна какая-то ! У меня сейчас тестовый сервер работает на Целероне 1.8 без каких-либо тормозов. Причем со Мнезией, кучей логов, и активным обменом данными. Правда, памяти стоит 1 гиг. У заказчиков ставится Пень 4 на 2 — 2.8 Ггц и 512 мегами.

G>Это не хорошо. Впрочем, резерв для оптимизации есть, если нужен хэш — можно использовать по месту process dictionary, это раз в 10 быстрее.

А чего тут странного ? Когда это селект был быстрым ?

G>Это понятно. io пользоваться вообще не надо по возможности. Он для диагностики и отладки. Для ввода-вывода надо использовать file — это в десятки раз быстрее.

Удобство совсем не то ! Меня это сильно не прижимало, вообще-то — ежели не выведет в лог сейчас, то выведет когда-нибудь потом. Процесс с малым приоритетом никого не напрягает.

G>Можно переехать на представление строк в виде бинарисов — в R12 бинарисы очень быстры.

Они и тогда были быстрые — но я их атомаризировал при входе. Выиграл раз 6-7 на матчинге

G>400 Мгц ARM, последней редакции. Надо будет предусмотреть, чтоб можно было 600 Мгц впаять.

G>Ethernet-разъем.
G>RS-232/485 разъем. Возможно, два.
G>Возможно, USB-разъем, может быть два. Кстати, есть какие-нибудь стандартные промышленные USB-разъемы, чтобы завинчивались? А то больно легко зараза он вынимается, подозрительно как-то.
G>Память — 128 метров, возможность допаивания еще 128 метров.
G>Flash — скажем, разъем для карты памяти до 4 гиг.
G>Embedded Linux, с real-time расширениями. Кстати, вопрос — а каким образом сейчас модно делать real time в линуксе?
Память лишней не бывает — она важнее, чем процессор. Но выглядит в целом очень даже неплохо. Единственное "но" — сериальные порты не нужны. Проще и надежнее поставить внешний конвертор РС485 / ТСР, ежели вдруг приспичит.
А какие типичные времена реакции ? Может, обычный Линух поставить и не заморачиваться
Re[3]: Erlang на embedded платформе
От: Cyberax Марс  
Дата: 21.11.08 12:45
Оценка:
Здравствуйте, Gaperton, Вы писали:

G>>>Кто-нибудь пробовал? Можете описать, какие минимальные требования, как он вообще живет, и с какими проблемами столкнулись?

C>>Пробовал. Запускал Erlang на MIPS'овой доске с 233Mhz CPU. Результаты, откровенно, не очень-то обрадовали.
G>Скоко памяти было на доске было всего, скоко было доступно VM, включен ли был своп, и если да, то куда? Применяли ли HiPE? Что была за задача?
64Мб, была доступна почти вся. Своп включен не был, да он и не нужен особо был. Файловая система — OCFS2 на NAND-флэшке. HiPE пробовали, не помог.

Задача — сбор и обработка данных с кучи сенсоров, подключенных через несколько LAN-портов. Для работы с устройствами там надо было строить state-машину с таймаутами, т.е. идеальное применение для эрланговских процессов.

C>>Тормозит весьма сильно. Следующую версии переписали на С++ в Erlang'овом стиле.

G>Профилировали? Что тормозит? Переписывание кусков на linked-in driver рассматривали?
Тормозило там всё в целом. Проблемы были в том, что срывались таймауты на сенсорах, если вдруг нагрузка получалось сильно выше средней. Для приемлимой работы пришлось отказаться от mnesia.

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

G>Хм. В 98 году помнишь какие процы были? Вот мне интересно — как они в AXD301 его на тормозных ультрах поднимали.

Мне самому это было интересно.
Sapienti sat!
Re[5]: Erlang на embedded платформе
От: Cyberax Марс  
Дата: 21.11.08 12:58
Оценка: 12 (1)
Здравствуйте, Gaperton, Вы писали:

G>Можно Geode-ов набрать: http://www.amd.com/ru-ru/ConnectivitySolutions/ProductInformation/0,,50_2330_9863,00.html

G>А можно взять Арм-ы. Которые работают до 600 Мгц, и где выбор однокристальных вариантов просто огромен.
Только сложно найти что-то подходящее и уже готовое, да ещё и с нормальной ценов в мелких партиях

G>Возможно, USB-разъем, может быть два. Кстати, есть какие-нибудь стандартные промышленные USB-разъемы, чтобы завинчивались? А то больно легко зараза он вынимается, подозрительно как-то.

Есть. Ищи по словам "captive screw terminal".

G>Память — 128 метров, возможность допаивания еще 128 метров.

G>Flash — скажем, разъем для карты памяти до 4 гиг.
Лучше впаяную NAND. Производительность в разы выше.

G>Embedded Linux, с real-time расширениями. Кстати, вопрос — а каким образом сейчас модно делать real time в линуксе?

Если у тебя там один процесс будет, то можно особо не заморачиваться. Ставишь ему макс. приоритет — и вперёд.

G>Ну, формат платы типа PC-104, то есть 9 на 9 см, разъемы там, то, се. Да, еще момент — может быть такая платформа уже есть, и кто-нибудь тупо даст мне ссылку на плату? Плачу баллами

Посмотри на http://www.embeddedarm.com/products/board-detail.php?tab=options&amp;product=TS-7800 — оно поможет прикинуть цены. При желании всё находится примерно в два раза дешевле
Sapienti sat!
Re[6]: Erlang на embedded платформе
От: Gaperton http://gaperton.livejournal.com
Дата: 21.11.08 20:57
Оценка:
Здравствуйте, gandalfgrey, Вы писали:

G>Здравствуйте, Gaperton, Вы писали:


G>>Я думаю свою железку сделать, чтобы утоптать себестоимость железа в сотню долларов. Что без свопа и без Хайпа — это хорошо. Это обнадеживает.

G>А реально ее сделать ? Все равно чипы будут готовые, только плата своя и обвязку выбрать можно подешевле. Но в 100 баксов все равно не влезет

Реально, и не очень дорого. В 100 баксов должно влезть точно, так как начинка почти такая же, как у приставок цифрового телевидения HD, а они уписываются в 100 баксов по себестоимости — это я знаю точно. Описываемая мной машинка выйдет совершенно однозначно дешевле баксов на 20, и эту разницу мы компенсируем увеличенным флешом.

G>>http://www.intel.com/design/intarch/atom500/index.htm?iid=ipp_embed+proc_atomz5xx

G>>Минус — требуется внешний мост, и непонятно, как его поднять без видеоконтроллера, который нахрен не нужен. _Пока_ непонятно.
G>Да это просто крутизна какая-то ! У меня сейчас тестовый сервер работает на Целероне 1.8 без каких-либо тормозов. Причем со Мнезией, кучей логов, и активным обменом данными. Правда, памяти стоит 1 гиг. У заказчиков ставится Пень 4 на 2 — 2.8 Ггц и 512 мегами.

Это не крутизна, он существенно слабее целерона. И дешевле.

G>>Это понятно. io пользоваться вообще не надо по возможности. Он для диагностики и отладки. Для ввода-вывода надо использовать file — это в десятки раз быстрее.

G>Удобство совсем не то ! Меня это сильно не прижимало, вообще-то — ежели не выведет в лог сейчас, то выведет когда-нибудь потом. Процесс с малым приоритетом никого не напрягает.

Удобство возвращается назад с маленькой оберткой потокового ввода-вывода вокруг file . Я такую уже написал, лежит в загашнике. Хотя для логов как раз лучше io с его малым приоритетом — его не зря сделали тормозным, а чтоб AXD301 нормально работал.

G>>Можно переехать на представление строк в виде бинарисов — в R12 бинарисы очень быстры.

G>Они и тогда были быстрые — но я их атомаризировал при входе. Выиграл раз 6-7 на матчинге

Да, тоже известный прием. Только таблица атомов не собирается GC — рискуешь словить переполнение памяти. Теоретически.

G>>400 Мгц ARM, последней редакции. Надо будет предусмотреть, чтоб можно было 600 Мгц впаять.

G>>Ethernet-разъем.
G>>RS-232/485 разъем. Возможно, два.
G>>Возможно, USB-разъем, может быть два. Кстати, есть какие-нибудь стандартные промышленные USB-разъемы, чтобы завинчивались? А то больно легко зараза он вынимается, подозрительно как-то.
G>>Память — 128 метров, возможность допаивания еще 128 метров.
G>>Flash — скажем, разъем для карты памяти до 4 гиг.
G>>Embedded Linux, с real-time расширениями. Кстати, вопрос — а каким образом сейчас модно делать real time в линуксе?
G>Память лишней не бывает — она важнее, чем процессор. Но выглядит в целом очень даже неплохо. Единственное "но" — сериальные порты не нужны. Проще и надежнее поставить внешний конвертор РС485 / ТСР, ежели вдруг приспичит.

Серийные порты очень даже нужны . Причем — высокоскоростные, они должны мне давать минимум 256 кбит на максимально возможной дистанции (не менее 1200 метров, больше-лучше). Ну, и обязательно нужен 1 мегабит на 300 метров. Это не так просто сделать, надо аккуратно РС-трансиверы подбирать будет, терминировать витую пару, и пр.

G>А какие типичные времена реакции ? Может, обычный Линух поставить и не заморачиваться

RS-ом бы управлять надо...
Re[7]: Erlang на embedded платформе
От: Cyberax Марс  
Дата: 21.11.08 21:17
Оценка:
Здравствуйте, Gaperton, Вы писали:

G>Реально, и не очень дорого. В 100 баксов должно влезть точно, так как начинка почти такая же, как у приставок цифрового телевидения HD, а они уписываются в 100 баксов по себестоимости — это я знаю точно. Описываемая мной машинка выйдет совершенно однозначно дешевле баксов на 20, и эту разницу мы компенсируем увеличенным флешом.

50 баксов — это будет себестоимость компонентов. А сдерут с вас раз в 5 больше — так как партии мелкие.

G>>А какие типичные времена реакции ? Может, обычный Линух поставить и не заморачиваться

G>RS-ом бы управлять надо...
Оно обычно через UART идёт, тем более на высокоскоростных портах. Так что латентность не так критична.
Sapienti sat!
Re[8]: Erlang на embedded платформе
От: Gaperton http://gaperton.livejournal.com
Дата: 21.11.08 22:13
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Здравствуйте, Gaperton, Вы писали:


G>>Реально, и не очень дорого. В 100 баксов должно влезть точно, так как начинка почти такая же, как у приставок цифрового телевидения HD, а они уписываются в 100 баксов по себестоимости — это я знаю точно. Описываемая мной машинка выйдет совершенно однозначно дешевле баксов на 20, и эту разницу мы компенсируем увеличенным флешом.

C>50 баксов — это будет себестоимость компонентов. А сдерут с вас раз в 5 больше — так как партии мелкие.

Ну положим таки не в пять, а в два раза отличается стоимость розницы и опта (в партиях 1000 штук и выше).
Во-вторых, стоимость компонентов при заказе комплекта на 100 устройств вряд ли превысит 80 баксов. А в 20 баксов удастся уложить сборку вместе с печатной платой, я надеюсь. Ну, вместе с корпусом (который пожберем стандартный, штоб не попатсть на литье с пресс-формами) и непредвиденными расходами выйдет баксов 130 максимум. Это нормально. И это гораздо дешевле чужих готовых компов. Вообще, пусть даже 150. Все равно нормально.

G>>>А какие типичные времена реакции ? Может, обычный Линух поставить и не заморачиваться

G>>RS-ом бы управлять надо...
C>Оно обычно через UART идёт, тем более на высокоскоростных портах. Так что латентность не так критична.
Возможно. Надо подумать. Но real-time расширение не помешает все равно. Знаешь, как его правильно готовить в Linux?
Re[4]: Erlang на embedded платформе
От: Gaperton http://gaperton.livejournal.com
Дата: 21.11.08 22:23
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Здравствуйте, Gaperton, Вы писали:


G>>>>Кто-нибудь пробовал? Можете описать, какие минимальные требования, как он вообще живет, и с какими проблемами столкнулись?

C>>>Пробовал. Запускал Erlang на MIPS'овой доске с 233Mhz CPU. Результаты, откровенно, не очень-то обрадовали.
G>>Скоко памяти было на доске было всего, скоко было доступно VM, включен ли был своп, и если да, то куда? Применяли ли HiPE? Что была за задача?
C>64Мб, была доступна почти вся. Своп включен не был, да он и не нужен особо был. Файловая система — OCFS2 на NAND-флэшке. HiPE пробовали, не помог.

HiPE _совсем_ не помог? Во сколько раз throughput подрос?

C>Задача — сбор и обработка данных с кучи сенсоров, подключенных через несколько LAN-портов. Для работы с устройствами там надо было строить state-машину с таймаутами, т.е. идеальное применение для эрланговских процессов.


Черт. Близкая задача. Можешь описать, сколько у вас было сенсоров, и с какой частотой они гнали инфу? Ну, размер пакетов инфы, и формат тоже помог бы. Не modbus/tcp, случаем?

C>>>Тормозит весьма сильно. Следующую версии переписали на С++ в Erlang'овом стиле.

G>>Профилировали? Что тормозит? Переписывание кусков на linked-in driver рассматривали?
C>Тормозило там всё в целом. Проблемы были в том, что срывались таймауты на сенсорах, если вдруг нагрузка получалось сильно выше средней. Для приемлимой работы пришлось отказаться от mnesia.

Понятно, на точность таймаутов полагаться нельзя. Они, вообще, не для real-time придуманы, я подозреваю, а для реальных сетевых таймаутов по доставке, которые длинные и неточные. Кстати, надо бы завести proposal для real-time расширения, штоли. Штоб добавили ацки точный timeout. Причем, с относительно запомненной временной метки, а не просто так.

А все-таки. Какова была реальная точность таймаутов до того, как они срывались, и после? А как использовали mnesia?

C>Насчёт переписывания кусков думали, в итоге решили переписать всё нафиг на С++. При переписывании не меняли стиль, просто заменили легковесные процессы обычными тяжеловесными. Прокатило.


По Linux-процессу на сенсор заводили? Сколько их было? Подозреваю, что порядка сотен, так? Насколько стало быстрее? Если частоту втрое поднять, помогло бы?

G>>Хм. В 98 году помнишь какие процы были? Вот мне интересно — как они в AXD301 его на тормозных ультрах поднимали.

C>Мне самому это было интересно.

По идее, тогдашняя ультра это примерно то же самое, что ваш MIPS. Почти идентичные процы. Это-то и странно.
Re[5]: Erlang на embedded платформе
От: Cyberax Марс  
Дата: 21.11.08 22:52
Оценка: 12 (1)
Здравствуйте, Gaperton, Вы писали:

C>>64Мб, была доступна почти вся. Своп включен не был, да он и не нужен особо был. Файловая система — OCFS2 на NAND-флэшке. HiPE пробовали, не помог.

G>HiPE _совсем_ не помог? Во сколько раз throughput подрос?
Он уменьшился Грешили на глючную поддержку MIPS.

G>Черт. Близкая задача. Можешь описать, сколько у вас было сенсоров, и с какой частотой они гнали инфу? Ну, размер пакетов инфы, и формат тоже помог бы. Не modbus/tcp, случаем?

Случайно нет. Сенсоры — это RFID-приёмники, в среднем где-то одно сообщение в секунду (с некоторых сенсоров могло десяток в секунду идти, с других пару сообщений в минуту).

G>А все-таки. Какова была реальная точность таймаутов до того, как они срывались, и после?

Сами таймауты где-то в 20-100 миллисекунд (время на обмен данными), с максимальной допустимой погрешностью где-то в 100-200 миллисекунд.

Проблем было две:
1) Срывало под нагрузкой некоторые таймауты.
2) Не справлялось с потоком сообщений от излишне говорливых устройств под нагрузкой.

G>А как использовали mnesia?

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

Пришлось отказаться и делать это явно.

G>По Linux-процессу на сенсор заводили? Сколько их было? Подозреваю, что порядка сотен, так? Насколько стало быстрее? Если частоту втрое поднять, помогло бы?

По потоку на сенсор + служебные потоки. Всего где-то по 200-300 потоков на устройство. Оказалось, что Линукс с таким без проблем справляется — латентность и плавность времени ответа выдерживал железно (ядро было 2.6.25). Пришлось, прадва, там слегка подкрутить размер дефолтного стека и использовать свой аллокатор.
Sapienti sat!
Re[9]: Erlang на embedded платформе
От: Cyberax Марс  
Дата: 21.11.08 22:59
Оценка:
Здравствуйте, Gaperton, Вы писали:

C>>50 баксов — это будет себестоимость компонентов. А сдерут с вас раз в 5 больше — так как партии мелкие.

G>Ну положим таки не в пять, а в два раза отличается стоимость розницы и опта (в партиях 1000 штук и выше).
В партиях по 1000 штук — всего где-то в 3 раза

G>Во-вторых, стоимость компонентов при заказе комплекта на 100 устройств вряд ли превысит 80 баксов. А в 20 баксов удастся уложить сборку вместе с печатной платой, я надеюсь.

Оптимист. С нас хотели за простую металлическую коробку для монтажа платы содрать по $30 за штуку. Литую пластиковую — всего за $25, так и быть.

А ещё не забудь про блок питания и прочие мелочи типа скоб крепления.

G>Ну, вместе с корпусом (который пожберем стандартный, штоб не попатсть на литье с пресс-формами) и непредвиденными расходами выйдет баксов 130 максимум. Это нормально. И это гораздо дешевле чужих готовых компов. Вообще, пусть даже 150. Все равно нормально.

У нас в итоге около $100 изначально получилось после долгих пинаний с разработчиками. Потом снизили до $70. А подобные массовые устройства продаются по $30.

C>>Оно обычно через UART идёт, тем более на высокоскоростных портах. Так что латентность не так критична.

G>Возможно. Надо подумать. Но real-time расширение не помешает все равно. Знаешь, как его правильно готовить в Linux?
Я использовал обычное realtime-ядро (в другом проекте), которое поддерживает Ingo Molnar. Там стандартный realtime-интерфейс — появляется наследование приоритетов на примитвы синхронизации, особое планирование потоков и т.п.
Sapienti sat!
Re[6]: Erlang на embedded платформе
От: Gaperton http://gaperton.livejournal.com
Дата: 21.11.08 23:26
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>>>64Мб, была доступна почти вся. Своп включен не был, да он и не нужен особо был. Файловая система — OCFS2 на NAND-флэшке. HiPE пробовали, не помог.

G>>HiPE _совсем_ не помог? Во сколько раз throughput подрос?
C>Он уменьшился Грешили на глючную поддержку MIPS.

Shit. Интересно, что с ARM.

G>>Черт. Близкая задача. Можешь описать, сколько у вас было сенсоров, и с какой частотой они гнали инфу? Ну, размер пакетов инфы, и формат тоже помог бы. Не modbus/tcp, случаем?

C>Случайно нет. Сенсоры — это RFID-приёмники, в среднем где-то одно сообщение в секунду (с некоторых сенсоров могло десяток в секунду идти, с других пару сообщений в минуту).

Триста приемников, с каждого по сообщению в секунду, и всего 300 в секунду? Как-то совсем не густо.

G>>А все-таки. Какова была реальная точность таймаутов до того, как они срывались, и после?

C>Сами таймауты где-то в 20-100 миллисекунд (время на обмен данными), с максимальной допустимой погрешностью где-то в 100-200 миллисекунд.

20 миллисекунд выдержать вряд-ли возможно, так как это близко к времени кванта. Это понятно. 100-200 миллисекунд... Ну короче понятно, на точные таймауты надеятся нельзя.

C>Проблем было две:

C>1) Срывало под нагрузкой некоторые таймауты.
Ладно, это понятно. Рилтайм надо делать на С.

C>2) Не справлялось с потоком сообщений от излишне говорливых устройств под нагрузкой.

Это уже очень плохо, учитывая небольшое количество устройств.

G>>А как использовали mnesia?

C>Mnesia хотели использовать для репликации. Устройство обычно подключено к серверу, но может работать некоторое время автономно. Так что просто использовали бы mnesia для хранения данных — оно само бы на сервер всё заливалось после его появления в сетке.

C>Пришлось отказаться и делать это явно.


Ну это была изначально больная идея ИМХО. Mnesia в расщепленной сети себя отвратительно ведет. У вас вообще ошибка должна была вылетать, нет?

G>>По Linux-процессу на сенсор заводили? Сколько их было? Подозреваю, что порядка сотен, так? Насколько стало быстрее? Если частоту втрое поднять, помогло бы?

C>По потоку на сенсор + служебные потоки. Всего где-то по 200-300 потоков на устройство. Оказалось, что Линукс с таким без проблем справляется — латентность и плавность времени ответа выдерживал железно (ядро было 2.6.25). Пришлось, прадва, там слегка подкрутить размер дефолтного стека и использовать свой аллокатор.

Интересно. Все-таки странно, что так катастрофически тормозит. Бинарисы применяли в Эрланге? Или на списках работали? Модуль io не применяли случаем?
Re[10]: Erlang на embedded платформе
От: Gaperton http://gaperton.livejournal.com
Дата: 21.11.08 23:35
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>А ещё не забудь про блок питания и прочие мелочи типа скоб крепления.


Нефиг блоки питания. Power over ethernet должон прокатить. На скобы фигню и логистику я щедро набросил двадцатку.

G>>Ну, вместе с корпусом (который пожберем стандартный, штоб не попатсть на литье с пресс-формами) и непредвиденными расходами выйдет баксов 130 максимум. Это нормально. И это гораздо дешевле чужих готовых компов. Вообще, пусть даже 150. Все равно нормально.

C>У нас в итоге около $100 изначально получилось после долгих пинаний с разработчиками. Потом снизили до $70. А подобные массовые устройства продаются по $30.

Покажи, где подобные массовые устройства по 30 идут. Будем брать, и перешивать . Вообще — не верю. Китайцы вон тоже обещали на выставках приставки MPEG2 по 20 баксов. Вообще — не верю, это совершенно невозможно, учитывая, что со всеми расходами в России контрактная сборка _дешевле_. Чушь и балшыт.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.