# 1 Introduction

## 1.1 Purpose
This SRS describes the requirements and specifications of Libra, an Economy-Driven Cluster Scheduler. It explains the functional features of the scheduler, along with interface details, design constraints, and related considerations such as performance characteristics. The SRS is intended for users and owners of high-performance clusters, cluster management software, job schedulers, and grid resources.

## 1.2 Scope
The Libra Scheduler is intended to work as an add-on to the queuing, scheduling, and resource managing module of the open-source Sun Grid Engine cluster management system, previously known as Codine. The scheduler will offer market-based economy-driven service for managing batch jobs on clusters by scheduling CPU time according to user utility rather than system performance considerations. Hence, the main objective of Libra is to provide Quality of Service (QoS) computational economy in cluster computing. As part of the project, the Libra Scheduler will only manage sequential and embarrassingly parallel batch jobs to be run on a homogenous Linux cluster, although its functionality can be adapted to schedule resources other than CPU time, even on a heterogeneous cluster. To provide QoS to users, there will be no mechanism for users to interact with each other and bargain on the use of resources according to their considerations, as is provided in a grid-computing environment by projects like Nimrod/G.

## 1.3 Product overview

### 1.3.1 Product perspective
Libra forms part of a larger system comprising the Sun Grid Engine cluster management system that runs on a Linux-based cluster. SGE is responsible for receiving the jobs submitted by the user and delegating them to Libra for scheduling and placing on appropriate workstations or execution hosts. Libra communicates its decision regarding workstation allocation to the resource manager, which then dispatches the job to the chosen workstation. Once assignment to a workstation has occurred, Libra is responsible for implementing the scheduling policy on the jobs executing at the workstations. No modifications to the Linux kernel are required.

#### System interfaces
Libra interfaces with the Sun Grid Engine cluster management system, which handles job submissions and resource management.

#### User interfaces
There will be two user types – the cluster user and the cluster administrator – each of which will have its own corresponding interface. The minimal requirements are that the cluster user would be able to interact with the system through the Linux command prompt, or through the interface provided by the Sun Grid Engine cluster management system.

#### Hardware interfaces
All hardware interfaces of Libra will be those of the Sun Grid Engine on top of which it will be running.

#### Software interfaces
Libra will directly interface with the modified Sun Grid Engine cluster management system, version 5.3. For the execution of embarrassingly parallel jobs, the PVM (Parallel Virtual Machine) and MPI (Message Passing Interface) libraries will be used by the cluster.

#### Communications interfaces
Libra will utilize the communications architecture of Sun Grid Engine itself.

### 1.3.2 Product functions
The main purpose of the Libra scheduler is to maximize user utility. The scheduler will allocate jobs based on the job parameters, which are job specifications submitted by the user with the job, including location of the executable and input data sets, where standard output is to be placed, system type, maximum length of run (execution time), and whether the job is sequential or embarrassingly parallel. The scheduler will be QoS driven, aiming to optimize resource utilization within user-imposed constraints. The two job parameters most relevant to the scheduling decisions will be the budget allocated by the user to the process and the deadline.

### 1.3.3 User characteristics
There are essentially two classes of users for the Libra Scheduler used with the Sun Grid Engine cluster management system: the user who wishes to submit jobs for the cluster and the administrator who oversees scheduling and cluster usage. The user needs to know the exact nature of the submitted job, such as the execution time as well as resources required, and must possess the technical know-how to use the interface for submitting jobs. The administrator must be an advanced cluster operator, fully qualified in using Linux, SGE, and the Libra Scheduler.

### 1.3.4 Limitations
The current constraints on the project are related to the provision of hardware resources to implement and test a high-performance cluster. At present, a network of four Pentium-III workstations, with a 128 Mb RAM, serves as the cluster, with SGE running on top of the Linux operating system. For better performance analysis, a larger number of dedicated workstations would be beneficial. For testing purposes, a simulating tool needs to be used which may have to be specially designed if a generic one is not readily and freely available.

## 1.4 Definitions
- **Cluster/Cluster Computing**: Connecting two or more computers together to take advantage of combined computational power and resources.
- **QoS**: Quality of Service – meeting what users actually want, thus maximizing their utility.
- **Computational Economy**: Inclusion of user-specified QoS parameters with jobs so that resource management is based on a user-centric approach.
- **Linux**: An open-source operating system.
- **Grid Computing**: Using a grid for processing jobs and processes.
- **Bid-based Proportional Resource-Sharing Model**: An economic model for allocating resources between competing users based on criteria such as deadline and budget.
- **Stride Scheduling**: A scheduling algorithm to enforce resource allocations proportional to a user’s priority or share.
- **Process Migration**: Moving a job from one computer system to another without restarting the job.
- **Sequential Jobs**: Jobs that must be run on a single node and cannot be split into separate jobs.
- **Embarrassingly Parallel Jobs**: Parallel jobs that can be split up and performed on separate nodes with minimal inter-job communication.
- **Job accounting**: A method of quantifying the system resources used by a job.
- **GUI**: Graphical user interface.
- **CPU**: Central processing unit of a computer.
- **SGE**: Sun Grid Engine cluster management system.
- **Open-source software**: Software for which the code is freely available for use and research.
- **Homogenous cluster**: A cluster in which the nodes or workstations have uniform characteristics.

