REACT™ for IRIX®


IRIX® with REACTTM

Real-Time Support in IRIX (starting with Version 6.4)

REACT enables SGI® general-purpose multiprocessor systems to deliver the deterministic performance required by hard real-time applications. REACT is a collection of extensions to IRIX, the SGI implementation of standard UNIX® System V. Included with IRIX, REACT provides deterministic performance on multiprocessor SGI® Origin® servers, Silicon Graphics® Onyx2® visual workstations, and Silicon Graphics® Octane® visual workstations..

Topics:

This page provides an overview of REACT features. For a more detailed description that includes references to the the applicable system calls, you can download the Real-time in IRIX Technical Report (PDF 64K).


User Control Ensures Precise Real-Time Behavior

Real Time Operation Diagram

Block diagram of Origin® or Onyx2® configured for real-time operation

Restricting UNIX System Overhead

REACT enables you to restrict all non-deterministic IRIX system activity to one processor in a multiprocessor system. This leaves the remaining processors under the full control of your real-time application. UNIX services are always available, but IRIX system daemons will never preempt a real-time process.

Allocating Processors

Using the REACT processor restriction capability, you can specify which processes will execute on each real-time processor, and exclude all other activity from those processors. This enables you to divide your workload across processors and ensure that each process meets its deadlines.

Directing Interrupts to Processors

REACT allows you to route VME or PCI interrupts to the processor of your choice. Other interrupts such as SCSI or Ethernet can be directed away from your real-time processors. This ensures immediate responses to real-time interrupts, and prevents non-real-time interrupts from interfering with your applications.

Locking Memory

A single POSIX-compliant system call locks into physical memory all pages used by your real-time process, including pages that are allocated after a locking call has been issued.

Assigning Process Priority

REACT provides a range of 256 non-degrading real-time priority levels. IRIX kernel threads share this priority range, so you can give user processes higher or lower priority than the threads which perform most kernel activity. Standard POSIX 1003.1b calls are used to set or query priority levels.

Controlling Process Scheduling

The IRIX scheduler supports both the FIFO and Round-Robin real-time scheduling policies specified by POSIX 1003.1b. FIFO implements a fixed priority scheduling policy, and Round-Robin combines priority scheduling with timesharing among processes of equal priority. In addition, the IRIX scheduler offers a time-sharing policy.

For fixed frame-rate applications, the REACT/pro Frame Scheduler (FRS) provides a solution that is flexible, easy-to-use, and highly efficient.

If neither the IRIX scheduler nor the FRS meet your requirements, REACT offers a choice of ways to implement interrupt-driven, user level scheduling. This enables you to develop your own scheduling policy, or to easily port an existing executive process.

Worst-Case Timing

Once a multiprocessor has been properly configured using the features described above, SGI guarantees 100 microseconds worst-case total interrupt response on SGI® Origin® 2000 series servers and 50 microseconds on SGI® Origin® 3000 series servers. This guarantee applies to all current and future multiprocessor hardware and software releases. The components of total interrupt response are listed in the following diagram. To jump to the analogous diagram for REACT/pro User-Level Interrupts, click here.

REACT Worst-Case Interrupt Response
REACT Worst-Case Interrupt Response Chart
On a properly configured multiprocessor system, REACT delivers guaranteed worst-case interrupt time of less than 50 µS on SGI Origin 3000 series servers.

Processor Activity
A - User Process #1
B - Switch mode from User to Kernel
C - Generic interrupt service routine
D2 - Device-specific interrupt service routine (sets semaphore to wake up user process #2)
E - Scheduler determines which process will run next
F - Contexts switch from process #1 to process #2
G - Switch mode from Kernel to User
H - User Process #2


POSIX 1003.1b Features Offer Performance and Portability

Precision Clocks and Timers

Each processor includes a hardware clock with sub-microsecond precision that REACT uses to support POSIX 1003.1b clocks and timers. This hardware support allows high precision to be achieved with minimal additional system overhead.

The REACT implementation of POSIX timers enables a process to sleep for any period ranging from a few microseconds to hundreds of hours. REACT also provides support for traditional UNIX itimers.

REACT also allows your process to map a high-resolution hardware clock into its virtual address space and then read the hardware timer directly.

Real-Time Disk I/O

REACT supports both synchronous and asynchronous disk I/O as specified by POSIX 1003.1b. Using asynchronous I/O, your real-time process can initiate a disk I/O operation and then continue processing while the operation is completed by a non-real-time processor.

Synchronous I/O operations ensure that data written by your real-time process has reached the physical disk before your process resumes execution. POSIX 1003.1b memory mapped files provide deterministic file I/O when a disk file is mapped into pages that are locked into physical memory.

Queued Signals

POSIX 1003.1b queued signals guarantee that the number of signals received by a process is identical to the number sent to that process, and that signals are delivered in priority order. Queued signals provide a reliable technique for one real-time process to asynchronously notify another process of the occurrence of an event.

Shared Memory

REACT shared memory takes advantage of the high-speed, cache coherency logic built into the ccNUMA architecture. For maximum portability, REACT supports a choice of three shared-memory interfaces: POSIX 1003.1b, System V, and SGI arenas.

Semaphores

The REACT implementation of POSIX 1003.1b semaphores provides a high-speed user-level synchronization mechanism. Real-time processes blocked on POSIX semaphores are unblocked in priority order.

Message Queues

POSIX 1003.1b message queues make it simple to pass data among processes and assign priority to messages. As implemented in REACT, message queues support priority inheritance to prevent deadlock and minimize scheduling latency for high-priority processes. This behavior allows real-time processes of different priority to share queues.


Advanced Hardware Features Simplify Integration

User-VME and User-PCI Support

REACT provides an easy-to-use programming interface that allows you to map VME or PCI devices into the virtual address space of your process without requiring kernel driver modifications. Once the mapping is initialized, processes can read or write VME or PCI locations as though they were system memory.

VME DMA Engine

The optional VME Adapter for Origin 2000 and Onyx2 uses the Universe chip from Tundra Semiconductor Corp. This chip includes a general purpose DMA engine that supports a choice of addressing modes. REACT/ pro gives you access to most features of the Universe chip.

External Interrupt Input

Origin and Onyx2 include back panel connectors that allow direct input or output of an interrupt signal. The edge-triggered input can either cause a signal to be sent to a real-time process, or trigger frame initiation by the REACT/pro Frame Scheduler. REACT external interrupts make it simple to synchronize execution of your processes with events in the external world.