и снова трудности AF

Общие принципы, проектирование, модуляризация, темплейты и шаблоны
Ответить
Artem.spb

Activity Автор
doctor
doctor
Сообщения: 2422
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 13 раз
Поблагодарили: 63 раза
Контактная информация:

и снова трудности AF

Сообщение Artem.spb »

Из разряда "работа отличная, но как пожар, так хоть вешайся".
Наткнулся на то, что система очень быстро уходит в глубокую задумчивость, начал копать. В итоге обнаружил, вот тут наблюдается аномальное поведение.
Есть метод, состоящий из самого метода (1) и вызова родителя (2).
Внизу куча проводов для отладки.
AF1.PNG
af2.PNG
Из этих самых проводов выяснил, что сам метод (чтение данных с реального оборудования) работает довольно стабильно, но вот родитель за 3-5 минут уходит в дикие тормоза - вместо "0" мс на одну итерацию в начале тратит до 1 секунды.
А там всего лишь отправка сообщения, т.е. никакого накопления чего-то в себе нет.
Откуда могут быть такие тормоза?

На своей машине (в режиме имитации) такого не наблюдаю. Основная разница в машинах - 32/64 бита.
Сейчас проверяю 32 на реальной машине.
Аватара пользователя
Kosist

Activity Gold
expert
expert
Сообщения: 1101
Зарегистрирован: 21 фев 2011, 23:44
Награды: 2
Версия LabVIEW: 2013-2020
Благодарил (а): 4 раза
Поблагодарили: 11 раз
Контактная информация:

Re: и снова трудности AF

Сообщение Kosist »

Два вопроса:
- что делает метод за кейс-структурой 2-го метода (проверяет на наличие ошибки? случайно не пишет что-то в файл?);
- как ведет себя актор, которому сообщения отправляются? Успевает обрабатывать?

Попробуйте код отправки сообщения поместить прямо в метод, не вызывая родительский метод, и посмотрите на поведение...
Мы делили апельсин - много наших полегло...
Artem.spb

Activity Автор
doctor
doctor
Сообщения: 2422
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 13 раз
Поблагодарили: 63 раза
Контактная информация:

Re: и снова трудности AF

Сообщение Artem.spb »

Kosist писал(а): 01 фев 2021, 23:18 - что делает метод за кейс-структурой 2-го метода (проверяет на наличие ошибки? случайно не пишет что-то в файл?);
совершенно случайно он отправляет ещё одно сообщение другому актору (ловля ошибок для отладки)
- как ведет себя актор, которому сообщения отправляются? Успевает обрабатывать?
С виду ведёт себя прилично. Не могу проверить, не копится ли там очередь. Да и какое это может иметь значение? скорость выгребания очереди не тормозит скорости её заполнения.
Попробуйте код отправки сообщения поместить прямо в метод, не вызывая родительский метод, и посмотрите на поведение...
Интересная идея. Хотя это и попортит универсальность отправки данных
Аватара пользователя
Kosist

Activity Gold
expert
expert
Сообщения: 1101
Зарегистрирован: 21 фев 2011, 23:44
Награды: 2
Версия LabVIEW: 2013-2020
Благодарил (а): 4 раза
Поблагодарили: 11 раз
Контактная информация:

Re: и снова трудности AF

Сообщение Kosist »

Artem.spb писал(а): 01 фев 2021, 23:50 Интересная идея. Хотя это и попортит универсальность отправки данных
Всего лишь для тестирования.
Идея - попробуйте еще узнать который из методов отправки во второй виайке начинает тормозить - отправка данных, или проверка ошибки; посмотрите время исполнения каждого отдельно).
Artem.spb писал(а): 01 фев 2021, 23:50 совершенно случайно он отправляет ещё одно сообщение другому актору (ловля ошибок для отладки)
А нужно ли там вообще проверять ошибку? Ведь если ошибка будет на входе - то выполнится Error Case. А внутри No Error Case ошибка может быть только в случае если Caller ссылка уже неактивная (что крайне маловероятно). Поэтому целесообразней всего виайку для проверки ошибки (и отправки ее другому актору) переместить в Error Case.
И откуда метод берет ссылку на другой актор (которому он может отправить сообщение)? Ведь вход только - кластер ошибок?
Мы делили апельсин - много наших полегло...
ujin1
beginner
beginner
Сообщения: 36
Зарегистрирован: 06 ноя 2020, 15:37
Версия LabVIEW: 19
Благодарил (а): 1 раз
Поблагодарили: 4 раза

