The Scheduler Event Generator (SEG) is a program which uses scheduler-specific monitoring modules to generate job state change events. At the SEG level, the state change events correspond to changes in any jobs which are managed by the scheduler, even if they do not correspond to jobs initiated by the Managed Job Service. These state change events are propagated to the Job State Monitor.
Depending on scheduler-specific requirements, the SEG may need to run with priviledges to enable it to obtain scheduler event notifications. As such, one SEG runs per scheduler resource. For example, on a host which provides access to both PBS and fork jobs, two SEGs, running at (potentially) different privilege levels will be running.
When executed, the SEG is able to start issuing events from some time in the past. The SEG will, in general, not require any persistent state between invocations. One SEG instance exists for any particular scheduled resource instance (one for all homogeneous PBS queues, one for all fork jobs, etc).
The SEG is implemented in an executable called the globus-scheduler-event-generator, located in the Globus Toolkit's libexec directory. It is invoked with the following command line:
globus-scheduler-event-generator -s SCHEDULER NAME [-t TIMESTAMP]
It produces events in the format described in the SEG Protocol section of this document on the standard output of the process.
When begun, it loads the scheduler module for the scheduler named on the command line and then defers to it for most functionality. When it detects an error writing to stdout or reading stdin, it terminates. The scheduler specific code uses the SEG API to emit events to the JSM.
Scheduler implementations use the SEG API to send messages to the JSM.