Goal-oriented SLA scheduling policies help you configure both your workload so jobs are completed on time, and your resource distribution so users get the resources they deserve. They enable you to focus on the “what and when” of your projects, not the low-level details of “how”.
A service-level agreement (SLA) defines a service and the parameters for delivery of the service. It specifies what a service provider and a service recipient agree to, defining the relationship between the provider and recipient with respect to a number of issues, among them:
The SLA scheduling policy defines how many jobs should be run from or resources allocated to each SLA in order to meet the configured goals.
SLAs use goals that are expressed in individual service classes. A service class contains the actual configured goals for the LSF system. The SLA defines the workload (jobs, services, or resources) and users that need the work done, while the service class that addresses the SLA defines individual goals, and if applicable a time window when the service class is active.
Service-level goals can be grouped into two mutually exclusive varieties: guarantee goals which are resource based, and time-based goals which include velocity, throughput, and deadline goals. Time-based goals allow control over the number of jobs running at any one time, while resource-based goals allow control over resource allocation.
You configure the following kinds of goals:
Specific resources reserved under a guarantee for jobs within the SLA. For example, reserve 50% of a host group for use by a certain queue. Guarantee goals are resource-based.
A specified number of jobs should be completed within a specified time window. For example, run all jobs submitted over a weekend. Deadline goals are time-based.
Expressed as concurrently running jobs. For example: maintain 10 running jobs between 9:00 a.m. and 5:00 p.m. Velocity goals are well suited for short jobs (run time less than one hour). Such jobs leave the system quickly, and configuring a velocity goal ensures a steady flow of jobs through the system. Velocity goals are time-based.
Expressed as number of finished jobs per hour. For example: finish 15 jobs per hour between the hours of 6:00 p.m. and 7:00 a.m. Throughput goals are suitable for medium to long running jobs. These jobs stay longer in the system, so you typically want to control their rate of completion rather than their flow. Throughput goals are time-based.
Time-based goals can be combined and apply during different time windows. You might want to set velocity goals to maximize quick work during the day, and set deadline and throughput goals to manage longer running work on nights and over weekends. Resource-based guarantee goals cannot be combined with other types of goals.