Resource Manager

An important service provisioning task is managing the resources that you allocate to customers as part of a provisioned service.

Resources that you use with Microsoft Provisioning System include the following:

Effective resource management balances the need to guarantee service availability to customers with the need to minimize server hardware and administration costs. To help service providers accomplish this, Microsoft Provisioning System integrates resource management into the basic provisioning tasks it performs by using Microsoft Provisioning Framework (MPF) Resource Manager.

When you submit a provisioning request, Microsoft Provisioning System uses information stored in the Resource Manager database to select the most suitable resources to allocate to the customer from the pool of available resources. After allocating the resources, Microsoft Provisioning System then updates the Resource Manager database accordingly, removing the resources from the available pool and indicating to which customer they are allocated.

Information tracked by Resource Manager

As implemented by Microsoft Provisioning System, Resource Manager keeps track of the following information:

Resource Manager can be used to track many different types of resources, in addition to those in the previous list. You can extend or customize Resource Manager functionality for special purposes, as described in the MPF Software Development Kit (SDK). For more information about the SDK and how to use it, see Microsoft Provisioning Framework SDK and documentation.

How Resource Manager tracks resource information

When you deploy a new server or add a resource to it, such as disk space or an additional IP address, you record information about the new resource with Resource Manager. This is called registering the resource. The status of the resource is recorded in the Resource Manager database as "available," in other words, one that can be allocated to a customer.

When you provision a service to a customer, Microsoft Provisioning System consults the Resource Manager database for an available resource to allocate. It then records information linking the resource and the customer to whom it was allocated in the Resource Manager database. The status of the resource then becomes "allocated"; in other words, no longer available for provisioning.

When you remove a customer Web or FTP site or an Exchange mailbox, Microsoft Provisioning System notifies Resource Manager, which releases the related resources and changes their status to "available" so that they can be provisioned again.

For more information about how Microsoft Provisioning System performs provisioning tasks, see Requests, procedures, namespaces, and providers.

You can register server resources with Resource Manager by using Delegated Administration Console or by submitting a direct XML request. For more information about registering resources and tracking information about allocated resources, see Managing Exchange resources and Managing IIS resources.

Resource Manager components

The Resource Manager consists of two components: the Resource Manager database and the Resource Manager engine.

The Resource Manager database is a Microsoft SQL Server database that stores information about all resources and their attributes. The Resource Manager engine performs operations on this database to create and update existing resource information. It also implements algorithms that determine how specific resources are allocated to fulfill a request.

Resource Manager objects

The Resource Manager uses two basic entities, or objects, to manage resources:

Resource Manager provider namespaces

MPF includes the following two Resource Manager provider namespaces that implement resource management functionality:

Resource Manager architecture

Resource Manager executes XML requests received from the provisioning engine of Microsoft Provisioning Framework (MPF). Usually, these requests are part of a series of requests involving multiple areas of MPF. For example, the tasks for provisioning a new Web site include using the IIS provider to create the Web site and using Resource Manager to allocate the necessary disk space.

The following diagram shows Resource Manager architecture.

Resource Manager architecture

The two Resource Manager provider namespaces, CoreRMO and BlockModelRMO, receive the incoming XML requests. CoreRMO supports add, delete, query, and update operations for consumers and resources, as well as their respective instances, types, and groups. It also establishes mapping relationships between consumers (instances and groups) and resources (instances and groups). BlockModelRMO supports operations to define capacity for resource types and to manage allocations. For a list of procedures grouped by data type (consumers, resources, and so on), see "Resource Manager Procedure Matrix" in Microsoft Provisioning Framework SDK and documentation.

After acting on the XML requests, the two provider namespaces pass data to the Resource Manager engine, which manages transaction processing. The engine uses a compensating approach for transaction record locking. That is, the engine breaks up transactions into smaller process, prepare, commit, and rollback updates that are executed as the transaction as a whole commits or aborts. This approach minimizes the holding period for record locking, a significant consideration because installations typically have a large number of consumers relative to a small number of shared resources.

The Resource Manager database is an SQL database that contains all the resource management configuration data for resources and consumers, as well as transaction-handling data.

For more information on using these provider namespaces to implement resource management, see BlockModelRMO and CoreRMO.

The Microsoft Provisioning Framework Software Development Kit (SDK) contains additional resources to help you implement Resource Manager functionality, including appropriate resource management algorithms. For more information about finding and using the SDK, see Microsoft Provisioning Framework SDK and documentation.