Причины тормозов при старте. Вскрытие покажет.

Страницы: 1
RSS
Причины тормозов при старте. Вскрытие покажет.
 
Всем,добрый день,
Предлагаю обсудить проблему тормозов при старте терминала.
-------------------
До последней прошедшей недели пользовался версией 8.7
Неоднократно пытался установить более свежую версию, но всегда получал тормоза и возвращался к 8.7
-------------------
На прошедшей неделе Сбербанк перешел на единый счет и мне пришлось устанавливать версии 12
так как исчезли параметры по фьючерсам.
-----------------------
Сначала установил версию 12.6 которая выложена у Сбербанка.
Получил увеличение объема занятой памяти терминалом в 2 раза с 600 Мбайт до 1200Мбайт и жуткие тормоза
--------------------------
По совету разработчиков установил новую версию 12.8.4
Объем занимаемой памяти при старте сократился с 1200 до 900.
Почему он изменяется ?
-----------------------------
Самое странное, что во время торгов объем занимаемой памяти постепенно уменьшается.
Если никаких действий не совершать , то объем занимаемой памяти сокращается до 50Мбайт.
Но если начать что-то делать, то он снова увеличивается, но не более 700, а иногда и не более 350Mбайт.
--------------------
Трудно что-либо придумать почему так происходит.
--------------------------
Но так как максимальный объем всегда получается при старте и это приводит к очень длительной загрузки, то
давайте обсудим возможные причины этого.
----------------------------
Время старта можно разделить на три этапа.
Первый - запуск терминал.
Второй -ввод пароля
Третий- ввод кода со смартфона.
-------------------
самый короткий интервал - второй. Задержки при нем пока не будем рассматривать.
-----------------
Сначала я предположил, как и многие на форуме, что проблема медленной загрузки  в длительном получении начальной информации с сервера брокера.
Но теперь у меня другая рабочая гипотеза.
=================
Основа ее в том, что время первого и третьего этапов одинаковое.
Характерно , первый и третий этапы имеют одинаковое значение времени исполнения  -в моем случае это по 4 минуты каждый.
Но в первом этапе нет никакой связи с сервером.
Получается, что соединение с сервером не влияет ни на объем занимаемой памяти ни на время старта.
=================
Поэтому я считаю, что указанные проблемы (время старта и объем занимаемой памяти )
связаны исключительно  с вычислениями, которые совершает терминал при старте.
=====================
Более того, эта гипотеза подтверждается тем, что в третьем этапе терминал сначала уменьшает объем занятой памяти
до 350 Мбайт. А потом медленно начинает увеличивать его до тех же 900 Мбайт что и в первом этапе.
=====================
Как правило время и занятая память у всех пользователей разные.
Это связано с конкретной настройкой интерфейса. Т е числом окон с графиками, числом таблиц и стаканов и числом скриптов на Lua.
=====================
Полагаю, что максимальный объем памяти в момент старта возникает по причине, возможно не единственной, но одной из основных,
РАСЧЕТА ИНДИКАТОРОВ НА LUA.
========================
Известно, что индикаторы на луа вычисляются  несколько раз при открытии графика.
----------------------------------------
В результате такого расчета возникает куча мусора от этих расчетов, так как сборщик мусора при старте не работает.
------------------------
В начале третьего этапе терминал удаляет все расчеты первого этапа и память сокращается.
-------------------------
Так как у меня установлена подписка вручную, то ничего нового при соединении с сервером не приходит.
---------------------------------
Терминал снова начинает свой расчет индикаторов и графиков и это увеличивает объем памяти до максимума для всей сессии.
-------------------------
Но это еще не все.
Длительный расчет индикаторов и графиков при старте связан с тем, что хотя все свечи от первой до последней имеются в начале расчета,
Расчет индикаторов, а возможно и построение графиков выполняется для каждой свечи отдельно в цикле Calculate.
Так как большинство индикаторов - это интегральная обработка данных в окне,
то при 3000 свечах (это то что сохраняет сервер) для каждого индикатора
в цикле при старте вычисления в скользящем окне выполняются 3000 и более раз.
Если история сохраняется на ПК, то со временем тормоза и объем занимаемой памяти растет.
--------------------------------
Предположу, что это тупиковый момент в развитии QUIK и он требует кардинальных изменений.
---------------------------
Еще заметил, что число подписанных инструментов не влияет на объем и время при старте.
------------------------
Резюме:
На объем и время при старте  влияет повторный расчет индикаторов на Lua,
циклический расчет индикаторов (возможно и графиков) для каждой свечи при старте
и размер сохраненной истории, по которым считаются эти индикаторы.
----------------------------
Тот факт, что объем памяти при старте версии 12.6 на 300 Мбайт больше, чем при старте версии 12.8 говорит о том,
что, как говорил сатирик "что-то не так в консерватории"
-------------------------
Возможно, решением было бы исключение повторных расчетов индикаторов и принудительный запуск сборщика мусора при завершении третьего этапа.
-------------------------
Исследования продолжаются....
=========================
P.S. В настоящее время кувыркаюсь с единим счетом. Постоянно исчезают позиции по фьючерсам.
Кроме того, как уже писал на форуме,но без ответа, сваливание в кучу информации об акциях и фьючерсах имеет не только систематические ошибки, но и противоречит ФЗ "О рынке ЦБ"
Но это уже другая история  
 
