crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


Сейчас на сайте человек: 204
(пользователей: 0, гостей: 204)
Yandex.com, Google.com, Baidu.com

Перейти к месяцу

Август 2019

  ПВСЧПСВ
»
1
2
3
4
»
5
6
7
8
10
11
»
13
14
16
17
»
20
21
22
23
24
25
»
26
29
30

> Последние обсуждения
 
> Настройка Ethernet.
Автор demon051 — 25.7.2019, 8:27 — 5 комментариев
Всем привет!

Не знаю где этот вопрос можно разместить поэтому тут пишу. Модератор - знаешь, перекинь в правильное место

Есть девайс на проце imx6ul
Есть у него два эзернет порта eth0 и eth1. Когда девайс привозит производитель, оба порта активны и работают.

Так же есть образ linux debian специальный эдишн. Под этот проц.
После его накатывания, остается в живых только один порт езернет. Причем тот, который был eth1 становится eth0. реальный нулевой исчезает.
Попытки конфигурировать через /etc/network/interfaces ни к чему не приводя. Получается только вариант с eth0 на месте eth1.
Образ тоже, с-ка, от производителя, который говорит, что быть ничего такого не может, что всё работает и т.д. и т.п.
Но на не скольких устройствах проверено, всё происходит, как я описал.

Кто знает, как настроить оба порта корректно, подскажите, пожалуйста!!
Предложения подать на производителя в суд, вызвать ему киллера и т.д. - не принимаются :)
Заранее спасибо!
Просмотров: 131, последний комментарий от Iron Bug   

> QTcpServer - вопрос по тормозам
Автор Алексей1153 — 24.7.2019, 9:57 — 3 комментариев
уж не знаю, это глюк версии Qt 5.9.2, либо я что-то не учитываю.
Наткнулся на особенность работы класса QTcpServer. Где-то в тёмных глубинах Qt во время работы программы постепенно накапливаются некие системные сообщения для/от экземпляра данного класса, что при достаточно высокой нагрузке за несколько суток приводит к "накоплению" тормозов при вычитке сообщений в QEventLoop/exec() (кто что предпочитает, но это одно и то же, по сути)

Как работает глюк (по моему предположению): по прошествии длительного времени при очередном вызове m_EventLoop.processEvents(QEventLoop::AllEvents), либо при аналогичном вызове в глубинах exec() совершается некая работа по разгребанию мусорных сообщений (системные сообщения и сигналы). По неким причинам они, эти сообщения, оттуда не вычищаются. Это всё приводит к постепенной нагрузке на ЦП (проверял при помощи отладочных кнопок в приложении - если в этот момент обойти эту функцию, то нагрузка на ЦП пропадает, если обратно начать вызывать - нагрузка появляется).

Почему грешу именно на экземпляр QTcpServer ? Путём долгих и нудных исследований, добавляя отладочные кнопки и галочки выяснил, что именно динамическое пересоздание именно этого компонента программы убирает проблему с повышенной загрузкой ЦП. То есть, я ждал несколько дней, когда ЦП становился загружен на 100%, затем по дебажной кнопке производил пересоздание слушающего объекта
delete pServer;
pServer= new QTcpServer;
pServer->listen...

и тут же всё приходит в норму. Но через пару дней опят нагрузка накапливается. Помогает только динамическое пересознание слушалки, простой вызов close, а даже и закрытие и удаление всех принятых клиентов влияния не оказывает.

Решение на текущий момент: раз в 5 минут пересоздаю слушалку. Тормоза пропали. Это, в принципе, устраивает, так как клиентов, контейнеры - я ничего не затрагиваю, они продолжают работать.

Может, кто знает точно, как это решается штатно, либо это глюк версии Qt 5.9.2 ?
Просмотров: 140, последний комментарий от Алексей1153   

RSS Текстовая версия Сейчас: 18.8.2019, 20:52