elim
External load information manager, monitoring site-specific (external) load indices.
Description
Load indices measure and report the availability of dynamic resources (such as available memory and CPU utilization) on a host which change as the load on that host changes. These values are reported to a host's load information manager (lim), which periodically collects those values.
Load indices are
of two types:
- Built-in (for example, CPU, memory, disk space, and I/O).
- External based on resource requirements at your site (for example, the space available in a directory). If you define site-specific resources, you must write a site-specific executable that is called the external load information manager (elim) to supply the lim with the values of these dynamic external resources.
An elim can be as simple as a small script, or as complicated as a sophisticated C program. As a cluster administrator, program the elim to define external load indices, populate those indices with the values of dynamic external resources, and return the indices and their values to stdout.
You can write one elim executable to collect multiple external load indices, or divide external
load index collection among multiple elim executables. On hosts mapped to dynamic resources, the lim
automatically starts a primary
elim (melim), which manages all elim executables on the host and reports the external load index
values to the lim. Specifically, the melim runs on each host required to gather dynamic external
resources and does the following:
- Starts and stops elim executables on the host.
- Collects the load information reported by the elim executables.
- Checks the syntax of load update strings before sending the information to the lim.
- Merges the load reports from each elim and sends the merged information to the lim. If there is more than one value reported for a single resource, the melim reports the latest value.
Enabling external load indices
To enable the use of external load indices, you must:
- Define the dynamic external resources in the Resource section of ego.shared. By default, these resources are host-based (local to each host) until you configure a resource-to-host-mapping in the ResourceMap section of ego.cluster.cluster_name.
- Map the external resources to hosts in your cluster in the ResourceMap section of ego.cluster.cluster_name.
- Create one or more elim executables and install them in the directory that is specified by EGO_ESRVDIR.
- Restart EGO on all your hosts.
Mapping external resources:
Once external resources are defined in
ego.shared, they must be mapped to hosts in the ResourceMap section of
$EGO_CONFDIR/ego.cluster.cluster_name as follows:
- RESOURCENAME
- Specifies the name of the external dynamic resource, as defined in the Resource section of ego.shared.
- LOCATION
- Maps the resource to the primary host only; all hosts share a single instance of the dynamic external resource.
Begin ResourceMap
rtprc [default]
tcpnum [default]
myrsc [all]
End ResourceMap Creating an elim executable:
You can write one or more
elim executables. The load index names that are defined in your elim
executables must be the same as the external resource names defined in the
ego.shared configuration file. All elim executables must:
- Be located in EGO_ESRVDIR and follow the naming convention:
- On Windows: %EGO_ESRVDIR%\elim.application.exe or %EGO_ESRVDIR%\elim.application.bat
- On Linux: $EGO_ESRVDIR\elim.application
- Run under the same user account as the lim—by default, the EGO administrator (egoadmin) or root account.
- Be an endless loop.
- Periodically output a load update string to stdout in the format number_indices
index_name index_value [index_name index_value …], where:
- number_indices specifies the number of external load indices that are collected by the elim.
- index_name specifies the name of the external load index, as defined in ego.shared.
- index_value specifies the external load index value that is returned by your elim.