kbmMW Scheduler Tidbits #3

What happens if a scheduled repeating job is taking longer time to finish than expected, thus missing next scheduled interval?

Depending on the amount of the delay and criterias for the schedule, the next execution of the job may either be delayed or completely cancelled, if the window of running the job has passed.

The kbmMW Scheduler contains some nice statistics to follow, which can be used to track if that happens, how often and provides some figures that tells about the time of executing.

The statistics can be obtained directly from the scheduled event instance you receive as result when you use Scheduler.Schedule…. But you can also iterate over all scheduled events. The following example iterates through the scheduled events, triggered by a TTimer, to be able to update a TMemo with statistics,.

procedure TForm1.Timer1Timer(Sender: TObject);
var
 i:integer;
 lst:TList<IkbmMWScheduledEvent>;
 e:IkbmMWScheduledEvent;
begin
 if not chbStats.Checked then
 exit;
 lst:=Scheduler.Events.Events.BeginRead;
 try
   mStats.Clear;
   for i:=0 to lst.Count-1 do
   begin
     e:=lst.Items[i];
     mStats.Lines.Add(inttostr(i)+') ID='+e.ID+' Name='+e.Name+' Runs='+inttostr(e.Runs)+' Stalls='+inttostr(e.Stalls)+' TotalStalls='+inttostr(e.TotalStalls)+' LastRunTaken='+inttostr(e.LastRunTaken)+' TotalTimeTaken='+inttostr(e.TotalTimeTaken));
   end;
 finally
   Scheduler.Events.Events.EndRead;
 end;

The scheduled events have a number of properties to access for statistics:

  • Runs indicate how many times the event has run in total.
  • Stalls indicate how many times the event should have run, but was unable to due to either still running or the thread pool exhausted at the time, since last time a successful run happened.
  • TotalStalls counts total number of stalls.
  • LastRunTaken shows how many mSecs last run lasted.

When TotalStalls increase fairly regularly it indicates that either too many events are defined compared to size of the relaxed thread pool (increase RelaxedPoolSize which is default 20), or some events are taking longer time than expected to run and thus can’t be timely rescheduled.

 

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s