[comp.os.vms] AST response delays when doing realtime I/O

d2b@rayssd.RAY.COM (Donald A. Borsay) (09/21/87)

One of the projects here at Raytheon are running realtime on a VAX 11/750
using VMS.  The application is intended to handshake with two other 
external systems at regular intervals.  When the CPU utilization approaches
50%, twenty to forty percent delays in timer servicing cause a disruption in
the I/O cycle and problems for the devices being interfaced.  The latency is 
discovered within the timer AST routine described below, using SYS$GETTIM.  
Here's a few details of the application:

There are two critical processes (WPIO and SSIO) that do the handshaking.
They both run at priority 30.  There is the main routine which sets the
timer (WPIO=100ms,SSIO=120-130ms), does some processing, and hibernates.
When the timer expires, the timer AST is entered which resets the timer
and performs 1 dr11-w I/O.  When the I/O operation is completed, the I/O
AST is entered which does the rest of the I/O (WPIO=2,SSIO=1).  When all
the I/O is completed, the I/O AST routine resumes the main process.

Other than WPIO and SSIO, there are up to 20 other processes in the application
which run at priorities between 16 and 19.  All the processes communicate
using mailboxes, with 80% of them waking up once per second.  Most of
these other processes are CPU bound, with a few doing I/O to a couple of
Ramtek displays and touch panels.

Since I have limited experience with realtime scheduling in VMS (I have 
read thru the outdated Internals black book), I am hoping that one of you 
realtimer's out there have some pointers.  Please reply by mail.  I will 
post a summary if there is sufficient interest.  Thanks in advance.
-- 
Don    |Raytheon Company, Submarine Signal Division, Portsmouth, RI
Borsay |ARPAnet: d2b%rayssd.RAY.COM@a.cs.uiuc.edu
       |UUCPmail: {allegra, decvax!brunix, linus!raybed2}!rayssd!d2b