Using and Administering

Understanding the LoadLeveler Job Object Model

The ll_get_data subroutine of the data access API allows you to access the LoadLeveler job model. The LoadLeveler job model consists of objects that have attributes and connections to other objects. An attribute is a characteristic of the object and generally has a primitive data type (such as integer, float, or character). The job name, submission time and job priority are examples of attributes.

Objects are connected to one or more other objects via relationships. An object can be connected to other objects through more than one relationship, or through the same relationship. For example, A Job object is connected to a Credential object and to Step objects through two different relationships. A Job object can be connected to more than one Step object through the same relationship of "having a Step." When an object is connected through different relationships, different specifications are used to retrieve the appropriate object.

When an object is connected to more than one object through the same relationship, there are Count, GetFirst and GetNext specifications associated with the relationship. The Count operation returns the number of connections. You must use the GetFirst operation to initialize access to the first such connected object. You must use the GetNext operation to get the remaining objects in succession. You can not use GetNext after the last object has been retrieved.

You can use the ll_get_data subroutine to access both attributes and connected objects. See ll_get_data Subroutine for more information.

The root of the job model is the Job object, as shown in Figure 35. The job is queried for information about the number of steps it contains and the time it was submitted. The job is connected to a single Credential object and one or more Step objects. Elements for these objects can be obtained from the job.

You can query the Credential object to obtain the ID and group of the submitter of the job.

The Step object represents one executable unit of the job (all the tasks that are executed together). It contains information about the execution state of the step, messages generated during execution of the step, the number of nodes in the step, the number of unique machines the step is running on, the time the step was dispatched, the execution priority of the step, the unique identifier given to the step by LoadLeveler, the class of the step and the number of processes running for the step (task instances). The Step is connected to one or more Switch Table objects, one or more Machine objects and one or more Node objects. The list of Machines represents all of the hosts where one or more nodes of the step are running. If two or more nodes are running on the same host, the Machine object for the host occurs only once in the step's Machine list. The Step object is connected to one Switch Table object for each of the protocols (MPI and/or LAPI) used by the Step.

Each Node object manages a set of executables that share common requirements and preferences. The Node can be queried for the number of tasks it manages, and is connected to one or more Task objects.

Figure 35. LoadLeveler Job Object Model

View figure.

The Task object represents one or more copies of the same executable. The Task object can be queried for the executable, the executable arguments, and the number of instances of the executable.

Table 15 describes the specifications and elements available when you use the ll_get_data subroutine. Each specification name describes the object you need to specify and the attribute returned. For example, the specification LL_JobGetFirstStep includes the object you need to specify (LL_Job) and the value returned (GetFirstStep).

This table is sorted alphabetically by object; within each object the specifications are also sorted alphabetically.

When using the 2.1.0 release APi of ll_get_data, you must use the new 2.1 release keywords. For instance, you can not use the min_processors and max_processors from the 1.3.0 release with the 2.1 release API ll_get_data. You must use the new keyword, node.