Re: и снова трудности AF

Сообщение ujin1 »

Artem.spb писал(а): 01 фев 2021, 23:50 скорость выгребания очереди не тормозит скорости её заполнения.
???
max queue size - задать лимит
enqueue element не подключать timeout.
Не читать очередь.
Изображение
Аватара пользователя
Kosist

Activity Gold
expert
expert
Сообщения: 1101
Зарегистрирован: 21 фев 2011, 23:44
Награды: 2
Версия LabVIEW: 2013-2020
Благодарил (а): 4 раза
Поблагодарили: 11 раз
Контактная информация:

Re: и снова трудности AF

Сообщение Kosist »

ujin1 писал(а): 02 фев 2021, 02:13 ???
max queue size - задать лимит
enqueue element не подключать timeout.
Не читать очередь.
А при чем тут это? В AF размер очереди неограниченный, и вообще работа с очередью энкапсулирована и "по-хорошему" ее никто не меняет т.к. это часть фреймворка.
Мы делили апельсин - много наших полегло...
ujin1
beginner
beginner
Сообщения: 36
Зарегистрирован: 06 ноя 2020, 15:37
Версия LabVIEW: 19
Благодарил (а): 1 раз
Поблагодарили: 4 раза

Re: и снова трудности AF

Сообщение ujin1 »

Kosist писал(а): 02 фев 2021, 08:51 А при чем тут это? В AF размер очереди неограниченный, и вообще работа с очередью энкапсулирована и "по-хорошему" ее никто не меняет т.к. это часть фреймворка.
Я просто не знаю как AF работает, поэтому и вопросы есть ли ограничения. Иногда причины бывают в простых вещах.
Изображение
Artem.spb

Activity Автор
doctor
doctor
Сообщения: 2422
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 13 раз
Поблагодарили: 63 раза
Контактная информация:

Re: и снова трудности AF

Сообщение Artem.spb »

Всё оказалось банально. Просто внимательнее надо быть....
Шутка для тех, кто понимает
af.png
af.png (8.1 КБ) 124 просмотра

Kosist писал(а): 02 фев 2021, 01:06 А нужно ли там вообще проверять ошибку?
Тут длинная история. Этот логгер я сделал себе давно и просто подключаю во все проекты. У него несколько режимов работы, поэтому он и стоит в самом конце каждого метода.
В самом тяжёлом случае он логирует всё и позволяет найти аномалии поведения без установки доп тулкитов.
Вот как сейчас. Включил я тотальную слежку и обнаружил, что слишком много попыток реконнекта.
Причём всё это происходило совсем в дргом месте, а не там где я нашёл "аномальное" поведение.
И откуда метод берет ссылку на другой актор (которому он может отправить сообщение)? Ведь вход только - кластер ошибок?
Места знать надо :)
он хранит его сам в себе, в сдвиговом регистре. Это просто обёртка над акторами
af2.png
Аватара пользователя
Kosist

Activity Gold
expert
expert
Сообщения: 1101
Зарегистрирован: 21 фев 2011, 23:44
Награды: 2
Версия LabVIEW: 2013-2020
Благодарил (а): 4 раза
Поблагодарили: 11 раз
Контактная информация:

Re: и снова трудности AF

Сообщение Kosist »

О, отлично что проблема решена ))) :super:
Мы делили апельсин - много наших полегло...
Ответить

Вернуться в «Модели программирования»