Мы постоянно шаг за шагом оптимизируем всю MQL5 сеть:
периодически делаем ошибки и приходится откатываться назад
подобрали хороший синтетический тест для оценки PR
для генетики выбираем агентов с PR > 100 и работаем только с самым быстрым клауд сервером
уже добавили учет реально потребленной памяти каждой задачей и в следующих билдах будем выдавать задачи агентам, у которых гораздо больше памяти, чем нужно задаче
добавляем контроль количества ошибок, совершенных агентом
агенты очень жестко выбирают самый быстрый клауд сервер, чтобы уменьшить сетевые задержки
оптимизируем алгоритм перераздачи задач от медленных агентов
В ближайших билдах будут добавлены новые функции по передачу неограниченного количества рассчитанных данных(фреймов) с агентов. Это позволит делать расчетные фермы для любых областей деятельности.
Мы постоянно шаг за шагом оптимизируем всю MQL5 сеть:
периодически делаем ошибки и приходится откатываться назад
подобрали хороший синтетический тест для оценки PR
для генетики выбираем агентов с PR > 100 и работаем только с самым быстрым клауд сервером
уже добавили учет реально потребленной памяти каждой задачей и в следующих билдах будем выдавать задачи агентам, у которых гораздо больше памяти, чем нужно задаче
добавляем контроль количества ошибок, совершенных агентом
агенты очень жестко выбирают самый быстрый клауд сервер, чтобы уменьшить сетевые задержки
оптимизируем алгоритм перераздачи задач от медленных агентов
В ближайших билдах будут добавлены новые функции по передаче неограниченного количества рассчитанных данных(фреймов) с агентов. Это позволит делать расчетные фермы для любых областей деятельности.
Народ заждался, а то ведь не всякий результат укладывается в единственный дубль.
А почему бы не ввести доп. требование для агентов? PR минимум 50 (можно даже 70-100) и обеспечение минимум 500 метров памяти на одного агента? Я так понимаю, это сразу снимет некоторые вопросы.
...
Похоже, это не решит проблему...
По-моему, она порождена агрессивным потреблением памяти агентами (вероятно, в погоне за быстродействием).
В подтверждение этих слов приведу результат натурного эксперимента. Сразу оговорюсь, что пока он проводился только на локальном агенте, но есть большая вероятность того, что нечто подобное происходит с облачными агентами.
Итак, на скорую руку сделан простейший мультивалютный советник без индикаторов и без торговли, практически пустышка:
inputuint maxsym = 12; // число символов//------------------------------------------------------------------ OnInitintOnInit()
{
Print("maxsym=",maxsym);
Print("OnInit begins SymbolsTotal: ",SymbolsTotal(true),"/",SymbolsTotal(false));
// танцы с бубном для инициализации в тестереfor(uint i=0; i<maxsym; i++)
{
SymbolSelect(SymbolName(i,false),true);
MqlRates rh[60]; // Массив значений цен для 60-х последних баровMqlRates rm[60]; // Массив значений цен для 60-х последних баровif(CopyRates(SymbolName(i,false),PERIOD_H1,0,60,rh)!=60) // Копируем в массив значения цен 60-х последних баров
{ Print("OnInit: CopyRates ",SymbolName(i,false)," не загружена история"); return(WRONG_VALUE); }
if(CopyRates(SymbolName(i,false),PERIOD_M1,0,60,rm)!=60) // Копируем в массив значения цен 60-х последних баров
{ Print("OnInit: CopyRates ",SymbolName(i,false)," не загружена история"); return(WRONG_VALUE); }
}
for(uint i=0; i<maxsym; i++)
{
Print(i," ",SymbolName(i,true));
}
Print("OnInit ends SymbolsTotal: ",SymbolsTotal(true),"/",SymbolsTotal(false));
return(0);
}
//------------------------------------------------------------------ OnDeinitvoidOnDeinit(constint reason)
{
}
//------------------------------------------------------------------ OnTickvoidOnTick()
{
}
Единственный параметр - число используемых символов.
Все тесты производились при следующих условиях:
Нетбук на Intel Atom N270 @ 1.60GHz, 1014MB (максимальный зарегистрированный PR агентов в метрике билда 567 равен 25), Windows XP SP3 Home, естественно x32. В свойствах системы - дополнительно - быстродействие параметры - дополнительно - виртуальная память установлена в "РАЗМЕР ПО ВЫБОРУ СИСТЕМЫ" (чтобы не получать нехватку виртуальной памяти).
Тестовый счёт чемпионата 2011 на MetaQuotes-Demo, GPBUSD, M1, Обычный, Все тики, 10000 USD, 1:100, без визуализации, Медленная, Balance max, No
В качестве инструмента измерения использовался Диспетчер задач: органолептически фиксировались показания потребления памяти на вкладке "Процессы" сразу после окончания теста (по "свистку") и физическая память (доступно) на вкладке "Быстродействие". Перед каждым проходом MT5 перезапускался. Запуск теста производился при количестве свободной памяти около 500Мб.
Первая серия проходов - одинаковый период минимальный ( одни сутки), на каждом проходе добавляем в обработку по 1 инструменту (на указанном счёте доступно 12), значения в мегабайтах:
Число инструментов
Память
Пиковое использование памяти
Вирт.п.
Физическая память
(Память-использование)
(Память-максимум)
(Объём виртуальной памяти)
Доступно
1
59
103
68
-
2
108
148
118
-
3
158
193
169
339
4
205
238
219
290
5
253
283
269
236
6
303
328
320
186
7
356
377
375
117
8
405
422
425
69
9
453
468
475
59
9
454
468
476
73
10
502
513
526
35
11
2
539
576
64
12
2
526
630
75
Заметен практически линейный рост "Память-максимум" (названия столбцов как в XP, в W7 немного по-другому). Видно практически линейный рост с шагом около 45Мб при росте числа инструментов до 10 (упёрлись в размер свободной памяти).
Вторая серия проходов - фиксируем число инструментов на минимуме (один), увеличиваем период:
Период тестирования
Период тестирования
Память
Пиковое использование памяти
Вирт.п.
Физическая память
суток(выходные включены)
(Память-использование)
(Память-максимум)
(Объём виртуальной памяти)
Доступно
08.12.2011-09.12.2011
1
59
103
68
-
01.06.2011-09.12.2011
191
61
80
71
479
01.01.2011-09.12.2011
342
61
67
71
478
01.01.2010-09.12.2011
707
83
89
96
455
01.01.2009-09.12.2011
1072
102
108
114
437
01.01.2008-09.12.2011
1438
120
126
141
418
По столбцам "память" и "Вирт.п." видно практически одинаковые значения при периоде до года, далее рост примерно на 18Мб в год. Из проведённых ранее наблюдений за содержимым папки тестера "Bases" и журналами тестирования известно, что тестер берёт историю целыми годами, при этом всегда берётся не менее двух лет (т.е., по минимуму, года, попадающие в период тестирования + один предшествующий год).
Из полученных выше данных напрашивается следующий грубый расчёт минимальных требований к ОДНОМУ агенту по памяти (для x32 систем):
13-15Мб - сам тестер + (40Mб за минимальный период тестирования + 20 Мб за каждый дополнительный год тестирования) * число инструментов.
Облачный агент может быть несколько экономнее (за счёт объёма логов, которые, скорее всего, тоже размещаются в памяти), но в реальном советнике есть ещё собственные потребности в памяти данных и индикаторов.
Для x64 систем, вероятно, нужно ещё больше...
PS. Две строки 9 в первой таблице - не опечатка, а следствие постановочной ошибки в советнике. Параметр 0 соответствует одному инструменту, на одном из шагов при увеличении параметра на 1 число инструментов не меняется.
Хотелось бы узнать..Если оптимизации делать с терминала НЕ MQ, то какая история используется в облаках?Какие торговые условия? Брокера (пересылается агентам) или MQ ?
В облаке используется история того брокера, на котором открыт текущий счет в терминале. Вся история и рыночное окружение доставляются на каждого агента автоматически и прозрачно. Именно этой работой занимаются географически распределенные клауд срверы.
агенты очень жестко выбирают самый быстрый клауд сервер, чтобы уменьшить сетевые задержки
...
В квартире два роутера, два различных провайдера. Скорость первого 25/75 (день/ночь), второго - круглосуточно 8Mbit. Вопрос: влияет ли скорость/пинг провайдера на "сетевые задержки"? И как определить, с каким из провайдеров будут быстрее связываться/работать мои агенты?
WChas: В квартире два роутера, два различных провайдера. Скорость первого 25/75 (день/ночь), второго - круглосуточно 8Mbit. Вопрос: влияет ли скорость/пинг провайдера на "сетевые задержки"? И как определить, с каким из провайдеров будут быстрее связываться/работать мои агенты?
Агенты ежедневно перезамеряют скорость доступа на полном цикле авторизации к четырем клауд серверам и выбирают наиболее быстрый.
За счет этого сокращаются пути доставки данных до каждого агента, так как практически всю сетевую нагрузку несут на себе географически распределенные серверы в США, Европе и Азии. Задача и данные однократно доставляются на клауд сервер и уже сервер раздает задание и синхронизирует историю тысячам агентов. Кроме того, везде используются механизмы кеширования, что на порядки сокращает объем передаваемых данных.
Чтобы проверить, к какому серверу идет подключение, достаточно посмотреть логи агента:
PR 0 Startup 13:30:04 Startup thread finished successfully
LH 0 Network 13:32:04 connected to 1.agents.mql5.com
QI 0 Network 13:32:05 authorized on 1.agents.mql5.com
EN 0 Network 13:32:06 connected to 2.agents.mql5.com
GK 0 Network 13:32:06 authorized on 2.agents.mql5.com
HL 0 Network 13:32:06 connected to 3.agents.mql5.com
MD 0 Network 13:32:07 authorized on 3.agents.mql5.com
LQ 0 Network 13:32:07 connected to 4.agents.mql5.com
LF 0 Network 13:32:09 authorized on 4.agents.mql5.com
IG 0 Network 13:32:30 connected to 1.agents.mql5.com
DP 0 Network 13:32:31 authorized on 1.agents.mql5.com
QD 0 Network 13:32:31 connected to 2.agents.mql5.com
NM 0 Network 13:32:32 authorized on 2.agents.mql5.com
MJ 0 Network 13:32:32 connected to 3.agents.mql5.com
GO 0 Network 13:32:32 authorized on 3.agents.mql5.com
FH 0 Network 13:32:36 connected to 4.agents.mql5.com
PH 0 Network 13:32:36 authorized on 4.agents.mql5.com
CM 0 Network 13:32:58 connected to 1.agents.mql5.com
JJ 0 Network 13:32:59 authorized on 1.agents.mql5.com
KS 0 Network 13:32:59 connected to 2.agents.mql5.com
FD 0 Network 13:33:00 authorized on 2.agents.mql5.com
EQ 0 Network 13:33:00 connected to 3.agents.mql5.com
OQ 0 Network 13:33:00 authorized on 3.agents.mql5.com
QF 0 Network 13:33:01 connected to 4.agents.mql5.com
FS 0 Network 13:33:02 authorized on 4.agents.mql5.com
QH 0 Network 13:33:24MQL5 Cloud Network server 3.agents.mql5.com selected after rescan
EO 0 Network 13:33:24 connected to 3.agents.mql5.com
Видно, как происходит тройная оценка скорости подключения к каждому серверу с последующим выбором самого быстрого. Если выбранный сервер будет недоступен, то автоматически запустится процесс новых перевыборов.
Фактически сейчас каждый агент стабилизировался и работает только со своим близким сервером. Разница на уровне локальных провайдеров практически незаметна, так как наибольшее влияние оказывает скорость международных каналов.
Мы постоянно шаг за шагом оптимизируем всю MQL5 сеть:
Скорострельность сети постоянно повышается, так что это очень хорошее средство для расчетов. Для примера посмотрите на тему "Пример ускорения расчетов с применением MQL5 Cloud Network".
В ближайших билдах будут добавлены новые функции по передачу неограниченного количества рассчитанных данных(фреймов) с агентов. Это позволит делать расчетные фермы для любых областей деятельности.
Мы постоянно шаг за шагом оптимизируем всю MQL5 сеть:
Мы постоянно шаг за шагом оптимизируем всю MQL5 сеть:
Скорострельность сети постоянно повышается, так что это очень хорошее средство для расчетов. Для примера посмотрите на тему "Пример ускорения расчетов с применением MQL5 Cloud Network".
В ближайших билдах будут добавлены новые функции по передаче неограниченного количества рассчитанных данных(фреймов) с агентов. Это позволит делать расчетные фермы для любых областей деятельности.
В ветке часто встречались жалобы пользователей на работу "клаудных" агентов. У кого-то возвращались нулевые результаты, сейчас вот проблема с памятью.
Для того чтобы пользователи клауда спали спокойней предлагаю добавить в агентов режим отладки суть которого в том что при включенной галочке задачи
клаудных агентов дублируются на локальные. После окончания оптимизации выдаётся файл или таблица в которой показаны результаты проходов в клауде и
на локальном агенте. Это покажет действительно ли клауд глючит или проблема в эксперте.
А почему бы не ввести доп. требование для агентов? PR минимум 50 (можно даже 70-100) и обеспечение минимум 500 метров памяти на одного агента? Я так понимаю, это сразу снимет некоторые вопросы.
...
Похоже, это не решит проблему...
По-моему, она порождена агрессивным потреблением памяти агентами (вероятно, в погоне за быстродействием).
В подтверждение этих слов приведу результат натурного эксперимента. Сразу оговорюсь, что пока он проводился только на локальном агенте, но есть большая вероятность того, что нечто подобное происходит с облачными агентами.
Итак, на скорую руку сделан простейший мультивалютный советник без индикаторов и без торговли, практически пустышка:
Единственный параметр - число используемых символов.
Все тесты производились при следующих условиях:
Нетбук на Intel Atom N270 @ 1.60GHz, 1014MB (максимальный зарегистрированный PR агентов в метрике билда 567 равен 25), Windows XP SP3 Home, естественно x32. В свойствах системы - дополнительно - быстродействие параметры - дополнительно - виртуальная память установлена в "РАЗМЕР ПО ВЫБОРУ СИСТЕМЫ" (чтобы не получать нехватку виртуальной памяти).
Тестовый счёт чемпионата 2011 на MetaQuotes-Demo, GPBUSD, M1, Обычный, Все тики, 10000 USD, 1:100, без визуализации, Медленная, Balance max, No
В качестве инструмента измерения использовался Диспетчер задач: органолептически фиксировались показания потребления памяти на вкладке "Процессы" сразу после окончания теста (по "свистку") и физическая память (доступно) на вкладке "Быстродействие". Перед каждым проходом MT5 перезапускался. Запуск теста производился при количестве свободной памяти около 500Мб.
Первая серия проходов - одинаковый период минимальный ( одни сутки), на каждом проходе добавляем в обработку по 1 инструменту (на указанном счёте доступно 12), значения в мегабайтах:
Заметен практически линейный рост "Память-максимум" (названия столбцов как в XP, в W7 немного по-другому). Видно практически линейный рост с шагом около 45Мб при росте числа инструментов до 10 (упёрлись в размер свободной памяти).
Вторая серия проходов - фиксируем число инструментов на минимуме (один), увеличиваем период:
По столбцам "память" и "Вирт.п." видно практически одинаковые значения при периоде до года, далее рост примерно на 18Мб в год. Из проведённых ранее наблюдений за содержимым папки тестера "Bases" и журналами тестирования известно, что тестер берёт историю целыми годами, при этом всегда берётся не менее двух лет (т.е., по минимуму, года, попадающие в период тестирования + один предшествующий год).
Из полученных выше данных напрашивается следующий грубый расчёт минимальных требований к ОДНОМУ агенту по памяти (для x32 систем):
13-15Мб - сам тестер + (40Mб за минимальный период тестирования + 20 Мб за каждый дополнительный год тестирования) * число инструментов.
Облачный агент может быть несколько экономнее (за счёт объёма логов, которые, скорее всего, тоже размещаются в памяти), но в реальном советнике есть ещё собственные потребности в памяти данных и индикаторов.
Для x64 систем, вероятно, нужно ещё больше...
PS. Две строки 9 в первой таблице - не опечатка, а следствие постановочной ошибки в советнике. Параметр 0 соответствует одному инструменту, на одном из шагов при увеличении параметра на 1 число инструментов не меняется.
...
...
В квартире два роутера, два различных провайдера. Скорость первого 25/75 (день/ночь), второго - круглосуточно 8Mbit. Вопрос: влияет ли скорость/пинг провайдера на "сетевые задержки"? И как определить, с каким из провайдеров будут быстрее связываться/работать мои агенты?
Агенты ежедневно перезамеряют скорость доступа на полном цикле авторизации к четырем клауд серверам и выбирают наиболее быстрый.
За счет этого сокращаются пути доставки данных до каждого агента, так как практически всю сетевую нагрузку несут на себе географически распределенные серверы в США, Европе и Азии. Задача и данные однократно доставляются на клауд сервер и уже сервер раздает задание и синхронизирует историю тысячам агентов. Кроме того, везде используются механизмы кеширования, что на порядки сокращает объем передаваемых данных.
Чтобы проверить, к какому серверу идет подключение, достаточно посмотреть логи агента:
Видно, как происходит тройная оценка скорости подключения к каждому серверу с последующим выбором самого быстрого. Если выбранный сервер будет недоступен, то автоматически запустится процесс новых перевыборов.
Фактически сейчас каждый агент стабилизировался и работает только со своим близким сервером. Разница на уровне локальных провайдеров практически незаметна, так как наибольшее влияние оказывает скорость международных каналов.