can we allow testing agent in local farm to make use of additional threads?

 

can we allow testing agent in local farm to make use of additional threads?

understand that the reason to allow only 1 tester agent per core is due to memory error when someone selling the testing services.

I'm setting up local tester farm and most of the time it only use up to 50+% of the CPU and RAM due to it doesn't actually allow us to create agent more than the number of physical cores

 

anyone have other solution on this? my network farm only utilize about half of CPU and RAM while the main pc running MT5 is at close to 100% with single tester per thread instead of physical core.

 
dreamsky2007:

can we allow testing agent in local farm to make use of additional threads?

understand that the reason to allow only 1 tester agent per core is due to memory error when someone selling the testing services.

I'm setting up local tester farm and most of the time it only use up to 50+% of the CPU and RAM due to it doesn't actually allow us to create agent more than the number of physical cores

While I don't like the heavy handed approach of preventing users from forming threads... Oftentimes MQL5 will perform worse running with hyperthreading than without it (and it is usually on par or slightly better). The reason being that MQL5 is really good at fully loading cores, so while taskmanager shows that your hyperthreading cores are under or not utilized, this is not a very accurate reflection of the actual goings on.

Part of this has to do with what hyperthreading was designed for. It was designed for providing a core's scheduler the ability to plot things in parallel for each core... which is great when a process if underutilizing the core, but if it nearly completely fills a core it will decrease the overall performance because the scheduler then has to try and force feed the core more than it can handle, which sends more information to memory as the tasks overflow. That creates extra work for the processor to negotiate and store the pending tasks. 

TLDR: hyperthreading usually isn't worth it in MQL5, especially for ram intensive tasks.

 
xxtankmasterx #:

While I don't like the heavy handed approach of preventing users from forming threads... Oftentimes MQL5 will perform worse running with hyperthreading than without it (and it is usually on par or slightly better). The reason being that MQL5 is really good at fully loading cores, so while taskmanager shows that your hyperthreading cores are under or not utilized, this is not a very accurate reflection of the actual goings on.

Part of this has to do with what hyperthreading was designed for. It was designed for providing a core's scheduler the ability to plot things in parallel for each core... which is great when a process if underutilizing the core, but if it nearly completely fills a core it will decrease the overall performance because the scheduler then has to try and force feed the core more than it can handle, which sends more information to memory as the tasks overflow. That creates extra work for the processor to negotiate and store the pending tasks. 

TLDR: hyperthreading usually isn't worth it in MQL5, especially for ram intensive tasks.

i'm now using the pc with the most core as main machine and surprisingly it is way faster now.

it might be decrease slightly but it seems to depend on amount of RAM available. I dont understand why they allow main terminal to use thread but not the tester agent.

does anyone have a way to enable it? or otherwise i'm only able to utilize most threads for the pc with most cores.

 
dreamsky2007 #:

i'm now using the pc with the most core as main machine and surprisingly it is way faster now.

it might be decrease slightly but it seems to depend on amount of RAM available. I dont understand why they allow main terminal to use thread but not the tester agent.

does anyone have a way to enable it? or otherwise i'm only able to utilize most threads for the pc with most cores.

WORKAROUND FOUND:
2 separate MT5 installations on one machine to be used for a local network farm. Will use 2x as much disk space and may take longer to sync tick data but it seems to work. I don't see why it wouldn't work for selling too.

Security, memory requirements and efficiency issues acknowledged but I'd still like to have the option to utilize my HT without using that workaround. Please consider unblocking extra threads, especially considering recent advances in HT: 
https://www.anandtech.com/show/16261/investigating-performance-of-multithreading-on-zen-3-and-amd-ryzen-5000  (some new computers may actually get 25% faster with HT. )

EDIT: I'm sure it will be better to have the two separate installations actually be on different SSD (or otherwise fast drives.) 
Investigating Performance of Multi-Threading on Zen 3 and AMD Ryzen 5000
Investigating Performance of Multi-Threading on Zen 3 and AMD Ryzen 5000
  • Dr. Ian Cutress
  • www.anandtech.com
Intel Cans Xe-HP Server GPU Products, Shifts Focus To Xe-HPC and Xe-HPG
 
You can manually register the seevices in windows. This will enable you as much services as you want.

They will not be available for sale, but you can utilize all your cores or HT cores.

I suggest leaving a few out so your OS still have some capacity for itself. Else you'll be stuck with an very unresponsive OS.

Google how to register a service. There is plenty of doc out there.

In fact, it is true, HT cores do not provide the computational power a real core does and HT does impact on the physical cores availability.

So I do understand why this limitation is implied.

As a buyer of CPU power, I would want to have real power bought and not pay for "virtual" CPU power. Same goes for virtual machines.


Reason: