Из разряда "работа отличная, но как пожар, так хоть вешайся".
Наткнулся на то, что система очень быстро уходит в глубокую задумчивость, начал копать. В итоге обнаружил, вот тут наблюдается аномальное поведение.
Есть метод, состоящий из самого метода (1) и вызова родителя (2).
Внизу куча проводов для отладки.
Из этих самых проводов выяснил, что сам метод (чтение данных с реального оборудования) работает довольно стабильно, но вот родитель за 3-5 минут уходит в дикие тормоза - вместо "0" мс на одну итерацию в начале тратит до 1 секунды.
А там всего лишь отправка сообщения, т.е. никакого накопления чего-то в себе нет.
Откуда могут быть такие тормоза?
На своей машине (в режиме имитации) такого не наблюдаю. Основная разница в машинах - 32/64 бита.
Сейчас проверяю 32 на реальной машине.
и снова трудности AF
-
Kosist
- expert
- Сообщения: 1236
- Зарегистрирован: 21 фев 2011, 23:44
- Награды: 2
- Версия LabVIEW: 2013-2020
- Благодарил (а): 23 раза
- Поблагодарили: 30 раз
- Контактная информация:
Re: и снова трудности AF
Два вопроса:
- что делает метод за кейс-структурой 2-го метода (проверяет на наличие ошибки? случайно не пишет что-то в файл?);
- как ведет себя актор, которому сообщения отправляются? Успевает обрабатывать?
Попробуйте код отправки сообщения поместить прямо в метод, не вызывая родительский метод, и посмотрите на поведение...
- что делает метод за кейс-структурой 2-го метода (проверяет на наличие ошибки? случайно не пишет что-то в файл?);
- как ведет себя актор, которому сообщения отправляются? Успевает обрабатывать?
Попробуйте код отправки сообщения поместить прямо в метод, не вызывая родительский метод, и посмотрите на поведение...
Мы делили апельсин - много наших полегло...
-
- professor
- Сообщения: 3407
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 176 раз
- Контактная информация:
Re: и снова трудности AF
совершенно случайно он отправляет ещё одно сообщение другому актору (ловля ошибок для отладки)
С виду ведёт себя прилично. Не могу проверить, не копится ли там очередь. Да и какое это может иметь значение? скорость выгребания очереди не тормозит скорости её заполнения.- как ведет себя актор, которому сообщения отправляются? Успевает обрабатывать?
Интересная идея. Хотя это и попортит универсальность отправки данныхПопробуйте код отправки сообщения поместить прямо в метод, не вызывая родительский метод, и посмотрите на поведение...
-
Kosist
- expert
- Сообщения: 1236
- Зарегистрирован: 21 фев 2011, 23:44
- Награды: 2
- Версия LabVIEW: 2013-2020
- Благодарил (а): 23 раза
- Поблагодарили: 30 раз
- Контактная информация:
Re: и снова трудности AF
Всего лишь для тестирования.
Идея - попробуйте еще узнать который из методов отправки во второй виайке начинает тормозить - отправка данных, или проверка ошибки; посмотрите время исполнения каждого отдельно).
А нужно ли там вообще проверять ошибку? Ведь если ошибка будет на входе - то выполнится Error Case. А внутри No Error Case ошибка может быть только в случае если Caller ссылка уже неактивная (что крайне маловероятно). Поэтому целесообразней всего виайку для проверки ошибки (и отправки ее другому актору) переместить в Error Case.
И откуда метод берет ссылку на другой актор (которому он может отправить сообщение)? Ведь вход только - кластер ошибок?
Мы делили апельсин - много наших полегло...
-
- adviser
- Сообщения: 231
- Зарегистрирован: 06 ноя 2020, 15:37
- Версия LabVIEW: 19
- Благодарил (а): 18 раз
- Поблагодарили: 37 раз
- Контактная информация:
Re: и снова трудности AF
???
max queue size - задать лимит
enqueue element не подключать timeout.
Не читать очередь.
-
Kosist
- expert
- Сообщения: 1236
- Зарегистрирован: 21 фев 2011, 23:44
- Награды: 2
- Версия LabVIEW: 2013-2020
- Благодарил (а): 23 раза
- Поблагодарили: 30 раз
- Контактная информация:
Re: и снова трудности AF
А при чем тут это? В AF размер очереди неограниченный, и вообще работа с очередью энкапсулирована и "по-хорошему" ее никто не меняет т.к. это часть фреймворка.
Мы делили апельсин - много наших полегло...
-
- adviser
- Сообщения: 231
- Зарегистрирован: 06 ноя 2020, 15:37
- Версия LabVIEW: 19
- Благодарил (а): 18 раз
- Поблагодарили: 37 раз
- Контактная информация:
Re: и снова трудности AF
Я просто не знаю как AF работает, поэтому и вопросы есть ли ограничения. Иногда причины бывают в простых вещах.
-
- professor
- Сообщения: 3407
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 176 раз
- Контактная информация:
Re: и снова трудности AF
Всё оказалось банально. Просто внимательнее надо быть....
Шутка для тех, кто понимает
В самом тяжёлом случае он логирует всё и позволяет найти аномалии поведения без установки доп тулкитов.
Вот как сейчас. Включил я тотальную слежку и обнаружил, что слишком много попыток реконнекта.
Причём всё это происходило совсем в дргом месте, а не там где я нашёл "аномальное" поведение.
он хранит его сам в себе, в сдвиговом регистре. Это просто обёртка над акторами
Шутка для тех, кто понимает
Тут длинная история. Этот логгер я сделал себе давно и просто подключаю во все проекты. У него несколько режимов работы, поэтому он и стоит в самом конце каждого метода.
В самом тяжёлом случае он логирует всё и позволяет найти аномалии поведения без установки доп тулкитов.
Вот как сейчас. Включил я тотальную слежку и обнаружил, что слишком много попыток реконнекта.
Причём всё это происходило совсем в дргом месте, а не там где я нашёл "аномальное" поведение.
Места знать надо :)И откуда метод берет ссылку на другой актор (которому он может отправить сообщение)? Ведь вход только - кластер ошибок?
он хранит его сам в себе, в сдвиговом регистре. Это просто обёртка над акторами
-
Kosist
- expert
- Сообщения: 1236
- Зарегистрирован: 21 фев 2011, 23:44
- Награды: 2
- Версия LabVIEW: 2013-2020
- Благодарил (а): 23 раза
- Поблагодарили: 30 раз
- Контактная информация:
Re: и снова трудности AF
О, отлично что проблема решена )))
Мы делили апельсин - много наших полегло...