Applies To:
  • CitectSCADA 3.00

Question: After I upgraded my system from Citect for Windows version 2.01 to version 3.0, I noticed the CPU loading in the kernel has increased. What is the cause of the increase in CPU loading? 

The cicode thread schedular has been enhanced to be a more efficient user of your CPU resource. It has been make more efficient in that it will give up the CPU very quickly when Citect has a more important task to run. As it is now more efficient we have also given the schedular more access to the CPU resource. In version 2.xx and earlier the cicode thread schedular was designed to limit its use of the CPU to no more than 50% of the available resources in any given second. In some cases it would use more that this 50% in one second. Because of the improvements to the schedular in version 3.0, it is now not limited to the 50% of CPU. So that is Citect is not doing anything else more important at the time the cicode schedule will use up to 100% of the CPU resource in any given second.

This will mean that the cicode thread schedular (and so your cicode tasks) will mop up any available CPU resources without slowing down important Citect tasks. This gives a very fast responsive feel to critical Citect tasks while at the same time giving more CPU to your cicode tasks.

In version 2.xx and earlier the cicode thread schedular would sometimes not give up the CPU resource quick enough and users where required to put Sleep() function calls in their code to reduce the total CPU loading. This was a typical requirement in tight loops which called a lot of slow functions, for example DevXXX functions. This is no longer required for version 3.0, however it is still good way to share the CPU from one cicode task to another.

So to sum up you may see an effect of this enhancement as a higher CPU loading (using the Citect Kernel), however your system will be more responsive to the operator.

See also Q1458.