УкраїнськаEnglishmRussian
Вход/Новый
В теме нет новых постов

Почему версия 6.3.1 так медленно работает?


Автор Сообщение
Сообщение создано: 23. 02. 2009 [13:48]
xintrea
Sergey Stepanov
Создатель темы
Зарегистрирован(а) с: 23.02.2009
Сообщения: 7
Здравствуйте!


Примерно год назад приглядывался к OpenScada, смотрел версию 0.6. Потенциал оценил, но для внедрения побоялся использовать. Демопример там был скудный немного, не впечатлящий, в новой версии 0.6.3.1 все гораздо серъезнее выглядит. Сейчас снова начались движения в сторону внедрения, попросили меня сделать презентацию, показать что работает, как.

Скачал я 6.3.1.0, собрал, и хотел было уже начать делать презентацию, но натнулся на проблему - интерфейс работает очень медленно. Обычные действия "развернуть ветку в конфигураторе", переткнуться на соседню вкладку" выполняются 3-4 секунды. Это до того медленно, что непонятно вообще, как можно работать. При этом, сразу после запуска демопримера, проц занят на 90-100%, даже если никаких действий не производить.

Скриншот

http://i.piccy.info/i3/78/09/d787089fd0ef2729fb418117a07b.jpeg
http://i.piccy.info/i3/f9/4c/629df957a673d9f3b907d6cae2ef.png

Внизу видна диаграмма загрузки проца до запуска OpenScada (небольшой участок) и после. Справа виден вывод htop.

В предыдущей версии OpenScada 0.6.0 таких проблем не наблюдалось.

Комп - Celeron 1.7MHz, 768Mb ОЗУ.
Операционка - Ubuntu 7.04, ядро 2.6.22.9, KDE 3.5.6, Qt 4.4.1.
Сборка OpenScada - локальная, без FireBird.

Более другие Qt проги не тормозят, все работает шустро, кроме OpenScada.


Что делать? Как решить проблему?


[Сообщение редактировалось 3 раз(а), в последний раз 23.02.2009 в 13:59.]
Сообщение создано: 23. 02. 2009 [14:58]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
xintrea wrote:

Скачал я 6.3.1.0, собрал, и хотел было уже начать делать презентацию, но натнулся на проблему - интерфейс работает очень медленно. Обычные действия "развернуть ветку в конфигураторе", переткнуться на соседню вкладку" выполняются 3-4 секунды. Это до того медленно, что непонятно вообще, как можно работать. При этом, сразу после запуска демопримера, проц занят на 90-100%, даже если никаких действий не производить.

В предыдущей версии OpenScada 0.6.0 таких проблем не наблюдалось.

Их и сейчас нет. Исходя из Вашего скрина можно сказать только, что 11% CPU и 6% ОЗУ ест OpenSCADA. А крелы системного монитора, внизу, абсолютно не показательны, они шкалу верхнюю двигают.

Кроме того, OpenSCADA в демо, содержит модель ТП компрессорной станции на 6 компрессоров реального времени с ресурсоёмкостью около 1ГГц (100%).

А тормозить может если кто-то съел всю память и OpenSCADA выехала в своп. Из скрина кто это сделал не видно, видно только, что OpenSCADA съела всего 6%.

xintrea wrote:

Что делать? Как решить проблему?


Предоставить нормальные данные, для начала.
# free
# htop (нажать Shift+M)


Learn, learn and learn better than work, work and work.
Сообщение создано: 23. 02. 2009 [22:02]
xintrea
Sergey Stepanov
Создатель темы
Зарегистрирован(а) с: 23.02.2009
Сообщения: 7
roman wrote:

Исходя из Вашего скрина можно сказать только, что 11% CPU и 6% ОЗУ ест OpenSCADA.

Ну как же 11%? На скрине несколько процессов OpenScada, собранные вверху списка

11+10+9+9+8+8+6+6 = 67%

