Overview

Comments on any material here are welcome to Gautam H. Thaker, Lockheed Martin Advanced Technology Labs, Camden, NJ.

Periodic scheduling test:

Our overall goal is to schedule a process to periodically wake up and perform some function. We need very high degree of predictability in this scheduling. We would like a tight bound on actual durations between wake ups. We can tolerate a bound that spans from 1/n of desired period to "n" times the desired period where "n" can be perhaps as large as 5. And this bound needs to hold under potentially large overload of other lower priority, non real-time, processes. These other non real-time processes may be compute intensive, or disk intensive, or network intensive.

Our ideal periodically scheduled program would look like:

while(1) {
   gettimeofday();    /* measure delta time since last sleep */
   nanosleep(1000000);   /* sleep for 1 msec */
}

Nanosleep() is a POSIX standard interface. However, our preliminary tests showed that nanosleep() under KURT was less predictable than a periodic KURT process. Thus, for these results the periodic test process is a KURT periodic process. The table below summarizes the results we have todate and provides a link to specific results.