Performance issue  [SOLVED]

Questions about MultiCharts and user contributed studies.
tcat
Posts: 175
Joined: 02 Feb 2008
Location: Lausanne, Switzerland
Has thanked: 9 times
Been thanked: 5 times

Performance issue

Postby tcat » 10 Apr 2013

Hello,

I am facing a real annoying performance issue with the latest release and my current setup. Multichart time is not always updating by the second, I frequently get 5s jump between time display. When checking with process explorer, system internals appear far from saturation.

The environment is a 64bits virtual machine, CPU runs at about 30%, committed memory is at less than 4 Gb (out of 16Gb currently allocated). The performance issue appears to be strictly MC specific. I went from running a full FX scanner with 5 workspace to running a single worspace with 5 data feeds, 3 charts and a few indicators but the issue is still there.

How can I identify the root cause of this performance issue?

Thierry

User avatar
Henry MultiСharts
Posts: 9165
Joined: 25 Aug 2011
Has thanked: 1264 times
Been thanked: 2957 times

Re: Performance issue

Postby Henry MultiСharts » 10 Apr 2013

Hello Thierry,

In process explorer please go to View->System information->CPU->enable the option "Show one graph". Create a screenshot of this window when you have MultiCharts performance issue.
Then double click on MultiCharts.exe process->Performance graph. Create a screenshot of this window.
Attach these screenshots for further analysis.

What is the current load of your physical PC-do you have enough resources to allocate them for your virtual machine? What if you run only VM on your physical PC (no other running/background apps) and only MultiCharts in your VM-do you still have any performance issues?
Have you tried to run MultiCharts on a physical PC, not a VM?

The most efficient way of analyzing such case is remote connection. If you want to speed up the analysis process - please come to our live chat Monday-Friday 6:30 am - 4 pm EST to demonstrate the issue remotely and we will collect all required for analysis information.

tcat
Posts: 175
Joined: 02 Feb 2008
Location: Lausanne, Switzerland
Has thanked: 9 times
Been thanked: 5 times

Re: Performance issue

Postby tcat » 10 Apr 2013

Hello Henry,
Attachments
PerfCapture.PNG
CPU usage
(49.49 KiB) Downloaded 1133 times

User avatar
Henry MultiСharts
Posts: 9165
Joined: 25 Aug 2011
Has thanked: 1264 times
Been thanked: 2957 times

Re: Performance issue

Postby Henry MultiСharts » 10 Apr 2013

Then double click on MultiCharts.exe process->Performance graph. Create a screenshot of this window.
Please attach this screenshot as was requested and reply to my questions.

tcat
Posts: 175
Joined: 02 Feb 2008
Location: Lausanne, Switzerland
Has thanked: 9 times
Been thanked: 5 times

Re: Performance issue

Postby tcat » 10 Apr 2013

CPUCaptureII.PNG
Virtual and Phyiscal CPU states
(81.25 KiB) Downloaded 1137 times
Hello Henry,

Sorry for the first answer, there was a mismatch while attaching the first snapshot and working on the text (while doing a number of tests at the same time). So to answer your questions:

1) The physical PC is a 6 CPUs intel 3930k with 64 Gb or Ram. CPU usage is low.

2) I have been running MC on a virtual machine for over a year with success. This simplifies maintenance and recovery in case of issues. It also facilitates the process of migrating the environment on a new physical hardware.

3) I have not been running MC directly on a physical machine for over a year, following a physical issue which made me lose all my workspaces. I own 3 MC licenses and have been using MC or previously MCFX for the last 6 years.

I have started to review the changes I brought to my indicators in order to see how they could have contributed to this performance degradation and have identify the following:

4) I recently started to use indicators which mix volume and price informations, with volume being tick-based. I definitely think the resulting calculations are the reasons for those lags, as those delay appear to be more important during market hours, especially when the number of tick update is important. Unfortunately, this impact is not seen on the CPU usage, which makes me wonder...why?

5) I started drawing a number of arrows and trendlines on those tick graphs, in order to better visualize opportunities. It appears that when de-activating those arrows in my indicators, the time gap was reduced by half during market hours(2 seconds instead of up to 5 seconds).