# 2 References
1. R. Buyya, D. Abramson, and J. Giddy, Nimrod/G: An Architecture for a Resource Management and Scheduling System in a Global Computational Grid, HPC ASIA’2000, China, IEEE CS Press, USA, 2000.
2. R. Buyya, D. Abramson, J. Giddy, An Economy Driven Resource Management Architecture for Global Computational Power Grids, The 2000 International Conference on Parallel and Distributed Processing Techniques and Applications (PDPTA 2000), Las Vegas, USA, June 26-29, 2000.
3. R. Buyya, D. Abramson, and J. Giddy, An Economy Grid Architecture for Service-Oriented Grid Computing, 10th IEEE International Heterogeneous Computing Workshop (HCW 2001), with IPDPS 2001, SF, California, USA, April 2001.
4. Rajkumar Buyya, Heinz Stockinger, Jonathan Giddy, and David Abramson, Economic Models for Management of Resources in Peer-to-Peer and Grid Computing, Monash University.
5. B.N. Chun and D.E. Culler, Market-based proportional resource sharing for clusters. Submitted for publication, September 1999.

# 3 Requirements

## 3.1 Functions
The Libra scheduler includes several functional features:
- **Submit Job**: Users submit jobs with parameters such as budget and deadline.
- **View Job Status**: Users and administrators can view job details and execution progress.
- **Delete/Change Job**: Users and administrators can cancel or modify job parameters.
- **Initialize Job**: Prepares the scheduler for scheduling and executing a job.
- **Accept/Reject Job**: Determines if a job can be accepted based on budget and deadline.
- **Calculate Scheduling Information**: Uses the Stride Scheduling Algorithm to allocate resources.
- **Determine Execution Host**: Decides on which node and queue the job will be placed.
- **Dispatch Job**: Inserts the job into the queue on the execution host.
- **Update Cluster Status**: Updates the cluster status when a job is scheduled or removed.
- **Execute Job**: Manages time-slicing between jobs using the stride-scheduling algorithm.

## 3.2 Performance requirements
- **Response time**: The maximum response time for the submission of a job will be 1 minute.
- **Capacity**: The maximum number of jobs schedulable is limited only by the capacity of the nodes to fulfill the jobs’ deadlines.
- **Deadline sensitivity**: The Libra scheduler will ensure that all jobs are completed with a 10% error allowance.
- **Cost sensitivity**: The maximum cost payable as submitted by the user will be the maximum cost charged to the user.

## 3.3 Usability requirements
[N/A]

## 3.5 Logical database requirements
[N/A]

## 3.6 Design constraints
- **Parent Component**: The Libra scheduler will be a sub-component of SGE.
- **Software Language**: All coding will be done in standard C.
- **Scheduling Constraints**: Exhaustive searches of the entire set of combinations of jobs will not be done. Heuristics will be developed for this scheduling problem.

## 3.7 Software system attributes
- **Reliability**: The scheduler will not support job migration for the purpose of decreasing resource fragmentation. Maximum bug rate is 1 bug/KLOC.
- **Availability**: In case of system outage, the cluster will be down while the Linux operating system boots up, taking less than five minutes.
- **Security**: The Libra scheduler will ensure the privacy of user job status and ensure full control over job execution.
- **Maintainability**: All code will be written as specified by the Hungarian Naming Convention and as required by the GNU General Purpose License.
- **Portability**: The entire Libra project is open source, and hence no component of it will be purchased.

## 3.8 Supporting information
- **Online User Documentation and Help System Requirements**: All documentation will be made in accordance with requirements pertaining to open source software under the GNU General Purpose License. Additionally, online user documentation will be in the form of man pages accessible through Linux.
- **Licensing Requirements**: Libra will be released under a GPL license and will be open-source.
- **Legal, Copyright and Other Notices**: Sun Grid Engine (SGE) is a copyright trademark of Sun Microsystems, Inc. Libra Scheduler is a copyright trademark of Mr. Rajkumar Buyya, Monash University. MPI is a copyright of the University of Chicago and Mississippi State University. PVM is a copyright of the University of Tennessee, Oak Ridge National Laboratory, and Emory University.

# 4 Verification

## 4.1 Functions
[N/A]

## 4.2 Performance requirements
[N/A]

## 4.3 Usability requirements
[N/A]

## 4.5 Logical database requirements
[N/A]

## 4.6 Design constraints
[N/A]

## 4.7 Software system attributes
[N/A]

# 5 Appendices

## 5.1 Assumptions and dependencies
- The workability of the Sun Grid Engine cluster management system modules such as those dealing with process migration with the scheduling policies provided by the Libra Scheduler is assumed.
- A basic module of job accounting and payment considerations will be provided, as they are not the focus of the scheduler.
- Users are assumed to have a fair estimate of job execution times, so that the decision to accept or reject a job is facilitated.

## 5.2 Acronyms and abbreviations
- **Cluster/Cluster Computing**: Connecting two or more computers together to take advantage of combined computational power and resources.
- **QoS**: Quality of Service – meeting what users actually want, thus maximizing their utility.
- **Computational Economy**: Inclusion of user-specified QoS parameters with jobs so that resource management is based on a user-centric approach.
- **Linux**: An open-source operating system.
- **Grid Computing**: Using a grid for processing jobs and processes.
- **Bid-based Proportional Resource-Sharing Model**: An economic model for allocating resources between competing users based on criteria such as deadline and budget.
- **Stride Scheduling**: A scheduling algorithm to enforce resource allocations proportional to a user’s priority or share.
- **Process Migration**: Moving a job from one computer system to another without restarting the job.
- **Sequential Jobs**: Jobs that must be run on a single node and cannot be split into separate jobs.
- **Embarrassingly Parallel Jobs**: Parallel jobs that can be split up and performed on separate nodes with minimal inter-job communication.
- **Job accounting**: A method of quantifying the system resources used by a job.
- **GUI**: Graphical user interface.
- **CPU**: Central processing unit of a computer.
- **SGE**: Sun Grid Engine cluster management system.
- **Open-source software**: Software for which the code is freely available for use and research.
- **Homogenous cluster**: A cluster in which the nodes or workstations have uniform characteristics.