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
Performance issue [SOLVED]
- Henry MultiСharts
- Posts: 9165
- Joined: 25 Aug 2011
- Has thanked: 1264 times
- Been thanked: 2957 times
Re: Performance issue
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.
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.
-
- Posts: 176
- Joined: 02 Feb 2008
- Location: Lausanne, Switzerland
- Has thanked: 9 times
- Been thanked: 5 times
Re: Performance issue
Hello Henry,
- Attachments
-
- PerfCapture.PNG
- CPU usage
- (49.49 KiB) Downloaded 1133 times
- Henry MultiСharts
- Posts: 9165
- Joined: 25 Aug 2011
- Has thanked: 1264 times
- Been thanked: 2957 times
Re: Performance issue
Please attach this screenshot as was requested and reply to my questions.Then double click on MultiCharts.exe process->Performance graph. Create a screenshot of this window.
-
- Posts: 176
- Joined: 02 Feb 2008
- Location: Lausanne, Switzerland
- Has thanked: 9 times
- Been thanked: 5 times
Re: Performance issue
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
- Henry MultiСharts
- Posts: 9165
- Joined: 25 Aug 2011
- Has thanked: 1264 times
- Been thanked: 2957 times
Re: Performance issue
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?
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?
-
- Posts: 176
- Joined: 02 Feb 2008
- Location: Lausanne, Switzerland
- Has thanked: 9 times
- Been thanked: 5 times
Re: Performance issue
Yes, my indicators keep plotting new arrows or daily lines, with the exception of one which updates itself.
I have attached the requested snapshot.
- Henry MultiСharts
- Posts: 9165
- Joined: 25 Aug 2011
- Has thanked: 1264 times
- Been thanked: 2957 times
Re: Performance issue
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.
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.
-
- Posts: 176
- Joined: 02 Feb 2008
- Location: Lausanne, Switzerland
- Has thanked: 9 times
- Been thanked: 5 times
Re: Performance issue
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.
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.
- TJ
- Posts: 7743
- Joined: 29 Aug 2006
- Location: Global Citizen
- Has thanked: 1033 times
- Been thanked: 2222 times
Re: Performance issue
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.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.
-
- Posts: 176
- Joined: 02 Feb 2008
- Location: Lausanne, Switzerland
- Has thanked: 9 times
- Been thanked: 5 times
Re: Performance issue
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;
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;
- TJ
- Posts: 7743
- Joined: 29 Aug 2006
- Location: Global Citizen
- Has thanked: 1033 times
- Been thanked: 2222 times
Re: Performance issue
I am not sure if the problem is from this snippet,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;
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
Can you explain what do you want to achieve on the chart?I am using the "Arw_New_self_s" for each new arrow, the benefit of it...
ps. How to Post Codes with Code Tag
viewtopic.php?f=16&t=11713
- TJ
- Posts: 7743
- Joined: 29 Aug 2006
- Location: Global Citizen
- Has thanked: 1033 times
- Been thanked: 2222 times
Re: Performance issue
Without understanding what you are trying to achieve,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;
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;
- TJ
- Posts: 7743
- Joined: 29 Aug 2006
- Location: Global Citizen
- Has thanked: 1033 times
- Been thanked: 2222 times
Re: Performance issue
This manual has detailed explanation and code examples on how to create and manipulate drawing objects:
EasyLanguage Essentials Programmers Guide
Drawing Objects.... pg 112
EasyLanguage Essentials Programmers Guide
Drawing Objects.... pg 112
-
- Posts: 176
- Joined: 02 Feb 2008
- Location: Lausanne, Switzerland
- Has thanked: 9 times
- Been thanked: 5 times
Re: Performance issue
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
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
-
- Posts: 176
- Joined: 02 Feb 2008
- Location: Lausanne, Switzerland
- Has thanked: 9 times
- Been thanked: 5 times
Re: Performance issue [SOLVED]
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
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
- TJ
- Posts: 7743
- Joined: 29 Aug 2006
- Location: Global Citizen
- Has thanked: 1033 times
- Been thanked: 2222 times
Re: Performance issue
You are welcome. Glad to be of help.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
Please post the link to the page that gave you the bad example, so that it can be corrected.