Table 15. Specifications for ll_get_data Subroutine
Object Specification Resulting Data Type Description
Adapter LL_AdapterAvailWindowCount int* A pointer to an integer indicating the number of windows not in use.
Adapter LL_AdapterCommInterface char* A pointer to a string containing the adapter's communication interface.
Adapter LL_AdapterInterfaceAddress char* A pointer to a string containing the adapter's interface IP address.
Adapter LL_AdapterMaxWindowSize int* A pointer to the integer indicating the maximum allocatable window memory.
Adapter LL_AdapterMemory int* A pointer to the integer indicating the amount of total adapter memory.
Adapter LL_AdapterMinWindowSize int* A pointer to the integer indicating the minimum allocatable window memory.
Adapter LL_AdapterName char* A pointer to a string containing the adapter name.
Adapter LL_AdapterTotalWindowCount int* A pointer to the integer indicating the number of windows on the adapter.
Adapter LL_AdapterUsageMode char* A pointer to a string containing the mode used for css IP or US.
Adapter LL_AdapterUsageProtocol char* A pointer to a string containing the task's protocol.
Adapter LL_AdapterUsageWindow char* A pointer to a string containing the window assigned to the task.
Adapter LL_AdapterUsageWindowMemory char* A pointer to the integer indicating the number of bytes used by the window.
AdapterReq LL_AdapterReqCommLevel int* A pointer to the integer indicating the adapter's communication level.
AdapterReq LL_AdapterReqUsage char* A pointer to a string containing the requested adapter usage.
Cluster LL_ClusterGetFirstResource LL_element* A pointer to the element associated with the first resource.
Cluster LL_ClusterGetNextResource LL_element* A pointer to the element associated with the next resource.
Cluster LL_ClusterDefinedResources char** A pointer to an array containing the names of consumable resources defined in the cluster. The array ends with a NULL string.
Cluster LL_ClusterDefinedResourceCount int* A pointer to an integer indicating the number of consumable resources defined in the cluster.
Cluster LL_ClusterSchedulingResources char** A pointer to an array containing the names of consumable resources considered by the scheduler for the cluster. The array ends with a NULL string.
Cluster LL_ClusterSchedulingResourceCount int* A pointer to an integer indicating the number of consumable resources considered by the scheduler for the cluster.
Credential LL_CredentialGid int* A pointer to an integer containing the UNIX gid of the user submitting the job.
Credential LL_CredentialGroupName char* A pointer to a string containing the UNIX group name of the user submitting the job.
Credential LL_CredentialUid int* A pointer to an integer containing the UNIX uid of the person submitting the job.
Credential LL_CredentialUserName char* A pointer to a string containing the user ID of the user submitting the job.
Job LL_JobCredential LL_element* A pointer to the element associated with the job credential.
Job LL_JobGetFirstStep LL_element* A pointer to the element associated with the first step of the job, to be used in subsequent ll_get_data calls.
Job LL_JobGetNextStep LL_element* A pointer to the element associated with the next step.
Job LL_JobName char* A pointer to a character string containing the job name.
Job LL_JobStepCount int* A pointer to an integer indicating the number of steps connected to the job.
Job LL_JobStepType int* A pointer to an integer indicating the type of job, which can be INTERACTIVE_JOB or BATCH_JOB.
Job LL_JobSubmitHost char* A pointer to a character string containing the name of the host machine from which the job was submitted.
Job LL_JobSubmitTime time_t* A pointer to the time_t structure indicating when the job was submitted.
Job LL_JobVersionNum int* A pointer to an integer indicating the job's version number
Machine LL_MachineAdapterList char** A pointer to an array containing the list of adapters associated with the machine. The array ends with a NULL string.
Machine LL_MachineArchitecture char* A pointer to a string containing the machine architecture.
Machine LL_MachineAvailableClassList char** A pointer to an array containing the currently available job classes defined on the machine. The array ends with a NULL string.
Machine LL_MachineConfiguredClassList char** A pointer to an array containing the initiators on the machine. The array ends with a NULL string.
Machine LL_MachineCPUs int* A pointer to an integer containing the number of CPUs on the machine.
Machine LL_MachineDisk int* A pointer to an integer indicating the disk space in KBs on the machine.
Machine LL_MachineFeatureList char** A pointer to an array containing the features defined on the machine. The array ends with a NULL string.
Machine LL_MachineFreeRealMemory int* A pointer to an integer indicating the amount of free real memory in MBs on the machine.
Machine LL_MachineGetFirstAdapter LL_element* A pointer to the element associated with the machine's first adapter.
Machine LL_MachineGetFirstResource LL_element* A pointer to the element associated with the machine's first resource.
Machine LL_MachineGetNextAdapter LL_element* A pointer to the element associated with the machine's next adapter.
Machine LL_MachineGetNextResource LL_element* A pointer to the element associated with the machine's next resource.
Machine LL_MachineKbddIdle int* A pointer to an integer indicating the number of seconds since the kbdd daemon detected keyboard mouse activity.
Machine LL_MachineLoadAverage double* A pointer to a double containing the load average on the machine.
Machine LL_MachineMaxTasks int* A pointer to an integer indicating the maximum number of tasks this machine can run at one time.
Machine LL_MachineMachineMode char* A pointer to a string containing the configured machine mode.
Machine LL_MachineName char* A pointer to a string containing the machine name.
Machine LL_MachineOperatingSystem char* A pointer to a string containing the operating system on the machine.
Machine LL_MachinePagesFreed int* A pointer to an integer indicating the number of pages freed per second by the page replacement algorithm.
Machine LL_MachinePagesPagedIn int* A pointer to an integer indicating the number of pages paged in per second from paging space.
Machine LL_MachinePagesPagedOut int* A pointer to an integer indicating the number of pages paged out per second to paging space.
Machine LL_MachinePagesScanned int* A pointer to an integer indicating the number of pages scanned per second by the page replacement algorithm.
Machine LL_MachinePoolList int** A pointer to an array indicating the pool numbers to which this machine belongs. The size of the array can be determined by using LL_MachinePoolListSize.
Machine LL_MachinePoolListSize int* A pointer to an integer indicating the numbers of pools configured for the machine.
Machine LL_MachineRealMemory int* A pointer to an integer indicating the physical memory in MBs on the machine.
Machine LL_MachineScheddRunningJobs int* A pointer to an integer indicating a list of the running jobs assigned to schedd.
Machine LL_MachineScheddState int* A pointer to an integer indicating the machine's schedd state.
Machine LL_MachineScheddTotalJobs int* A pointer to an integer indicating the total number of jobs assigned to the schedd.
Machine LL_MachineSpeed double* A pointer to a double containing the configured speed of the machine.
Machine LL_MachineStartdRunningJobs int* A pointer to an integer containing the number of running jobs known by the startdd daemon.
Machine LL_MachineStartdState char* A pointer to a string containing the state of the startdd daemon.
Machine LL_MachineStepList char** A pointer to an array containing the steps running on the machine. The array ends with a NULL string.
Machine LL_MachineTimeStamp time_t* A pointer to a time_t structure indicating the time the machine last reported to the negotiator.
Machine LL_MachineVirtualMemory int* A pointer to an integer indicating the free swap space in KBs on the machine.
Node LL_NodeGetFirstTask LL_element* A pointer to the element associated with the first task for this node.
Node LL_NodeGetNextTask LL_element* A pointer to the element associated with the next task for this node.
Node LL_NodeInitiatorCount int* A pointer to an integer indicating the number of tasks running on the node.
Node LL_NodeMaxInstances int* A pointer to an integer indicating the maximum number of machines requested.
Node LL_NodeMinInstances int* A pointer to an integer indicating the minimum number of machines requested.
Node LL_NodeRequirements char* A pointer to a string containing the node requirements.
Node LL_NodeTaskCount int* A pointer to an integer indicating the different types of tasks running on the node.
Resource LL_ResourceAvailableValue int* A pointer to an integer indicating the value of available resources.
Resource LL_ResourceName char* A pointer to a string containing the resource name.
Resource LL_ResourceInitialValue int* A pointer to an integer indicating the initial resource value.
ResourceReq LL_ResourceRequirementName char* A pointer to a string containing the resource requirement name.
ResourceReq LL_ResourceRequirementValue int* A pointer to an integer indicating the value of the resource requirement.
Step LL_StepAccountNumber char* A pointer to a string containing the account number specified by the user submitting the job.
Step LL_StepComment char* A pointer to a string indicating the comment specified by the user submitting the job.
Step LL_StepCompletionCode int* A pointer to an integer indicating the completion code of the step.
Step LL_StepCompletionDate time_t* A pointer to a time_t structure indicating the completion date of the step.
Step LL_StepCoreLimitHard int* A pointer to an integer indicating the core hard limit set by the user in the core_limit keyword.
Step LL_StepCoreLimitSoft int* A pointer to an integer indicating the core soft limit set by the user in the core_limit keyword.
Step LL_StepCpuLimitHard int* A pointer to an integer indicating the CPU hard limit set by the user in the cpu_limit keyword.
Step LL_StepCpuLimitSoft int* A pointer to an integer indicating the CPU soft limit set by the user in the cpu_limit keyword.
Step LL_StepCpuStepLimitHard int* A pointer to an integer indicating the CPU step hard limit set by the user in the job_cpu_limit keyword.
Step LL_StepCpuStepLimitSoft int* A pointer to an integer indicating the CPU step soft limit set by the user in the job_cpu_limit keyword.
Step LL_StepDataLimitHard int* A pointer to an integer indicating the data hard limit set by the user in the data_limit keyword.
Step LL_StepDataLimitSoft int* A pointer to an integer indicating the data soft limit set by the user in the data_limit keyword.
Step LL_StepDispatchTime time_t* A pointer to a time_t structure indicating the time the negotiator dispatched the job.
Step LL_StepEnvironment char* A pointer to a string containing the environment variables set by the user in the executable.
Step LL_StepErrorFile char* A pointer to a string containing the standard error file name used by the executable.
Step LL_StepExecSize int* A pointer to an integer indicating the executable size.
Step LL_StepFileLimitHard int* A pointer to an integer indicating the file hard limit set by the user in the file_limit keyword.
Step LL_StepFileLimitSoft int* A pointer to an integer indicating the file soft limit set by the user in the file_limit keyword.
Step LL_StepGetFirstAdapterReq LL_element* A pointer to the element associated with the first adapter requirement.
Step LL_StepGetFirstMachine LL_element* A pointer to the element associated with the first machine in the step.
Step LL_StepGetFirstNode LL_element* A pointer to the element associated with the first node of the step.
Step LL_StepGetFirstSwitchTable LL_element* A pointer to the element associated with the first switch table for this step.
Step LL_StepGetMasterTask LL_element* A pointer to the element associated with the master task of the step.
Step LL_StepGetNextAdapterReq LL_element* A pointer to the element associated with the next adapter requirement.
Step LL_StepGetNextMachine LL_element* A pointer to the element associated with the next machine of the step.
Step LL_StepGetNextNode LL_element* A pointer to the element associated with the next node of the step.
Step LL_StepGetNextSwitchTable LL_element* A pointer to the element associated with the next switch table for this step.
Step LL_StepHoldType int* A pointer to an integer indicating the hold state of the step (user, system, etc). The value returned is in the HoldType enum.
Step LL_StepHostList char** A pointer to an array containing the list of hosts in the host.list file associated with the step. The array ends with a null string.
Step LL_StepID char* A pointer to a string containing the ID of the step.
Step LL_StepImageSize int* A pointer to an integer indicating the image size of the executable.
Step LL_StepInputFile char* A pointer to a string containing the standard input file name used by the executable.
Step LL_StepIwd char* A pointer to a string containing the initial working directory name used by the executable.
Step LL_StepJobClass char* A pointer to a string containing the class of the step.
Step LL_StepLoadLevelerGroup char* A pointer to a string containing the name of the LoadLeveler group specified by the step.
Step LL_StepMachineCount int* A pointer to an integer indicating the number of machines assigned to the step.
Step LL_StepMessages char* A pointer to a string containing a list of messages from LL
Step LL_StepName char* A pointer to a string containing the name of the step.
Step LL_StepNodeCount int* A pointer to an integer indicating the number of node objects associated with the step.
Step LL_StepNodeUsage int* A pointer to an integer indicating the node usage specified by the user, which can be SHARED or NOT_SHARED.
Step LL_StepOutputFile char* A pointer to a character string containing the standard output file name used by the executable.
Step LL_StepParallelMode int* A pointer to an integer indicating the mode of the step.
Step LL_StepPriority int* A pointer to an integer indicating the priority of the step.
Step LL_StepRssLimitHard int* A pointer to an integer indicating the RSS hard limit set by the user in the rss_limit keyword.
Step LL_StepRssLimitSoft int* A pointer to an integer indicating the RSS soft limit set by the user in the rss_limit keyword.
Step LL_StepShell char* A pointer to a character string containing the shell name used by the executable.
Step LL_StepStackLimitHard int* A pointer to an integer indicating the stack hard limit set by the user in the stack_limit keyword.
Step LL_StepStackLimitSoft int* A pointer to an integer indicating the stack soft limit set by the user in the stack_limit keyword.
Step LL_StepStartCount int* A pointer to an integer indicating the number of times the step has been started.
Step LL_StepStartDate time_t* A pointer to a time_t structure indicating the value the user specified in the startdate keyword.
Step LL_StepState int* A pointer to an integer indicating the state of the Step (Idle, Pending, Starting, etc.) The value returned is in the StepState enum.
Step LL_StepTaskInstanceCount int* A pointer to an integer indicating the number of task instances in the step. This is only available from the schedd daemon.
Step LL_StepWallClockLimitHard int* A pointer to an integer indicating the wall clock hard limit set by the user in the wall_clock_limit keyword.
Step LL_StepWallClockLimitSoft int* A pointer to an integer indicating the wall clock soft limit set by the user in the wall_clock_limit keyword.
Task LL_TaskExecutable char* A pointer to a string containing the name of the executable.
Task LL_TaskExecutableArguments char* A pointer to a string containing the arguments passed by the user in the executable.
Task LL_TaskGetFirstResourceRequirement LL_element A pointer to the element associated with the first resource requirement.
Task LL_TaskGetFirstTaskInstance LL_element* A pointer to the element associated with the first task instance.
Task LL_TaskGetNextResourceRequirement LL_element* A pointer to the element associated with the next resource requirement.
Task LL_TaskIsMaster int* A pointer to an integer indicating whether this is the master task.
Task LL_TaskTaskInstanceCount int* A pointer to an integer indicating the number of task instances.
Task LL_TaskGetNextTaskInstance LL_element* A pointer to the element associated with the next task instance.
Task Instance LL_TaskInstanceAdapterCount int* A pointer to the integer indicating the number of adapters.
Task Instance LL_TaskInstanceGetFirstAdapter LL_element* A pointer to the element associated with the first adapter.
Task Instance LL_TaskInstanceGetFirstAdapterUsage LL_element* A pointer to the element associated with the first adapter usage.
Task Instance LL_TaskInstanceGetNextAdapter LL_element* A pointer to the element associated with the next adapter.
Task Instance LL_TaskInstanceGetNextAdapterUsage LL_element* A pointer to the element associated with the next adapter usage.
Task Instance LL_TaskInstanceMachineName char* A pointer to the string indicating the machine assigned to a task.
Task Instance LL_TaskInstanceTaskID int* A pointer to the integer indicating the task ID.


[ Top of Page | Previous Page | Next Page | Table of Contents | Index ]