Почему версия 6.3.1 так медленно работает?
Author |
Message |
Written on: 23. 02. 2009 [13:48]
|
xintrea
Sergey Stepanov
Topic creator
registered since: 23.02.2009
Posts: 7
|
Здравствуйте!
Примерно год назад приглядывался к OpenScada, смотрел версию 0.6. Потенциал оценил, но для внедрения побоялся использовать. Демопример там был скудный немного, не впечатлящий, в новой версии 0.6.3.1 все гораздо серъезнее выглядит. Сейчас снова начались движения в сторону внедрения, попросили меня сделать презентацию, показать что работает, как.
Скачал я 6.3.1.0, собрал, и хотел было уже начать делать презентацию, но натнулся на проблему - интерфейс работает очень медленно. Обычные действия "развернуть ветку в конфигураторе", переткнуться на соседню вкладку" выполняются 3-4 секунды. Это до того медленно, что непонятно вообще, как можно работать. При этом, сразу после запуска демопримера, проц занят на 90-100%, даже если никаких действий не производить.
Скриншот
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.
Что делать? Как решить проблему?
[This article was edited 3 times, at last 23.02.2009 at 13:59.]
|
Written on: 23. 02. 2009 [14:58]
|
roman
Roman Savochenko
Moderator Contributor Developer
registered since: 12.12.2007
Posts: 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.
|
Written on: 23. 02. 2009 [22:02]
|
xintrea
Sergey Stepanov
Topic creator
registered since: 23.02.2009
Posts: 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/38/e4/4024035025f10f745a2396d6940a.png
Сортировка по использованной памяти (Shift+M) (занятость проца 100%)
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.
|
Written on: 23. 02. 2009 [23:08]
|
roman
Roman Savochenko
Moderator Contributor Developer
registered since: 12.12.2007
Posts: 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. Похоже это модель. Ранее в ней было всего два компрессора.
Learn, learn and learn better than work, work and work.
|
Written on: 23. 02. 2009 [23:55]
|
xintrea
Sergey Stepanov
Topic creator
registered since: 23.02.2009
Posts: 7
|
Поотключал все контроллеры физмодели, занятость проца упала до тех же самых 2-5%.
Отзывчивость интерфейса немного улучшилась, но не настолько, чтобы комфортно можно было работать. То есть раньше ветка открывалась 3-4 сек, стало 1-2 сек, иногда дольше. Уже начинаю грешить на Qt 4.4.1, попробовать чтоли на 4.3.0 пересобрать...
Вопрос такой. Если при конфигурации исходников указать параметр
--with-qt4-dir=...
то потом при запуске будут использоваться именно либы из указанной директории? Или данный флаг влияет только на сборку, а при запуске будут использоваться Qt либы, которые будут найдены в системе обычным способом?
|
Written on: 24. 02. 2009 [09:24]
|
roman
Roman Savochenko
Moderator Contributor Developer
registered since: 12.12.2007
Posts: 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.
|
Written on: 24. 02. 2009 [18:22]
|
xintrea
Sergey Stepanov
Topic creator
registered since: 23.02.2009
Posts: 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) ?
[This article was edited 1 times, at last 24.02.2009 at 18:23.]
|
Written on: 25. 02. 2009 [10:29]
|
roman
Roman Savochenko
Moderator Contributor Developer
registered since: 12.12.2007
Posts: 3750
|
xintrea wrote:
Видимо, чтоб собрать с какой-то конкретной версией Qt, опции --with-qt4-dir недостаточно.
-with-qt4-dir не предназначена для сборки с другой, не системной библиотекой QT. Она предназначена для решения проблем с размещением системной QT4 в различных дистрибутивах.
Learn, learn and learn better than work, work and work.
|
Written on: 25. 02. 2009 [16:03]
|
xintrea
Sergey Stepanov
Topic creator
registered since: 23.02.2009
Posts: 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 нерекомендуется к использованию.
|
|
|