DC.exe is using large amount of CPU.
Question: I noticed that my IGSS Data Collector (DC.exe) is consuming a large amount of CPU usage. I want to reduce the performance impact of the Data Collector on my system. How do I do it?
Answer: You can’t simply adjust the CPU usage of your Data Collector, but you can try to remove the cause of your Data Collector is “running hot”.
A very good place to start is the Calculations tab on your objects. Calculations can be set up on each object and is a strong tool to use instead of using VBA code, but you have to be careful how you set up your calculations when combining many objects with different settings for timer and object change calculations.
Additionally, using results from previous calculations to calculate other values in other objects will also compound the problem of CPU usage since the Data Collector has to perform all the defined calculations for all the objects.
A large configuration contains 100 objects that have calculations defined for them. The calculations are to be conducted every 36 milliseconds (The On timer option on the Calculation tab of the Object Properties form is enabled and the value 36 has been defined.) Additionally, the results of the 100 calculations are used in other dependent calculations on other objects in the configuration, all of which are defined to conduct the calculations upon object changes in the expression.
The calculations generated from the 100 objects change every 36 milliseconds since the expression changes, which in turn prompts the other dependent calculations. This results in a rapidly growing queue for processing by the Data Collector, which can’t keep up with the queue’s growth and the CPU usage increases dramatically as the Data Collector tries to work through the ever-growing list of calculations.
The only way to fix this is to reduce the timer-defined calculations from 36 milliseconds to something considerably less which will give the Data Collector sufficient time to conduct incoming calculations, for instance 3,600 milliseconds. In retrospect, setting the initial timer to 36 milliseconds was probably a mistake, multiplied by the 100 objects and compounded by the subsequent calculations on other objects.
You cannot just simply upgrade your CPU to deal with the problem as the calculation list will grow faster than any new CPU will be able to process the calculations.
The bottom line is, be careful how you set up timer-defined calculations and especially how you combine dependent calculations across objects.
If you have to change the timer values for all the 100 objects in the example above, you can do this quickly by opening the configuration database in Microsoft Access. The configuration database file is found in the configuration folder and has the same name as the IGSS configuration with the extension .mdb
In Microsoft Access, locate the Calculations table and the Timer field and change all the values for the 100 objects in the Timer field from 36 to 3600.