ОЗУ действительно мало есться, тут вопросов нет. Своп, кстати, не трогается.

roman wrote:

А крелы системного монитора, внизу, абсолютно не показательны, они шкалу верхнюю двигают.

У меня не двигают, у меня настроено так, что верхняя граница всегда 100% (иначе бесполезный график был бы).

roman wrote:

Кроме того, OpenSCADA в демо, содержит модель ТП компрессорной станции на 6 компрессоров реального времени с ресурсоёмкостью около 1ГГц (100%).

А вот как бы быстро отключить сию модель, и посмотреть, тормозит ли интерфейс, или нет?

roman wrote:

А тормозить может если кто-то съел всю память и OpenSCADA выехала в своп. Из скрина кто это сделал не видно, видно только, что OpenSCADA съела всего 6%.

Предоставь нормальные данные, для начала.
# free
# htop (нажать Shift+M)


Не, своп не задействован. Вот еще два скрина

Сортировка по процессорному времени (занятость проца 79%)
http://i.piccy.info/i3/75/d5/dc22bd0021c377d0de38a6524543.jpeg
http://i.piccy.info/i3/38/e4/4024035025f10f745a2396d6940a.png

Сортировка по использованной памяти (Shift+M) (занятость проца 100%)
http://i.piccy.info/i3/3a/6d/ae1de258600532d6db5f5077801b.jpeg
http://i.piccy.info/i3/73/37/74986966f09b9b4d6e2cd96a73f8.png

Когда OpenScada не запущена, занятость проца колеблется в пределах 2-5%, то есть, дополнительно ничего сильно нагружающего не крутится.

Вывод free до запуска OpenScada

total used free shared buffers cached
Mem: 775364 714472 60892 0 11884 238648
-/+ buffers/cache: 463940 311424
Swap: 1541316 5628 1535688

Вывод free во время работы OpenScada

total used free shared buffers cached
Mem: 775364 747292 28072 0 11928 239260
-/+ buffers/cache: 496104 279260
Swap: 1541316 5628 1535688

В чуть получше отформатированном виде - http://paste.org.ru/?t20fvn.
Сообщение создано: 23. 02. 2009 [23:08]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
xintrea wrote:

roman wrote:

Исходя из Вашего скрина можно сказать только, что 11% CPU и 6% ОЗУ ест OpenSCADA.

Ну как же 11%? На скрине несколько процессов OpenScada, собранные вверху списка

11+10+9+9+8+8+6+6 = 67%

А да, около 8 потоков модели. По одному на компрессор, один на общестанционку и по мелочам.

xintrea wrote:

roman wrote:

Кроме того, OpenSCADA в демо, содержит модель ТП компрессорной станции на 6 компрессоров реального времени с ресурсоёмкостью около 1ГГц (100%).

А вот как бы быстро отключить сию модель, и посмотреть, тормозит ли интерфейс, или нет?

"Сбор данных"->"Блочный вычислитель" и пошли у контроллеров снимать флаг "Запущен".

xintrea wrote:

Когда OpenScada не запущена, занятость проца колеблется в пределах 2-5%, то есть, дополнительно ничего сильно нагружающего не крутится.

OK. Похоже это модель. Ранее в ней было всего два компрессора. icon_smile.gif

Learn, learn and learn better than work, work and work.
Сообщение создано: 23. 02. 2009 [23:55]
xintrea
Sergey Stepanov
Создатель темы
Зарегистрирован(а) с: 23.02.2009
Сообщения: 7
Поотключал все контроллеры физмодели, занятость проца упала до тех же самых 2-5%.

Отзывчивость интерфейса немного улучшилась, но не настолько, чтобы комфортно можно было работать. То есть раньше ветка открывалась 3-4 сек, стало 1-2 сек, иногда дольше. Уже начинаю грешить на Qt 4.4.1, попробовать чтоли на 4.3.0 пересобрать...

Вопрос такой. Если при конфигурации исходников указать параметр