После указанное выше рабочей гипотезы, я добавил в индикаторы сборщик мусора в начале расчета.
-------------------------
Не берусь утверждать, является ли это причиной,
но сегодня при старте  объем занятой памяти составил 875 Мбайт,
а время третьего этапа составило 2 минуты.
--------------------
Так как это лишь единственный эксперимент, то исследования продолжаются.
 
Цитата
nikolz написал:
На объем и время при старте  влияет повторный расчет индикаторов на Lua,
 циклический расчет индикаторов (возможно и графиков) для каждой свечи при старте
  и размер сохраненной истории, по которым считаются эти индикаторы.
Но как вы догадались, Холмс?  :lol:
Расчёт индикатора при старте не должен сильно отличаться от расчёта при его добавлении на график. При добавлении даже три раза пересчитывается, а при старте терминала - "только" два раза.
Но если в индикаторе используется getCandlesByIndex, то есть свои нюансы в расчётах.
Чтобы оценить влияние Lua-индикаторов, можно переименовать папку LuaIndicators, и сравнить время загрузки с индикаторами и без.
 
Цитата
Йцукен написал:
Цитата
nikolz написал:
На объем и время при старте  влияет повторный расчет индикаторов на Lua,
 циклический расчет индикаторов (возможно и графиков) для каждой свечи при старте
  и размер сохраненной истории, по которым считаются эти индикаторы.
Но как вы догадались, Холмс?  
Расчёт индикатора при старте не должен сильно отличаться от расчёта при его добавлении на график. При добавлении даже три раза пересчитывается, а при старте терминала - "только" два раза.
Но если в индикаторе используется getCandlesByIndex, то есть свои нюансы в расчётах.
Чтобы оценить влияние Lua-индикаторов, можно переименовать папку LuaIndicators, и сравнить время загрузки с индикаторами и без.
Приведите доказательства, Ватсон.
 
nikolz, доказательства чего?
 
nikolz, соединение с сервером, в действительности, не может влиять ни на объем используемой памяти, ни на время запуска терминала.
Однако и расчет индикаторов тоже не оказывает внушительного влияния на нагрузку.
В присланном Вами терминале, в котором мы подтверждаем длительный его запуск, какие-либо Lua скрипты отсутствуют, а если с диаграмм убрать все индикаторы и оставить только графики цены и объема, то нагрузка на терминал существенно не изменится.

Поэтому, причиной описанной Вами работы терминала является неправильная работа нескольких графиков с разными временными интервалами, что в действительности было диагностировано как ошибка в ПО QUIK. И, таким образом, кардинальных изменений система QUIK не требует.
Предлагаем временно использовать версию терминала, на которой проблемы не наблюдаются, мы уведомим Вас об исправлении ошибок.
 
Pivaev Maxim,
Нашел причины всех этих проблем,
в числе которых и указанные выше.
Отчет об исследованиях напишу позже,  
 
Как и обещал,  рассказываю в чем причина медленной загрузки и большого объема занимаемой памяти.
---------------------------------
Рассматриваю лишь первый этап старта терминала, когда нет связи с сервером.
------------------------------------
Вам интересно узнать почему загрузка длится 4 минуты (240 секунд)?
==================
Все оказалась очень просто.
В QUIK есть ошибка.
Она связана с тем, что на одном графике нельзя совмещать различные инструменты.
-------------------
Хочу обратить внимание на то, что разработчики неправильно указали ошибку - считая что она связана с наличием диаграмм графиков с различными интервалами.
---------------------------------
Вот доказательства;
У меня есть три диаграммы с графиками сбербанка 1 минута, 30 минут и 1 день.
На диаграмме 1 минута  ВНИМАНИЕ!!!
совмещены графики SBER и SBERF
--------------------------
Вот терминал с исходными диаграммами:

и он загружается 240 секунд
-------------------------------------------------
а это терминал на котором отсутствует график SBERF на 1 минутой диаграмме
Я удалил файл его истории из архива


и он загружается 40 секунд
================================
Продолжение следует...
 
Как следует с вышеприведенного эксперимента , основной причиной медленного старта терминала
является размещение на графике двух разных инструментов.
Если один любой из инструментов убрать с этого графика то время первого этапа старта сокращается с 240 секунд ло 40 секунд.
------------------------------
Следующий эксперимент показывает как влияет на время загрузки наличие индикаторов и открытых окон.
---------------------------
Если в моем варианте QUIK  убрать окно с интервалом 1 минута (это самое большое окно на графике),
время первого этапа старта сокращается до 10-15 секунд.
--------------------------
Если убрать оставшиеся два окна с графиками,  то время первого этапа сокращается до 6-10 секунд.
-----------------------
Далее я расскажу как сокращать объем занимаемой памяти при старте а также напишу свои предположения о причинах таких тормозов
--------------------
Продолжение следует..
Страницы: 1
Читают тему
Наверх