NASA Logo, National Aeronautics and Space Administration



Surfer is an extensible framework designed to select and rank grid resources where a resource is defined to be anything that may need selecting such as compute resources, storage resources, data resources, etc. The user specifies the set of resource types desired, the constraints that must hold over all the resources, and the ranking function to be used to order the resources. For each request received, Surfer returns a set of resource tuples where each tuple contains a resource instance for each resource type requested, each tuple satisfies the specified constraints, and tuples are ordered by descending values of the given ranking function.

Constraints and ranking functions are boolean and numeric expressions, respectively, utilizing a set of built-in arithmetic, boolean, and relational operators, and a set of functions supplied by information providers. Information providers are implemented independent of the framework and integrated into the system using a single configuration line. Providers supply functions of arbitrary type that represent selected information such as the number of cpus of a compute resource, free disk space of a storage resource, etc. Providers also supply queries used to generate resource sets that define the set of resources selectable. Information providers are invisible to the end user, who only sees the set of resource types selectable and the set of functions available. The framework worries about which provider is responsible for which function, whether to use queries or function calls, how results are correlated, etc.

Requests are processed in four stages. First, the composite constraint is rewritten to a set expression utilizing the function calls and queries supplied by providers. Next, the set expression is evaluated to produce the set of resource tuples meeting the constraints. Third, the resource tuples are ranked by the composite ranking function. Finally, the requested number of the highest ranked tuples are returned to the user. Once the user receives the resulting tuple set, they can then extract the identifying attributes (e.g. host name, queue type, and queue name for a compute resource) of each resource returned so that they can then utilize those resources using other services.


  • Surfer
    Surfer is a general-purpose framework for selecting and ranking grid resources based on user constraints and preferences. Surfer has no built-in bias towards any job model or selection policy, thus is suitable for inclusion in any grid environment by adding information providers knowledgeable about that environment. Information is pulled from these providers as needed allowing Surfer to efficiently handle large and complex information sources unsuitable for push-based models. Surfer has been implemented as an OGSI-compliant grid service that can also be embedded directly into Java applications through its APIs or into non-Java applications through its XML-based command-line interface.
This software is released under the terms and conditions of the NASA Open Source Agreement (NOSA) Version 1.1 or later.
Surfer NOSA Software Agreement
First Gov logo
NASA Logo -