--with-qt4-dir=...

то потом при запуске будут использоваться именно либы из указанной директории? Или данный флаг влияет только на сборку, а при запуске будут использоваться Qt либы, которые будут найдены в системе обычным способом?
Сообщение создано: 24. 02. 2009 [09:24]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
xintrea wrote:

Отзывчивость интерфейса немного улучшилась, но не настолько, чтобы комфортно можно было работать. То есть раньше ветка открывалась 3-4 сек, стало 1-2 сек, иногда дольше. Уже начинаю грешить на Qt 4.4.1, попробовать чтоли на 4.3.0 пересобрать...

Какая ветка? У меня QT 4.4.3 и QTCfg на OpenSCADA 0.6.3.1 открывает странички менее чем за секунду.
Впрочем, с некоторыми темами QT 4 интерфейс может значительно тормозить.

xintrea wrote:

Вопрос такой. Если при конфигурации исходников указать параметр

--with-qt4-dir=...

то потом при запуске будут использоваться именно либы из указанной директории? Или данный флаг влияет только на сборку, а при запуске будут использоваться Qt либы, которые будут найдены в системе обычным способом?

И для компиляции и для исполнения.

Learn, learn and learn better than work, work and work.
Сообщение создано: 24. 02. 2009 [18:22]
xintrea
Sergey Stepanov
Создатель темы
Зарегистрирован(а) с: 23.02.2009
Сообщения: 7
roman wrote:

xintrea wrote:

Отзывчивость интерфейса немного улучшилась, но не настолько, чтобы комфортно можно было работать. То есть раньше ветка открывалась 3-4 сек, стало 1-2 сек, иногда дольше. Уже начинаю грешить на Qt 4.4.1, попробовать чтоли на 4.3.0 пересобрать...

Какая ветка? У меня QT 4.4.3 и QTCfg на OpenSCADA 0.6.3.1 открывает странички менее чем за секунду.

Ветка 4.4.1, хочу попробовать на 4.3.0

roman wrote:

Впрочем, с некоторыми темами QT 4 интерфейс может значительно тормозить.

Тема дефолтная

roman wrote:

xintrea wrote:

Вопрос такой. Если при конфигурации исходников указать параметр --with-qt4-dir=... то потом при запуске будут использоваться именно либы из указанной директории? Или данный флаг влияет только на сборку, а при запуске будут использоваться Qt либы, которые будут найдены в системе обычным способом?

И для компиляции и для исполнения.


Видимо, чтоб собрать с какой-то конкретной версией Qt, опции --with-qt4-dir недостаточно.

Пример - имею Qt версии 4.3.0, установленную в /usr/share/qt4_3_0. В этой директории есть поддиректории, со всеми нужными файлами (всякие moc, qmake, so библиотеки..)

bin
doc
include
lib
mkspecs
phrasebooks
plugins
translations

Делаю make clean, потом запускаю локальную сборку в каталог /opt/openscada_0_6_3_1_430

./configure CFLAGS="-O2" CXXFLAGS="-O2" --prefix=/opt/openscada_0_6_3_1_430 --disable-FireBird --with-qt4-dir=/usr/share/qt4_3_0

Потом make, make install, послеустановочные действия.

Удивляет, что во время компиляции имеем примерно такие команды

g++ -DHAVE_CONFIG_H -I. -I../../../.. -I/usr/include/qt4 -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I../../../../src -fPIC -DPIC -DQT_EDITION=QT_EDITION_DESKTOP -DQT_USE_APPROXIMATE_CURSORS -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -DQT_GUI_LIB -DQT_CORE_LIB -O2 -MT vis_shape_elfig.o -MD -MP -MF .deps/vis_shape_elfig.Tpo -c -o vis_shape_elfig.o vis_shape_elfig.cpp

то есть, ни о каком /usr/share/qt4_3_0 речи не идет.

В командах линковки строка "-L/usr/share/qt4_3_0/lib" встречается, но по всей видимости, всеравно берутся общесистемные библиотеки

