LINUX.ORG.RU

очереди сообщений, желательно совместимые с HardRT


0

2

Подскажите какие под Linux существуют подсистемы очереди обмена сообщениями между процессами ? Желательно с (включаемыми по необходимости) режимами планировки жесткого РВ, совместимыми с RT-патчами.

В рамках одного узла, в идеале — с возможностью роутинга между несколькими сетевыми узлами.

Что хочется — некая библиотека, можно и наверно даже желательно С++, позволяющая регистрировать обработчики, и посылать пакеты. Желательна возможность специфицировать интерфейсы, и выполнять _быструю_ проверку соответствия пакетов спецификации. Существуют ли реализации чего-нибудь типа CorbaRT и насколько они слонотронны ?

ЗЫ: возможно буду портировать/делать какую-нибудь простейшую GUI-систему, и эвенты будут ходить тоже в этих очередях на низком приоритете.

Не существует. Ну а если тебе нужно что-то, что _обещает_ («мамой клянус!!1») такие возможности, то да, CORBA 3.0.

tailgunner ★★★★★
()
Ответ на: комментарий от ponyatov

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

С RT-патчами проблем быть не должно, просто у нас мало точек соприкосновения с системой. По-сути мы используем только фьютексы (но непосредственно без glibc), остальное только на стадии запуска (до входа в RT).

С сетевыми картами пока стыковка только через DPDK и netmap, потом будет все что умеет RDMA, плюс generic glue для обмена skb без копирования (будет работать конечно быстрее чем штатный стек TCP/IP но в 100-1000 раз медленнее чем DPDK/netmap).

В принципе есть три чувствительные точки, эффективность которых на конкретной платформе/SoC сильно влияет на результат:

  • атомарные инструкции.
  • дешевый источник времени, например как RDTSC/RDTSCP/RDMPC на x86.
  • сетевые карты с продуманной организацией DMA-RING (гляньте как работает netmap и/или DPDK).

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

ly
()
Ответ на: комментарий от ly

А разве не работает zero-copy способ обмен данными через shared страницы памяти ? Насколько я понимаю это самый простой, быстрый и главное портабельный (включая все армы с MMU) способ низкоуровневой реализации ?

ponyatov
() автор топика
Ответ на: комментарий от ponyatov

Работает, на том и стоим ;)

Но просто общая память - это только начало, необходимы разделяемые очереди, управление буферами, отслеживание ссылок на них, удобный формат сообщений и т.д. Как только вы тут «все порешаете» захочется zero-copy с сетевым стеком и RDMA...

На ближайшем Highload++ я постараюсь сделать доклад, если успею (место в программе обещали).

ly
()

Загляни в сырцы linuxcnc - там и RT и обмен данными между тредами по полной программе в режиме жесточайшего реалтайма. И что-то насчёт сетевого обмена в этих условиях там тоже прикручено.

Stanson ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.