Супермодный компьютер - 256 GB RAM - А скорость тестируется все-равно медленно

 

Здравствуйте. Подскажите, пожалуйста, от чего зависит скорость тестирования роботов в тостере стратегий? Платформа MT5. Робот мультивалютный на 500 акций. Брокер Just2Trade, демо-счет.
Заранее благодарю!

На ноуте стоит 16 GB оперативки, скорость тестирования примерно 5 минут.
Приобрели VPS на 256 GB оперативки. Скорость тестирования стала чуть ли не меньше - около 7 минут.

При тестировании, машина загружается не более 5%. То есть МТ использует не весь потенциал системы для работы под нагрузкой.

Как такое возможно, что при мощности машины в 10 раз, скорость тестирования осталась прежней? От вообще чего зависит скорость тестирования в тестере? 
Согласен, что робот тоже необходимо оптимизировать, он сложный, торгующий около 500 акций одновременно. Но ожидалось, что более мощная машина вытянет такую нагрузку...


 
насколько я знаю, при тестировании одно ядро процессора только работает.
 
multiplicator:
насколько я знаю, при тестировании одно ядро процессора только работает.

Чем больше ядер тем быстрее работает. Тут очень много зависит от кода советника.

 
это надо на впс создать агентов на все свободные ядра - чем больше ядер - тем больше агентов или просто покупать (агентов) вычислительные мощности из облака напрямую у метаквот
 
Oleg Mamchenko:

Чем больше ядер тем быстрее работает. Тут очень много зависит от кода советника.

Не путайте тестирование и оптимизацию. При оптимизации можно задействовать все ядра, при обычном линейном тестировании - одно. Это, если не использовать распараллеливание через OpenCL конечно.

 

Проверьте настройки Metatrader/Metatester должны быть включены все агенты на вашем проце 12шт. (чтобы проц не нагружать на 100% можно врубить только 6-8), а у вас в процессах только 1. 

Основная производительность за счет процессора, на все 12 потоков RAM достаточный 24 gb. у меня 32 потока кушают не более 20gb. иногда ssd nvme на полную загружает на пару минут, тогда система чуток тормозит

 
Oleg Mamchenko:

Чем больше ядер тем быстрее работает. Тут очень много зависит от кода советника.

в коде советника нельзя сделать ничего что бы заставило его использовать больше или меньше ресурсов, просто нет таких инструментов.
оптимальней написать код - пожалуйста. Но на задействованные ресурсы это не повлияет, просто оптимизация пройдет быстрей. 

Roman Starinskij:

Здравствуйте. Подскажите, пожалуйста, от чего зависит скорость тестирования роботов в тостере стратегий? 

От мощности одного ядра если прямое тестирование. При оптимизации от мощности ядер.
При этом при оптимизации в мт4 (про мт5 не знаю) в использовании до 25% процессора. Как отключить незнаю, я просто запускал 3 оптимизации одновременно, друг другу не мешали ) 
А вот оперативная память для оптимизации не нужна вовсе. Даже 4 гига за глаза хватает, что вы и видите на своих тестах.
там просто нечему забивать оперативную память. 

 
Roman Starinskij:

Здравствуйте. Подскажите, пожалуйста, от чего зависит скорость тестирования роботов в тостере стратегий? Платформа MT5. Робот мультивалютный на 500 акций. Брокер Just2Trade, демо-счет.
Заранее благодарю!

На ноуте стоит 16 GB оперативки, скорость тестирования примерно 5 минут.
Приобрели VPS на 256 GB оперативки. Скорость тестирования стала чуть ли не меньше - около 7 минут.

При тестировании, машина загружается не более 5%. То есть МТ использует не весь потенциал системы для работы под нагрузкой.

Как такое возможно, что при мощности машины в 10 раз, скорость тестирования осталась прежней? От вообще чего зависит скорость тестирования в тестере? 
Согласен, что робот тоже необходимо оптимизировать, он сложный, торгующий около 500 акций одновременно. Но ожидалось, что более мощная машина вытянет такую нагрузку...


Я когда арендовал сервер, на нем скорость тестирования была выше, чем на десктопном. Насколько я понял, решающее значение играет пропускная способность памяти и размер кеша. Причем частота процессора была 2,7 ггц. Я тесты параллелил просто. Запускал параллельно 11 терминалов по 1 году каждый (процессор был 10 ядерный, 20 потоков) и так тестировал сразу 11 лет. Но у меня всего 28 инструментов. Если тестируется 1 терминал, то скорость была выше ,чем на десктопе, после добавления каждого нового терминала, скорость падала чуть-чуть. Видимо сказывается узкое место в системе памяти. Дело не в количестве оперативы. У меня 1 терминал потребляет 6 гигов, поэтому арендовал 64 гига оперативы.

 
Maxim Romanov:

... решающее значение играет пропускная способность памяти и размер кеша.

Подтверждаю. Ещё во времена DDR3 заметил, что есть заметная разница между частотоы памяти 1600 и 1866. Тогда же имел возможность тестировать на разных процессорах, на счёт кеша - тоже верно, но частота памяти имела решающее значение, по крайней мере, сложилось такое впечатление на практике.

 
Nikolay Khrushchev:

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

Ну почему же, можно организовать дополнительное кэширование данных, если логика программы позволяет это.  Либо обеспечить более быстрый доступ к хранимым данным.

Например, нам требуется получать значение цены в зависимости от значения времени, причём время идёт с точностью до секунды.  Тогда берём и просто объявляем массив

double prices[INT_MAX];

и заполняем его значениями для каждой секунды.   Получаем максимально возможную скорость доступа (без всяких хэш-таблиц и тем более бинарного поиска).   Да, это конечно будет нам стоить 16 GB памяти, но если этой памяти хоть *опой жуй, то почему бы и нет )

 

Всем большое спасибо за ответы. Постараюсь описать попытки оптимизировать работу тестов. :)

Код советника будет оптимизироваться, позже, когда весь фукнционал будет дописан. Поэтому пока и приобрели супер-мощнецкий комп для тестов этого монстра ))

Благодарю FXEU за подсказку поиграться с агентами тестирования. Добавил все возможные 12 агентов. Но в списке Тестера из всех агентов можно выбрать только 1 агент. Хотя он один стоит на все возможные 256 GB и стоит.  

Но по прежнему при тестах система нагружается не более чем на 5%. Ладно робот "тяжелый", но пусть и грузит систему на 100%, не жалко :)