Официальный форум СВД Встраиваемые Системы
28 Мая, 2017, 19:34:08 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
 
 
 Сайт СВД ВС  Начало   Помощь Поиск Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: 8-битный PPS ?  (Прочитано 138 раз)
GrayCat
Пользователь

Сообщений: 14


Embedder


« : 15 Апреля, 2017, 11:20:46 »

[offtiopic]
Пошёл Илья Муромец со Змеем Горынычем рубиться, не на жизнь а на смерть. Бьются они, сражаются, срубает Илюша Змею голову - вместо неё две прирастают, срубает две - четыре тут как тут!... День рубятся, ночь, всю неделю мечом Илюша машет, Змей огнём пышет, устал уж богатырь... Из последних сил Илья Муромец отрубает Змею Горынычу 255-ю голову -- и умирает тварь поганая!...

...ибо был Змей 8-битным.

[/offtiopic]

В процессе перевода нашей системы АСУ ТП на службу PPS вдруг, без предупреждения, вылезла нехорошая бяка: когда количество subscriber-ов на один PPS-объект становится большим, что-то в районе от 200 до 300  Wink , при попытке обновления атрибута в таком объекте вся служба PPS вываливается в coredump. Что-то мне подсказывает, что число это близко к 256  Grin .

Времени более подробно разбираться у меня не было, я просто переписал кусок программы так чтобы на PPS-объекты процесс подписывался только на время своего "активного" состояния. Будем надеяться, что у нас не будет более 255 одновременно активных сущностей. Но, сами понимаете, это грязный workaround. В рабочую неделю я постараюсь на "лабораторном" компе воспроизвести ситуацию и разобраться более подробно.

Оно, как бы, в принципе, вполне ожидаемо, что какие-то ограничения у программ всегда есть. "640 килобайт хватит для всех!" © БГ.   И, например, максимальный размер объекта PPS - 64 кБ - чётко прописан в документации. А вот количество подписчиков, ну или вообще количество процессов одновременно открывающих объект - нигде не упомянуто. Если бы оно было, можно было бы изначально при проектировании программы эти ограничения учитывать, а так тычешься в темноте.

Так что, господа/панове пользователи службы PPS в своих программах - учитывайте сей эмпирически установленный факт. А разработчикам QNX - пожелание: вы бы в XXI веке могли бы воспользоваться преимуществами 32-битной архитектуры, или хотя бы упоминайте свои 8-битные ограничения в документации!  Undecided
Записан

Gray©at
Сергей Новоселов
Пользователь

Сообщений: 15


« Ответ #1 : 16 Апреля, 2017, 12:58:58 »

В продолжение темы про неочевидные ограничения PPS. На практике оказалось, что максимальный размер PPS-объекта вовсе не 64K, как написано в документации, а ровно 16K Smiley   Большего размера объект создать не удается. По крайней мере в QNX 6.5
Записан
Олег Большаков
Администратор
Житель форума

Сообщений: 2970



WWW
« Ответ #2 : 17 Апреля, 2017, 17:27:42 »

В продолжение темы про неочевидные ограничения PPS. На практике оказалось, что максимальный размер PPS-объекта вовсе не 64K, как написано в документации, а ровно 16K Smiley   Большего размера объект создать не удается. По крайней мере в QNX 6.5

В документации написано, что размер объектов по умолчанию равен 16 килобайт. Также написано, что максимальный размер — 64 килобайта. Последнее справедливо для предыдущих версий, которые поддерживали опцию -s, которая устанавливала максимальный размер объекта. В текущей версии опция -s не поддерживается, максимальный размер объекта равен размеру объекта по умолчанию — 16 килобайт.

Далее в документации сказано (в моём переводе):

Цитировать
Объекты PPS не должны использоваться для хранения больших объемов данных. Размер большинства объектов PPS должен измеряться в сотнях байтов, а не в килобайтах.

Если требуется работа с большими объёмами данных, то следует использовать, например, базу данных, файловую систему или разделяемую память (в зависимости от условий задачи). При этом PPS может использоваться по своему прямому назначению — в качестве службы публикации/подписки.
Записан

Олег Большаков
Администратор
Житель форума

Сообщений: 2970



WWW
« Ответ #3 : 17 Апреля, 2017, 17:32:00 »

Времени более подробно разбираться у меня не было, я просто переписал кусок программы так чтобы на PPS-объекты процесс подписывался только на время своего "активного" состояния. Будем надеяться, что у нас не будет более 255 одновременно активных сущностей. Но, сами понимаете, это грязный workaround. В рабочую неделю я постараюсь на "лабораторном" компе воспроизвести ситуацию и разобраться более подробно.

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

Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP © 2002-2017 СВД Встраиваемые Системы.
При использовании материалов сайта ссылка на forum.kpda.ru обязательна.

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines | © Aiwan. Kolobok smiles | Sitemap
Valid XHTML 1.0! Valid CSS!
Сайт СВД ВС

В последний раз google посещал эту страницу 17 Апреля, 2017, 17:59:11