KBI 310206 Dynamically Determined Scheduling




20 Aug 2010


This article explains Dynamically Determined scheduling.

Technical Background

Dynamic scheduling is an extremely useful feature that can turn a Monitoring Engine from an unreliably overloaded engine, to a working, efficient engine.

Say you have a Relator that is monitoring 100 servers every 10 minutes through a single Monitoring Engine.

When it is time to execute the Relator, the Monitoring Engine goes out and connects to all 100 servers to execute its task at the same time.

Obviously, this causes a huge spike in CPU utilization, network traffic, disk I/O and a whole host of other critical resources.

Worst of all, the system illustrated here is extremely inefficient.

We have 9 minutes of idle time, and 1 minute of overloaded resources.

The “Dynamic” Option

If the “Dynamic” option is enabled, the Supervising Engine sees this, and does a few calculations in the background.

At 100 servers every 10 minutes, it staggers the execution time equally across each minute.

In this case, we’re looking at 10 servers every 1 minute.

At the 10th minute, all 100 servers have completed the task, and the cycle begins.

In the Dynamic scenario, the load is evenly distributed across the frequency of the execution time, resulting in a balanced and efficient usage of resources.

For Relators that are monitoring one or more Rules across many servers, it is always advisable to turn on Dynamic scheduling.

The only real time you may want to disable Dynamic scheduling is when a Relator must execute at a precise time, where you have full knowledge and control of when it runs.