System performance optimization

The goal of performance optimization is to configure system capabilities and integrate subsystem elements so that all components operate at or above user expectations.

What impacts the performance of the system?

Many factors impact the performance, including: the number of devices on the network, the frequency of accessing points, the size and frequency of generated reports, the complexity of analytical algorithms, the scheduling of station backups, the security overhead, and the frequency and complexity of BQL (Browsing Query Language) queries.

How can we improve system performance?

System optimization is a process of balancing memory resources: CPU memory, which is the main resource; VM (Virtual Machine) memory or Heap storage, which loads and runs the system at boot; and System memory, which runs the operating system. Each memory resource must have a reasonable amount of reserve for the system to function optimally. Performance degrades dramatically when all memory resources are at maximum utilization.

At times, as the CPU performs some operations it’s memory usage spikes to 100 percent and after completion it settles back down. Running the CPU all the time at 100 percent may cause it to crash.

 
NOTE: As a safe practice, it is recommended to generally keep an embedded platform’s memory usage within the below given limits.
  • CPU Usage < 75% average
  • Heap Usage < 75 % of available
  • Free System Memory > 7 MB
There are many factors that contribute to the usage of the above three key indicators that are difficult to quantify for a given set of drivers, histories, alarms, reports, database configuration, and User Interface.
 

A station running on a Java VM creates objects and marks them for cleanup. Java runs garbage collection and cleans out all the objects that were marked in the VM memory so the whole process can start again. You can see the VM memory increases and decreases. You must have that cushion of free memory so that Java VM can operate effectively.

Performance optimization is a moving target. At times your system may have plenty of VM memory available, but you cannot increase the station size due to the fact that the controller is running low on CPU (too many changes happening in the station). Or your CPU may almost be idle, but you may be running out of VM memory. The only solution is to configure the station such that all three resources are within the recommended values.

Since every system is programmed differently, a specific device count cannot be determined. One system runs a JACE-8000 with 265 BACnet MS/TP devices, however, another system that puts graphics on a JACE-8000 may have 100 BACnet devices. Or changing how many points are brought into the station changes the equation for device count. So the performance for both the systems may vary. By managing the usage of CPU, VM memory, and system memory each system can optimize its performance.