Официальный форум СВД Встраиваемые Системы
25 Сентября, 2017, 23:30:12 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
 
 
 Сайт СВД ВС  Начало   Помощь Поиск Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: Служба PPS  (Прочитано 235 раз)
Maxim
Интересующийся

Сообщений: 3


« : 01 Декабря, 2016, 16:57:31 »

Здравствуйте.

У меня несколько вопросов касательно службы PPS:
1) Планируется ли доработка данной службы в части добавления обслуживания запроса readcond()?

Работая с этой службой, столкнулся с такой проблемой...

Макет:
Два хоста под управлением QNX 6.5, взаимодействуют через QNet (100BASE-T). На первом хосте запущена служба PPS, с которой работает ПО на том же хосте. На втором хосте так же работает ПО, взаимодействующее с PPS, но через QNet (т.е. работает с той же копией PPS, что и первый хост).
Проблема:
В момент загрузки первого хоста, второй хост пытается выполнить запрос open() к объекту PPS первого хоста. На что open(), в errno возвращает EHOSTDOWN. Далее, первый хост благополучно "догружается" и на нем выполняется вся необходимая работа с PPS, что отчетливо видно на мониторе первого хоста. Но, в тот момент, когда первый хост загрузился и началась работа с PPS, вызов open() (на втором хосте) начинает возвращать EHOSTUNREACH в errno и непосредственное соединение с PPS происходит через продолжительное время (более 30-40 секунд).

2) По какой причине, в данном случае, open() возвращает EHOSTUNREACH?
3) С чем могут быть связаны такие задержки подключения к PPS после полной загрузки первого хоста?

----------------------

Проблема решена. Спасибо.
« Последнее редактирование: 02 Декабря, 2016, 22:03:33 от Maxim » Записан
Олег Большаков
Администратор
Житель форума

Сообщений: 3000



WWW
« Ответ #1 : 03 Декабря, 2016, 13:59:45 »

Здравствуйте, Максим!

1) Планируется ли доработка данной службы в части добавления обслуживания запроса readcond()?

Планов по доработке PPS для поддержки запроса readcond() у нас нет. Всё-таки идеологии PPS и readcond() несколько различаются. Для блокирующего чтения PPS рекомендуется использовать select(). Также обратите внимание на дельта-режим работы PPS, возможно он окажется для Вас удобнее, чем readcond().

Я видел, что изначально Вы спрашивали также про работу функции select() с PPS. Я так понял, что удалось разобраться и select() заработал?

2) По какой причине, в данном случае, open() возвращает EHOSTUNREACH?
3) С чем могут быть связаны такие задержки подключения к PPS после полной загрузки первого хоста?

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

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

Сообщений: 3000



WWW
« Ответ #2 : 03 Декабря, 2016, 14:01:57 »

Проблема решена. Спасибо.

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

Уточните, пожалуйста, как удалось решить проблему по 2) и 3) вопросам?
Записан

Maxim
Интересующийся

Сообщений: 3


« Ответ #3 : 03 Декабря, 2016, 23:19:18 »

Я видел, что изначально Вы спрашивали также про работу функции select() с PPS. Я так понял, что удалось разобраться и select() заработал?

Да. Совершенно верно.

Планов по доработке PPS для поддержки запроса readcond() у нас нет. Всё-таки идеологии PPS и readcond() несколько различаются. Для блокирующего чтения PPS рекомендуется использовать select().

Мне кажется, что все таки readcond() очень подходит для идеологии PPS (впрочем как и select): PPS позиционируется как база данных с минимум функционала для хранения динамических (как правило) параметров и совершенно нормально не только читать параметры из нее, но и ждать ограниченное время изменений параметров, что необходимо в моем случае. Но т.к. PPS обрабатывает select(), то вопрос о readcond() становится всего лишь, вопросом бонуса для удобства программиста, а не острой необходимостью.

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

Да. Учту.

Уточните, пожалуйста, как удалось решить проблему по 2) и 3) вопросам?

Проблема решена, но ее причина понятна только наполовину.
К сожалению, полностью исследовать проблему возможности не было (теперь и воссоздать ее не могу), но подозреваю, что QNet не мог "подняться" т.к. ПО, обрабатывающее графику, "съедало" почти всё процессорное время.
Единственное, что мне не понятно это - появление ошибки EHOSTUNREACH при подключенных напрямую хостах. Если я правильно понимаю, корни этой ошибки находятся в ICMP?
« Последнее редактирование: 03 Декабря, 2016, 23:42:05 от Maxim » Записан
Maxim
Интересующийся

Сообщений: 3


« Ответ #4 : 05 Декабря, 2016, 10:02:38 »

Единственное, что мне не понятно это - появление ошибки EHOSTUNREACH при подключенных напрямую хостах. Если я правильно понимаю, корни этой ошибки находятся в ICMP?

Теперь и этот вопрос решен.
Вчера выяснил, что подключение было, все таки, через коммутатор.
Записан
Страниц: [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 посещал эту страницу 30 Августа, 2017, 16:27:47