I will see how things evolve and will get in touch with the support. Reason for me opening a topic was also to hear about issues encountered by other MC users...if anyone feel like sharing.

Thanks for the prompt follow-up Henry.

Regards,
Thierry

User avatar
Henry MultiСharts
Posts: 9165
Joined: 25 Aug 2011
Has thanked: 1264 times
Been thanked: 2957 times

Re: Performance issue

Postby Henry MultiСharts » 10 Apr 2013

Thierry, please double click on MultiCharts.exe process in process explorer->go to Performance graph. Create a screenshot of this window and attach it.

Does performance go back to normal if you turn off all your indicators?
In your indicators do you plot new drawings without deleting the old ones?

tcat
Posts: 175
Joined: 02 Feb 2008
Location: Lausanne, Switzerland
Has thanked: 9 times
Been thanked: 5 times

Re: Performance issue

Postby tcat » 10 Apr 2013

MC_Perf_Graph.PNG
(42.02 KiB) Downloaded 1136 times
Yes, performance went back to normal when all indicators were turned off.

Yes, my indicators keep plotting new arrows or daily lines, with the exception of one which updates itself.

I have attached the requested snapshot.

User avatar
Henry MultiСharts
Posts: 9165
Joined: 25 Aug 2011
Has thanked: 1264 times
Been thanked: 2957 times

Re: Performance issue

Postby Henry MultiСharts » 10 Apr 2013

This is "Performance" tab, not "Performance graph" tab.

Do you need all the drawings? Excessive amount of drawings affects performance. It is recommended to delete/replace the drawings that you do not need to keep the performance good.

tcat
Posts: 175
Joined: 02 Feb 2008
Location: Lausanne, Switzerland
Has thanked: 9 times
Been thanked: 5 times

Re: Performance issue

Postby tcat » 10 Apr 2013

Sorry, here is the perf graph.

Regarding the drawings, I have been keeping the arrow drawings to assess potential benefits of my indicators. I have since added an option to deactivate those drawings. However, keeping only a limited number of arrows active at one time will require me to complexify the code.
Attachments
PerfGraph.PNG
Performance graph
(34.42 KiB) Downloaded 1132 times
Last edited by tcat on 10 Apr 2013, edited 1 time in total.

User avatar
TJ
Posts: 7740
Joined: 29 Aug 2006
Location: Global Citizen
Has thanked: 1033 times
Been thanked: 2221 times

Re: Performance issue

Postby TJ » 10 Apr 2013

MC_Perf_Graph.PNG
Yes, performance went back to normal when all indicators were turned off.

Yes, my indicators keep plotting new arrows or daily lines, with the exception of one which updates itself.

I have attached the requested snapshot.
The most likely problem is due to an error in your code; instead of drawing one arw (or line), the faulty logic goes into a loop and forces MultiCharts to repeat the drawing every tick. Please post your code and we can debug it for you. It is a simple fix.

tcat
Posts: 175
Joined: 02 Feb 2008
Location: Lausanne, Switzerland
Has thanked: 9 times
Been thanked: 5 times

Re: Performance issue

Postby tcat » 10 Apr 2013

I am using the "Arw_New_self_s" for each new arrow, the benefit of it being that I can then visualize each entry and visually assess its potential. The code for the arrow is as follow:

if ViewArrow and not SqueezeDown[1] and (h < h[1])then begin
Value1 = Arw_New_self_s(Date, Time_s, var1[1], True);
Value1 = Arw_SetSize(Arw_GetActive, ArrowSize);
Value1 = Arw_SetColor(Arw_GetActive, red);
end;

User avatar
TJ
Posts: 7740
Joined: 29 Aug 2006
Location: Global Citizen
Has thanked: 1033 times
Been thanked: 2221 times

Re: Performance issue

Postby TJ » 10 Apr 2013

I am using the "Arw_New_self_s" for each new arrow, the benefit of it being that I can then visualize each entry and visually assess its potential. The code for the arrow is as follow:

if ViewArrow and not SqueezeDown[1] and (h < h[1])then begin
Value1 = Arw_New_self_s(Date, Time_s, var1[1], True);
Value1 = Arw_SetSize(Arw_GetActive, ArrowSize);
Value1 = Arw_SetColor(Arw_GetActive, red);
end;
I am not sure if the problem is from this snippet,
although I can already see the code is a bit unconventional.

is there any reason you want to use Arw_GetActive?

I do not understand what do you mean by
I am using the "Arw_New_self_s" for each new arrow, the benefit of it...
Can you explain what do you want to achieve on the chart?



ps. How to Post Codes with Code Tag
viewtopic.php?f=16&t=11713

User avatar
TJ
Posts: 7740
Joined: 29 Aug 2006
Location: Global Citizen
Has thanked: 1033 times
Been thanked: 2221 times

Re: Performance issue

Postby TJ » 10 Apr 2013

I am using the "Arw_New_self_s" for each new arrow, the benefit of it being that I can then visualize each entry and visually assess its potential. The code for the arrow is as follow:

if ViewArrow and not SqueezeDown[1] and (h < h[1])then begin
Value1 = Arw_New_self_s(Date, Time_s, var1[1], True);
Value1 = Arw_SetSize(Arw_GetActive, ArrowSize);
Value1 = Arw_SetColor(Arw_GetActive, red);
end;
Without understanding what you are trying to achieve,
here is the conventional way of coding a drawing object:

Code: Select all

var:
my.arw(-1);

if ViewArrow and not SqueezeDown[1] and (h < h[1])then
begin
my.arw = Arw_New_self_s(Date, Time_s, var1[1], True);
Arw_SetSize(my.arw, ArrowSize);
Arw_SetColor(my.arw, red);
end;

User avatar
TJ
Posts: 7740
Joined: 29 Aug 2006
Location: Global Citizen
Has thanked: 1033 times
Been thanked: 2221 times

Re: Performance issue

Postby TJ » 10 Apr 2013

This manual has detailed explanation and code examples on how to create and manipulate drawing objects:

EasyLanguage Essentials Programmers Guide
Drawing Objects.... pg 112

tcat
Posts: 175
Joined: 02 Feb 2008
Location: Lausanne, Switzerland
Has thanked: 9 times
Been thanked: 5 times

Re: Performance issue

Postby tcat » 10 Apr 2013

Thanks TJ for the advices.

I used MC online support references for the code (the F1 Help), but the references you mentionned appear to be smarter in term of calculations. I'll see tomorrow during market hours if the code change makes a difference in term of performance.

The code I have written is highlighting the transition from expansion to congestion in a volume weighted oscilllator.

Cheers,
Thierry

tcat
Posts: 175
Joined: 02 Feb 2008
Location: Lausanne, Switzerland
Has thanked: 9 times
Been thanked: 5 times

Re: Performance issue  [SOLVED]

Postby tcat » 12 Apr 2013

Hello,

Just to close this issue, I wanted to confirm that replacing the Arw_GetActive by a variable did indeed solve the performance issue I was facing. I was already using variables for trendlines and other texts, but not for arrows. The Arw_GetActive which is mentionned on MC support page proved to have a real damaging impact on performance.

Thanks to Henry for support and to TJ for identifying the root cause of my issue.

Regards,
Thierry

User avatar
TJ
Posts: 7740
Joined: 29 Aug 2006
Location: Global Citizen
Has thanked: 1033 times
Been thanked: 2221 times

Re: Performance issue

Postby TJ » 12 Apr 2013

Hello,

Just to close this issue, I wanted to confirm that replacing the Arw_GetActive by a variable did indeed solve the performance issue I was facing. I was already using variables for trendlines and other texts, but not for arrows. The Arw_GetActive which is mentionned on MC support page proved to have a real damaging impact on performance.

Thanks to Henry for support and to TJ for identifying the root cause of my issue.

Regards,
Thierry
You are welcome. Glad to be of help.

Please post the link to the page that gave you the bad example, so that it can be corrected.


Return to “MultiCharts”