Professional OPC
Development Tools

logos

Online Forums

Technical support is provided through Support Forums below. Anybody can view them; you need to Register/Login to our site (see links in upper right corner) in order to Post questions. You do not have to be a licensed user of our product.

Please read Rules for forum posts before reporting your issue or asking a question. OPC Labs team is actively monitoring the forums, and replies as soon as possible. Various technical information can also be found in our Knowledge Base. For your convenience, we have also assembled a Frequently Asked Questions page.

Do not use the Contact page for technical issues.

High CPU usage peaks

More
07 Aug 2017 21:49 #5414 by alr1976
Replied by alr1976 on topic High CPU usage peaks
Hi!

I have build app with more 600 tags and works on Atom 4gb and i don t have speed problem. Are u using Firemonkey or vcl

Please Log in or Create an account to join the conversation.

More
03 Aug 2017 16:04 #5410 by support
Replied by support on topic High CPU usage peaks
QuickOPC is written in .NET, and the COM interfaces you are using from Delphi are layered on top of it. We have little to no control over how the managed (.NET) is run, and that includes the garbage collector executions.

In theory, it might be possible to improve the behavior using the GC latency mode setting:
- docs.microsoft.com/en-us/dotnet/api/system.runtime.gcsetting...encymode?view=netframework-4.7
- docs.microsoft.com/en-us/dotnet/api/system.runtime.gclatencymode?view=netframework-4.7

There are, however, two issues with it:
1) Currently it is not accessible to you, because it is in a global .NET object which neither Microsoft nor us are exposing to COM .
2) The proper setting would probably be LowLatency or SustainedLowLatency, BUT none of these is meant to be set permanently - they should be constrained to specific periods where the performance is important. You will therefore have to identify such pieces of code and control the GC in such a way that it gets a chance to return to its normal operations from time to time.

Regards

Please Log in or Create an account to join the conversation.

More
02 Aug 2017 07:42 #5407 by KK
Replied by KK on topic High CPU usage peaks
yes, i thinke so.
Regards

Please Log in or Create an account to join the conversation.

More
02 Aug 2017 07:36 - 02 Aug 2017 07:37 #5405 by support
Replied by support on topic High CPU usage peaks
So, do the CPU utilization peaks correspond to GC collections, or not? I though you would create a chart showing how they correlate over the time.
Last edit: 02 Aug 2017 07:37 by support.

Please Log in or Create an account to join the conversation.

More
02 Aug 2017 05:45 #5403 by KK
Replied by KK on topic High CPU usage peaks
Hello,

I am a colleague of RH.
There is in part to system utilization of up to 100% over several seconds.


Regards

Please Log in or Create an account to join the conversation.

More
12 Jun 2017 09:10 #5229 by support
Replied by support on topic High CPU usage peaks
Can you please first check whether these CPU peaks correlate with .NET garbage collections, using PerfMon? See e.g. blogs.msdn.microsoft.com/maoni/2004/06/03/gc-performance-counters/ , counters like
  • “% Time in GC”
  • “# Gen 0 Collections”
  • “# Gen 1 Collections”
  • “# Gen 2 Collections”
Thank you

Please Log in or Create an account to join the conversation.

More
12 Jun 2017 06:35 #5228 by RH
High CPU usage peaks was created by RH
Hello,

we are using QuickOPC in COM from Delphi with subscriptions and about 100 variables. Recently we observed that we get high peaks of the CPU usage for about 2-5 seconds every few minutes. This even causes the main thread of our software to hang and cause problems when performing rather time-critical actions.

With process explorer, we tracked the CPU usage per thread and it seems to be one QuickOPC .NET thread. I actually don't know why it has such a big influence on the main thread. Could this be caused by some synchronizing mechanism in .NET? From Delphi I know that using the command Synchronize from threads causes all threads to synchronize, even those which are not involved. This can leed to bad performance depending on the code running synchronized.

Any suggestions, what we can do to minimize that behaviour?

Regards

Please Log in or Create an account to join the conversation.

Moderators: support
Time to create page: 0.066 seconds