/bin/sh ../../../../libtool --tag=CXX --mode=link g++ -I/usr/include/qt4 -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I../../../../src -fPIC -DPIC -DQT_EDITION=QT_EDITION_DESKTOP -DQT_USE_APPROXIMATE_CURSORS -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -DQT_GUI_LIB -DQT_CORE_LIB -O2 -shared -module -o ui_Vision.so tvision.o qrc_vision.o vis_widgs.o moc_vis_widgs.o vis_shapes.o moc_vis_shapes.o vis_devel.o moc_vis_devel.o vis_devel_dlgs.o moc_vis_devel_dlgs.o vis_devel_widgs.o moc_vis_devel_widgs.o vis_run.o moc_vis_run.o vis_run_widgs.o moc_vis_run_widgs.o vis_shape_elfig.o moc_vis_shape_elfig.o -L/usr/share/qt4_3_0/lib -lQtGui

После сборки, при запуске openscada из подкаталога /opt/openscada_0_6_3_1_430, если нажать "O Qt", показывается, что собрано с библиотекой 4.4.1. Или, если посмотреть, от каких либ зависит ui_Vision.so, то увидим

#ldd ui_Vision.so
linux-gate.so.1 => (0xffffe000)
libQtGui.so.4 => /usr/lib/qt4/lib/libQtGui.so.4 (0xb73aa000)
...

то есть, библиотеки Qt из каталога /usr/share/qt4_3_0 не используется.


Вопрос - как собрать OpenScada с нужной версией Qt, которая установлена в отдельную директорию (в нашем случае в /usr/share/qt4_3_0) ?


[Сообщение редактировалось 1 раз(а), в последний раз 24.02.2009 в 18:23.]
Сообщение создано: 25. 02. 2009 [10:29]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
xintrea wrote:

Видимо, чтоб собрать с какой-то конкретной версией Qt, опции --with-qt4-dir недостаточно.

-with-qt4-dir не предназначена для сборки с другой, не системной библиотекой QT. Она предназначена для решения проблем с размещением системной QT4 в различных дистрибутивах.

Learn, learn and learn better than work, work and work.
Сообщение создано: 25. 02. 2009 [16:03]
xintrea
Sergey Stepanov
Создатель темы
Зарегистрирован(а) с: 23.02.2009
Сообщения: 7
roman wrote:

xintrea wrote:

Видимо, чтоб собрать с какой-то конкретной версией Qt, опции --with-qt4-dir недостаточно.

-with-qt4-dir не предназначена для сборки с другой, не системной библиотекой QT. Она предназначена для решения проблем с размещением системной QT4 в различных дистрибутивах.


Ну, в общем собрал я под Qt 4.3.0. Результат - действительно, стало заметно быстрее. В конфигураторе вкладки и ветки стали нормально открываться (небольшая задержка всеравно осталась, но явно не такая как в 4.4.1). А в визуализаторе все стало отрисовываться с дикой скоростью. Если раньше, при перетыкании в окне мнемосхемы на вторую мнемосхему (или на другой вид отчетности) приходилось ждать более пяти секунд, то сейчас это происходит менее чем за секунду, не успеваешь прочитать надпись в центре на сером фоне с путем к окну.

Выключение OpenScada тоже происходит в несколько раз быстрее.

Пока что делаю вывод, что Qt 4.4.1 явный тормоз по сравнении с Qt 4.3.0, тем более об этом на prog.org.ru уже говорили, но я не думал что будет настолько заметно.

А версия OpenScada 0.6.0 у меня работала быстро как раз потому, что год назад у меня как раз стояла Qt 4.3.0. А сейчас, когда ставил OpenScada 0.6.3.1, стоит уже 4.4.1, поэтому OpenScada и стала тормозить.

Можно заносить в вики или еще куда, что Qt 4.4.1 нерекомендуется к использованию.



1395