N1GE Adapter Introduction
The Hedeby project includes a service adapter implementation for the
N1GE software. This adapter communicates remotely with the qmaster of
the associated N1GE grid, although most configurations should locate the
adapter on the same host as the N1GE qmaster. The adapter uses the native
N1GE protocols to gather information about the state of the grid. Using
that information, SLO violations are calculated and remediary action is
taken if needed.
The service adapter is implemented by the N1geAdapter class, which
implements the ServiceAdapter interface. The N1geAdapter instance is created
by the ServiceContainer. Once started, the N1geAdapter creates an
N1geService instance, which encapsulates the state of the N1GE grid. The
N1geService instance creates an N1geJgdi instance, which provides
synchronization around a JGDI instance. The JGDI instance communicates
with the N1GE qmaster via the native GDI protocol. The N1geAdapter also
has a second thread, which is an N1geComputeSlo instance. The N1geComputeSlo
thread is responsible for checking for SLO violations.
The N1geComputeSlo instance is activated in two different ways. Periodically,
the N1geComputeSlo thread will gather grid state information and evaluate the
configured SLOs. Also, whenever the service is queried for resource usage
information, the N1geComputeSlo will gather grid information and evaluate the
configured SLOs. When the grid state information is gathered, it is stored
in a DataStore instance. The data store holds the current grid state
information so that each SLO doesn't have to gather the information again. The
N1geComputeSlo evaluates each configured SLO instance. If the N1geComputeSlo
is in a periodic run, the SLOs report their needs, if any. The N1geAdapter
then sends the full list of needs (which may be empty) to the resource
provider via the service container. If the N1geComputeSlo is run in response
to a resource usage query, the SLOs will evaluate the usage level for each of
a specified set of resources. That usage information is then returned from
the query.
The N1geAdapter supports three types of SLOs. The first is the FixedUsageSlo.
The FixedUsageSlo always reports its configured usage level for all resources
and never makes a resource request. The second is the MinResourceSlo. The
MinResourceSlo is configured with a resource desciption, a minimum number, and
a usage level. If the count of the resources of the specified description
falls below the minimum number, the configured usage level will be reported or
requested, as appropriate. The third is the MaxJobSlo. The MaxJobSlo is
configured with a resource description, a maximum number, and a usage level.
If the count of the pending jobs requesting the described resource rises above
the maximum number, the configured usage level will be reported or requested, as
appropriate.