Скачать MetaTrader 5

Балансировка нагрузки

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Debugger
2501
Debugger  

Всем доброго времени суток!
Хотел спросить, кто-нибудь занимался балансировкой нагрузки на процессоры из под терминала?

Заранее благодарен. 

Vadim Baklanov
4208
Vadim Baklanov  

Что имеется в виду?

Можно управлять использованием ядер процессора.

Debugger
2501
Debugger  

Это понятно если использовать свою dll. Но можно-ли это делать в MT4 если в dll ничего не скидывается.

Проблема в следующем. При загрузке "полного боекомплекта индикаторов" какое-то время терминал работает нормально. Загрузка ядер процессоров сбалансирована и приблизительно одинакова. Плоть до локальных пиковых нагрузок. Но в какой-то момент времени вся загрузка смещается на одно ядро. При этом загрузка ядра колеблется в пределах 98-100%, у других в пределах 0-3%. И все начинает жутко тормозить, и ОС тоже. Потом все возвращается в нормальное состояние. И так как на качелях, но с разными интервалам.

Как это прервать без понятия. 

Aleksandr Chugunov
4953
Aleksandr Chugunov  

А что смущает то? Загрузка одним процессом всё равно будет = 100 / КолВоЯдер

ОС сама распоряжается нагрузкой на каждое физическое/логическое ядро...

Производительность от этих качелей не страдает никак

Debugger
2501
Debugger  
В том-то все и дело что все подвисать начинает
Vadim Baklanov
4208
Vadim Baklanov  
Теперь понятно. Где-то обсуждалось. Индикатор и его вычисления работают в GUI потоке. Не распределяются по ядрам. Тяжелые вычисления нужно или оптимизировать, или выносить в другие потоки, работающие асинхронно. Средствами MQL можно вынести вычисления данных индикатора в советник, проблема только передать данные обратно в индикатор. Можно в советнике рисовать линии индикатора графическими линиями. Продвинутые программисты могут написать свою DLL.
Debugger
2501
Debugger  

Да у меня типа все уже есть... (и dll-и и COM-сервера и еще много чего)

Вот уперся в непонятные ограничения... :)) 

Понятно. Никто ничего не знает и конкретно сказать не может.

Благодарю всех, кто потратил время на чтение и ответы. Как говорил герой Никулина: "Будем искать..."

Тема закрыта. 

Diamant
337
Diamant  
Debugger:

Да у меня типа все уже есть...

Вот уперся в непонятные ограничения... :))

Терминал вообще не паралелит вычисления никак (инфа непосредственно от MQ). Только своя DLL спасет.
Debugger
2501
Debugger  

Программисты ау.... из Метаквот...

подскажите как можно решить вышеозначенную проблему.  

Это один из вариантов. Но при этом все жестко висит...

 

 

Vadim Baklanov
4208
Vadim Baklanov  

Подключи второй терминал к тому же счету.

Гы, с такими запросами давно пора шестиядерку покупать или многопроцессор.

Андрей
1890
Андрей  

Дык это... в чем проблема-то? Грузится DLL. И сразу грузится еще раз ;-). HMODULE -> string -> LoadLibrary. 

Внутри нее создаются именованные инстансы "приложения" (CApplication), каждое приложение создает свой поток.

Снаружи торчит интерфейс для помещения в очередь заданий и считывания результатов. 

+ приложение при создании запоминает хэндл окна, в котором "столуется" индикатор и может

в любой момент это окно дернуть, чтобы оно засосало результаты обработки, если они готовы. 

Я так уже давно делаю ;-). 

12345
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий