Скорость работы Majordomo на разном железе (Raspberry, Intel PC, etc..)
Модератор: immortal
-
- Сообщения: 33
- Зарегистрирован: Пт авг 03, 2018 5:47 pm
- Благодарил (а): 2 раза
- Поблагодарили: 2 раза
Re: Скорость работы Majordomo на разном железе (Raspberry, Intel PC, etc..)
Подтверждаю проблему. Две квартиры увешанные датчиками движения ксаоми и сенсорными выключателями. Средняя частота срабатывания 1-2 секунды. Бывают задержки в от 5 до 15 секунд. Бывает вообще не срабатывают. В одной квартире малина с МДМ установлена подключены по изернте кабелю. Во второй квартире малина подключена по вайфаю. Во втором случае задержки и несрабатывания происходят гораздо чаще. Картина в целом очень печальная. Каждый раз идешь и думаешь, сработает или нет.
- maksimka
- Сообщения: 23
- Зарегистрирован: Сб апр 07, 2018 2:04 pm
- Откуда: Новосибирск
- Благодарил (а): 13 раз
- Поблагодарили: 12 раз
Re: Скорость работы Majordomo на разном железе (Raspberry, Intel PC, etc..)
Я решил проблему тормозов кардинально - выделил для MDM отдельный роутер, и все что связано с датчиками, ESP, терминалами и прочими компонентами живут в отдельной сети. Третий месяц пошел - полет более чем нормальный!
- Рейтинг: 1.16%
-
- Сообщения: 33
- Зарегистрирован: Пт авг 03, 2018 5:47 pm
- Благодарил (а): 2 раза
- Поблагодарили: 2 раза
Re: Скорость работы Majordomo на разном железе (Raspberry, Intel PC, etc..)
Товарищи, у кого есть задержки, к какому модулю (устройствам) привязаны ваши датчики? Какие выключатели/реле включают? У меня, к примеру, броадлинк. Я сделал дебаги по всему коду ксаомихоум, и прихожу к выводу, что задержка возникает в самом конце работы модуля, при вызове callMethod на связанном объекте. У меня через объекты привязаны выключатели броадлинк. Возможно именно они и дают лаг. Но, это не точно. 1. Я не уверен, что метод callMethod способен блокировать поток выполнения модуля, тем более там получается довольно длинная цепочка. 2. В этом методе есть еще поиск объекта, возможно лагает он. 3. Я проверял все объекты связанные с броадлинк, включение, при нажатии на кнопку тест в разделе редактирования методов, выполняется почти мгновенно.
-
- Сообщения: 33
- Зарегистрирован: Пт авг 03, 2018 5:47 pm
- Благодарил (а): 2 раза
- Поблагодарили: 2 раза
Re: Скорость работы Majordomo на разном железе (Raspberry, Intel PC, etc..)
Пока выложу лог, который получился. Дебаги поставил в скрипте xiaomihome.class.php
09:09:15 0.57258000 Recive motion - пришло сообщение от датчика
09:09:15 0.58363100 Xiaomi motion complete setGlobal - в этот момент прошли записи в бд, связанные с сообщением. Никаких задержек нету
09:09:15 0.58383500 Start call method XMotion_ванная motionDetected - дебаг перед вызовом связанного метода
09:09:15 0.98176800 Xiaomi motion update complete!! - завершение метода. Т.е. вся обработка сообщения и вызова метода на выключатели заняли пол секунды. И свет включился без задержки.
А вот лог с другого датчика через несколько минут
09:09:22 0.71682000 Start call method XMotion_туалет motionDetected
09:09:26 0.26229200 Xiaomi motion update complete!!
Разница почти 4 секунды. И визуально я эту задержку включения света в 4 секунды наблюдал.
09:09:15 0.57258000 Recive motion - пришло сообщение от датчика
09:09:15 0.58363100 Xiaomi motion complete setGlobal - в этот момент прошли записи в бд, связанные с сообщением. Никаких задержек нету
09:09:15 0.58383500 Start call method XMotion_ванная motionDetected - дебаг перед вызовом связанного метода
09:09:15 0.98176800 Xiaomi motion update complete!! - завершение метода. Т.е. вся обработка сообщения и вызова метода на выключатели заняли пол секунды. И свет включился без задержки.
А вот лог с другого датчика через несколько минут
09:09:22 0.71682000 Start call method XMotion_туалет motionDetected
09:09:26 0.26229200 Xiaomi motion update complete!!
Разница почти 4 секунды. И визуально я эту задержку включения света в 4 секунды наблюдал.
-
- Сообщения: 395
- Зарегистрирован: Вт май 31, 2016 6:56 pm
- Откуда: Россия Карелия Петрозаводск
- Благодарил (а): 95 раз
- Поблагодарили: 57 раз
Re: Скорость работы Majordomo на разном железе (Raspberry, Intel PC, etc..)
Датчики включают выключатели sonoff с собственной прошивкой через http запросы.crazy_russian_bear писал(а): ↑Пн ноя 12, 2018 12:24 amТоварищи, у кого есть задержки, к какому модулю (устройствам) привязаны ваши датчики? Какие выключатели/реле включают?
Сервер МД на x86 micro pc ssd + HDD, OC Debian, терминал Xiaomi Redmi note 7
Мои исходники для мд управляемых устройств https://github.com/vgamaev/ESPMDDEVICE
Мои исходники для мд управляемых устройств https://github.com/vgamaev/ESPMDDEVICE
-
- Сообщения: 33
- Зарегистрирован: Пт авг 03, 2018 5:47 pm
- Благодарил (а): 2 раза
- Поблагодарили: 2 раза
Re: Скорость работы Majordomo на разном железе (Raspberry, Intel PC, etc..)
А сколько у вас всего устройств от ксаоми подключенных к МД? Включая датчики температуры, открытия/закрытия, движения, в общем все, которые шлют с определенной периодичностью сообщения?VladPTZ писал(а): ↑Пн ноя 12, 2018 9:35 amДатчики включают выключатели sonoff с собственной прошивкой через http запросы.crazy_russian_bear писал(а): ↑Пн ноя 12, 2018 12:24 amТоварищи, у кого есть задержки, к какому модулю (устройствам) привязаны ваши датчики? Какие выключатели/реле включают?
Сейчас прихожу к выводу, что задержка складывается из 2 составляющих. 1. Это обработка сообщений 2. Отправка сообщения на броадлинк
И обе эти задержки могут колебаться. Например вижу, что идет задержка включения света. Лезу в логи, а там в этот момент помимо вызова метода от датчика движения, вызвались еще 20 методов от датчика температуры и прочих датчиков движения, которые послали no_motion. В итоге идет лаг. Но опять же это не точно. Пока нету четкого понимания, как выполняются методы, есть ли какой-нибудь параллелизм или все вызовы блокирующие.
-
- Сообщения: 395
- Зарегистрирован: Вт май 31, 2016 6:56 pm
- Откуда: Россия Карелия Петрозаводск
- Благодарил (а): 95 раз
- Поблагодарили: 57 раз
Re: Скорость работы Majordomo на разном железе (Raspberry, Intel PC, etc..)
10 устройств и шлюз xiaomi
5 датчиков движения
2 кнопки
2 датчика протечки
1 датчик вибрации
5 датчиков движения
2 кнопки
2 датчика протечки
1 датчик вибрации
Сервер МД на x86 micro pc ssd + HDD, OC Debian, терминал Xiaomi Redmi note 7
Мои исходники для мд управляемых устройств https://github.com/vgamaev/ESPMDDEVICE
Мои исходники для мд управляемых устройств https://github.com/vgamaev/ESPMDDEVICE
-
- Сообщения: 33
- Зарегистрирован: Пт авг 03, 2018 5:47 pm
- Благодарил (а): 2 раза
- Поблагодарили: 2 раза
Re: Скорость работы Majordomo на разном железе (Raspberry, Intel PC, etc..)
Скорее всего у вас такая же ситуация как и у меня
10:58:55 0.55968700 {"cmd":"report","model":"motion","sid":"158d00023ec821","short_id":22706,"data":"{\"status\":\"motion\"}"}
10:58:55 0.56300100 Recive motion
10:58:55 0.56682700 Xiaomi motion start SQLSelectOne cmd_rec
10:58:55 0.56932500 Xiaomi motion complete SQLSelectOne cmd_rec
10:58:55 0.56972600 Xiaomi motion start SQLUpdate cmd_rec
10:58:55 0.57129100 Xiaomi motion , SQLUpdate cmd_rec
10:58:55 0.58437300 Xiaomi motion completesetGlobal cmd_rec
10:58:55 0.58474500 Start call method XMotion_ванная motionDetected
10:58:55 0.66857900 Start execute method XMotion_ванная statusUpdated
10:58:55 0.67079300 Method update complete XMotion_ванная statusUpdated
10:58:55 0.69729700 Start execute method XMotion_ванная setUpdatedText
10:58:55 0.69885800 Method update complete XMotion_ванная setUpdatedText
10:58:55 0.70655900 Method execute complete setUpdatedText
10:58:55 0.72224600 Start execute method XMotion_ванная logicAction
10:58:55 0.72355900 Method update complete XMotion_ванная logicAction
10:58:55 0.72399300 Method execute complete logicAction
10:58:55 0.72509000 Method execute complete statusUpdated
10:58:55 0.77800000 Start execute method Выключатель_ванная_зеркало statusUpdated
10:58:55 0.77932600 Method update complete Выключатель_ванная_зеркало statusUpdated
10:58:55 0.79155000 Start execute method Выключатель_ванная_зеркало setUpdatedText
10:58:55 0.79277400 Method update complete Выключатель_ванная_зеркало setUpdatedText
10:58:55 0.80031800 Method execute complete setUpdatedText
10:58:55 0.81992800 Start execute method Выключатель_ванная_зеркало logicAction
10:58:55 0.82113900 Method update complete Выключатель_ванная_зеркало logicAction
10:58:55 0.82151400 Method execute complete logicAction
10:58:55 0.82258500 Method execute complete statusUpdated
//здесь заканчивается вызов связанных методов
10:58:55 0.97326200 Xiaomi motion update complete!!
// Вот здесь внезапно идет поиск совершенно не связанного объекта и тратиться на это 2 секунды
10:58:58 0.18632600 Object founded, start call method Выключатель_прихожая
10:58:58 0.19567600 Start execute method Выключатель_прихожая setUpdatedText
10:58:58 0.19770400 Method update complete Выключатель_прихожая setUpdatedText
10:58:58 0.21025900 Method execute complete setUpdatedText
// Еще секунда чтобы обновить этот непонятный объект и потом только отправка сообщения на броадлинк
10:58:59 0.73645700 Broadlink packet checked 16 16 72
10:58:59 0.77492200 Message sended
10:58:59 0.79667800 Broadlink packet checked 16 16 72
10:58:59 0.92516500 Message sended
В итоге задержка в несколько секунд. А бывает, что это полотно из методов просто огромное, обновляется все подряд, выключатель в коридоре, датчики температуры в детской и прочее. И в итоге задержка может быть в 10 и более секунд. На 1м этапе нужно пройтись по связанным объектам и методам и понять, почему приходит motion от одного датчика, а обновляться начинает все подряд.
Потом нужно что-то придумать, когда приходят сообщения сразу от нескольких датчиков. Тут нужна какая-то очередь с приоритетом, чтобы события от датчиков движения и датчиков закрытия обрабатывались в первую очередь
10:58:55 0.55968700 {"cmd":"report","model":"motion","sid":"158d00023ec821","short_id":22706,"data":"{\"status\":\"motion\"}"}
10:58:55 0.56300100 Recive motion
10:58:55 0.56682700 Xiaomi motion start SQLSelectOne cmd_rec
10:58:55 0.56932500 Xiaomi motion complete SQLSelectOne cmd_rec
10:58:55 0.56972600 Xiaomi motion start SQLUpdate cmd_rec
10:58:55 0.57129100 Xiaomi motion , SQLUpdate cmd_rec
10:58:55 0.58437300 Xiaomi motion completesetGlobal cmd_rec
10:58:55 0.58474500 Start call method XMotion_ванная motionDetected
10:58:55 0.66857900 Start execute method XMotion_ванная statusUpdated
10:58:55 0.67079300 Method update complete XMotion_ванная statusUpdated
10:58:55 0.69729700 Start execute method XMotion_ванная setUpdatedText
10:58:55 0.69885800 Method update complete XMotion_ванная setUpdatedText
10:58:55 0.70655900 Method execute complete setUpdatedText
10:58:55 0.72224600 Start execute method XMotion_ванная logicAction
10:58:55 0.72355900 Method update complete XMotion_ванная logicAction
10:58:55 0.72399300 Method execute complete logicAction
10:58:55 0.72509000 Method execute complete statusUpdated
10:58:55 0.77800000 Start execute method Выключатель_ванная_зеркало statusUpdated
10:58:55 0.77932600 Method update complete Выключатель_ванная_зеркало statusUpdated
10:58:55 0.79155000 Start execute method Выключатель_ванная_зеркало setUpdatedText
10:58:55 0.79277400 Method update complete Выключатель_ванная_зеркало setUpdatedText
10:58:55 0.80031800 Method execute complete setUpdatedText
10:58:55 0.81992800 Start execute method Выключатель_ванная_зеркало logicAction
10:58:55 0.82113900 Method update complete Выключатель_ванная_зеркало logicAction
10:58:55 0.82151400 Method execute complete logicAction
10:58:55 0.82258500 Method execute complete statusUpdated
//здесь заканчивается вызов связанных методов
10:58:55 0.97326200 Xiaomi motion update complete!!
// Вот здесь внезапно идет поиск совершенно не связанного объекта и тратиться на это 2 секунды
10:58:58 0.18632600 Object founded, start call method Выключатель_прихожая
10:58:58 0.19567600 Start execute method Выключатель_прихожая setUpdatedText
10:58:58 0.19770400 Method update complete Выключатель_прихожая setUpdatedText
10:58:58 0.21025900 Method execute complete setUpdatedText
// Еще секунда чтобы обновить этот непонятный объект и потом только отправка сообщения на броадлинк
10:58:59 0.73645700 Broadlink packet checked 16 16 72
10:58:59 0.77492200 Message sended
10:58:59 0.79667800 Broadlink packet checked 16 16 72
10:58:59 0.92516500 Message sended
В итоге задержка в несколько секунд. А бывает, что это полотно из методов просто огромное, обновляется все подряд, выключатель в коридоре, датчики температуры в детской и прочее. И в итоге задержка может быть в 10 и более секунд. На 1м этапе нужно пройтись по связанным объектам и методам и понять, почему приходит motion от одного датчика, а обновляться начинает все подряд.
Потом нужно что-то придумать, когда приходят сообщения сразу от нескольких датчиков. Тут нужна какая-то очередь с приоритетом, чтобы события от датчиков движения и датчиков закрытия обрабатывались в первую очередь
-
- Сообщения: 3006
- Зарегистрирован: Чт авг 21, 2014 8:28 am
- Откуда: Киров, Россия
- Благодарил (а): 400 раз
- Поблагодарили: 1753 раза
- Контактная информация:
Re: Скорость работы Majordomo на разном железе (Raspberry, Intel PC, etc..)
Способен, если в пользовательских методах есть какой-либо треш, например sleep() или еще чего.crazy_russian_bear писал(а): ↑Пн ноя 12, 2018 12:24 amЯ не уверен, что метод callMethod способен блокировать поток выполнения модуля.
Попробуй замени в callMethod($cmd_rec['LINKED_OBJECT'] . '.' . $cmd_rec['LINKED_METHOD'], $message_data['data']);
callMethod() на callMethodSafe()
https://github.com/sergejey/majordomo-x ... s.php#L722
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Мой CONNECT | Блоги | Telegram
-
- Сообщения: 3006
- Зарегистрирован: Чт авг 21, 2014 8:28 am
- Откуда: Киров, Россия
- Благодарил (а): 400 раз
- Поблагодарили: 1753 раза
- Контактная информация:
Re: Скорость работы Majordomo на разном железе (Raspberry, Intel PC, etc..)
А это откуда? В какое место вставлял дебмес, чтобы увидеть?crazy_russian_bear писал(а): ↑Пн ноя 12, 2018 11:39 am// Вот здесь внезапно идет поиск совершенно не связанного объекта и тратиться на это 2 секунды
10:58:58 0.18632600 Object founded, start call method Выключатель_прихожая
10:58:58 0.19567600 Start execute method Выключатель_прихожая setUpdatedText
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Мой CONNECT | Блоги | Telegram