Managing resources for maintenance tasks in computing systems

Systems for managing resources for maintenance tasks in computing systems are provided. One system includes a controller and memory coupled to the controller, the memory configured to store a module. The controller, when executing the module, is configured to determine an amount of available resources for use by a plurality of maintenance tasks in a computing system and divide the available resources between the plurality of maintenance tasks based on a need for each maintenance task. One method includes determining, by a central controller, an amount of available resources for use by a plurality of maintenance tasks in a computing system and dividing the available resources between the plurality of maintenance tasks based on a need for each maintenance task. Computer storage mediums including a computer program product method for managing resources for maintenance tasks in computing systems are also provided.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention relates generally to computing systems, and more particularly to systems for managing resources for maintenance tasks in computing systems.

2. Description of the Related Art

Data deduplication is an emerging field in storage systems in recent years. The core idea a data deduplication is storing single instances of duplicated data. A challenge to deduplication is to efficiently locate duplicated data patterns in typically large repositories, and to store those data patterns in an efficient deduplicated storage form.

Deduplicated data entities might become obsolete or fragmented over time. This means that the deduplicated storage systems might need to perform maintenance tasks (e.g., delete tasks or “defragment” tasks, etc.) on the deduplicated data entries or rearrange the physical storage space on which the deduplicated data entries reside.

Typically, the various maintenance tasks responsible for maintaining the deduplicated data entries are performed by a plurality of controllers. Specifically, a different controller manages each maintenance task and each controller is responsible for controlling the rate at which its maintenance task is performed. For example, a delete task that deletes deduplicated data entries at a nominal rate is managed by a first controller, while a defragment task that defragments deduplicated data entries at a physical rate is managed by a second controller. Since current computing systems utilize multiple controllers, these computing systems do not utilize system resources as efficiently as they otherwise could use system resources.

SUMMARY OF THE INVENTION

Various embodiments provide systems for managing resources for maintenance tasks. One system comprises a controller and memory coupled to the controller, the memory configured to store a module. The controller, when executing the module, is configured to determine an amount of available resources for use by a plurality of maintenance tasks in a computing system and divide the available resources between the plurality of maintenance tasks based on a need for each maintenance task.

Methods for managing resources for maintenance tasks in computing systems are also provided in various other embodiments. One method comprises determining, by a central controller, an amount of available resources for use by a plurality of maintenance tasks in a computing system and dividing the available resources between the plurality of maintenance tasks based on a need for each maintenance task.

Various other embodiments provide physical computer storage mediums (e.g., an electrical connection having one or more wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing) comprising a computer program product method for managing resources for maintenance tasks in computing systems. One physical computer storage medium comprises computer code for determining, by a central controller, an amount of available resources for use by a plurality of maintenance tasks in a computing system and computer code for dividing the available resources between the plurality of maintenance tasks based on a need for each maintenance task.

DETAILED DESCRIPTION OF THE DRAWINGS

The embodiments illustrated below provide systems and methods for managing resources for maintenance tasks. Also provided are physical computer storage mediums (e.g., an electrical connection having one or more wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing) comprising a computer program product method for managing resources for maintenance tasks in computing systems.

Turning now to the figures,FIG. 1is a block diagram of one embodiment of a system100for managing resources for maintenance tasks in a computing system50(e.g., a deduplicated storage system) coupled to system100. At least in the illustrated embodiment, system100comprises memory110coupled to a controller120via a bus130(e.g., a wired and/or wireless bus).

Memory110comprises one or more physical computer storage mediums (e.g., an electrical connection having one or more wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, and/or a magnetic storage device). In one embodiment, memory110comprises a management module1110for managing resources for maintenance tasks in computing system50.

Management module1110, in various embodiments, comprises computer-executable code for managing resources for maintenance tasks in computing system50. Management module1110may be written in any combination of one or more programming languages, including an object-oriented programming language such as Java, Smalltalk, C++, and/or the like, and conventional procedural programming languages, such as the “C” programming language or similar programming languages.

In one embodiment, management module1110comprises a resource determination mechanism1114for determining the amount of resources that are available for maintaining computing system50and a resource divider mechanism1118for dividing the determined available resources amongst a plurality of maintenance tasks for computing system50. In the various embodiments of management module1110, resource determination mechanism1114and resource divider mechanism1118are each written in computer-readable code capable of being executed by controller120.

Controller120, in one embodiment, is configured to execute the code that comprises management module1110and, particularly, resource determination mechanism1114and resource divider mechanism1118. When executing resource determination mechanism1114, controller120is configured to determine the amount of resources in computing system50that are available for use by one or more tasks (e.g., maintenance tasks) responsible for maintaining and/or servicing input/output (I/O) operations in computing system50. In one embodiment, controller120is configured to measure the nominal throughput of computing system50to determine to amount of available resources. Specifically, controller120is configured to subtract the nominal throughput from the maximum throughput of computing system50to determine the amount of resources available in computing system50.

In another embodiment, controller120is configured to count the number of input/output (I/O) operations per second that computing system50performs to determine to amount of available resources. Specifically, controller120is configured to subtract the number of I/O operations per second that computing system50is currently performing from the maximum the number of I/O operations per second that computing system50is capable of performing to determine the amount of resources available in computing system50.

In other embodiments, controller120is capable of determining the amount of available resources by using a combination of measuring the nominal throughout and the current number of I/O operations that computing system50is currently performing. That is, controller120capable of combining the measured nominal throughput and the measured number of I/O operations per second in computing system50to determine the amount of available resources in computing system50.

In one embodiment, controller120is further configured to execute resource divider mechanism1118to determine which maintenance tasks need to be performed in computing system50and to determine which resources of the determined available resources should be allocated to which maintenance tasks. Specifically, controller120is configured to determine which data processing task(s) or algorithm(s) to perform based on the maintenance needs of computing system50. For example, when there are no mission critical tasks, ninety percent (90%) of the available resources in computing system50may be allocated for deletion and/or defragmentation tasks. After the needed maintenance tasks are determined, controller120is configured to determine how to allocate the available resources amongst the, for example, maintenance tasks.

In determining how to allocate the available resources, controller120is configured to execute resource divider mechanism1118to calculate the urgency and/or need for each particular maintenance task. For example, when computing system50is experiencing a large backlog of data waiting to be deleted, the urgency of the deletion task is elevated. In response thereto, controller120is configured to allocate a larger portion of the available resources to the deletion task. For example, if the backlog of data waiting to be deleted is very large and the other maintenance tasks in computing system50are not experiencing a backlog, controller120may allocate eighty percent (80%) of the available resources or seventy-two percent (72%) of the overall resources (i.e., 90%×80%=72%) of computing system50to the delete task, while further dividing the remaining twenty percent (20%) of the available resources of computing system50to the remaining maintenance task(s) that need servicing.

Since every type of maintenance task has its own set of rate limits to control its data processing rate, controller120is configured to divide the available resources amongst the maintenance tasks based on the type of rate limit for each respective maintenance task. Specifically, controller120is configured to translate the amount of available resources determined via resource determination mechanism1114to the limit set for a particular maintenance task because, for example, a defragmentation task uses physical throughput to measure its rate, while the deletion task uses nominal throughput. Because different maintenance tasks use different rate limits, the same percentage of resources may be translated to different sets of rate limits for different maintenance tasks. For example, a defragmentation task may translate 10% of system resources to 25 physical MB/sec, while a deletion task may translate the same 10% of the system resources to 400 nominal MB/sec limitations.

Controller120is further configured to monitor computing system50to determine the amount of resources available for maintaining computing system50and adjust the amount of resources allocated to each maintenance task on a continuous, substantially continuous, or periodic basis. Specifically, as other tasks in computing system50need or release system resources, the amount of resources available for maintenance tasks may decrease or increase, respectively. Here, by continuously, substantially continuously, or periodically determining the amount of available resources in computing system50, controller120is capable of making adjustments to the amount of resources allocated to the various maintenance tasks.

Furthermore, controller120is configured to monitor the various maintenance tasks that need servicing and adjust the amount of allocated system resources to each maintenance task on a continuous, substantially continuous, or periodic basis. Specifically, as maintenance tasks are performed, the urgency of a maintenance task may increase or decrease based on the operation of computing system50. As such, controller120is configured to continuously, substantially continuously, or periodically determine the urgency of each maintenance task and make adjustments to the amount of resources allocated to the various maintenance tasks based on the latest determination.

For example, after a deletion task has been performing for a period of time, the backlog of I/O operations may have decreased such that the urgency of the deletion tasks has decreased and, as a result, the urgency of defragmentation tasks may have increased. Here, during the continuous, substantially continuous, or periodic monitoring of computing system50, controller120will decrease the amount of available resources allocated to the deletion task and increase the amount of available resources to the defragmentation task. Furthermore, the amount of increase/decrease is also dependent on the amount of available resources in computing system50, which is also monitored and/or adjusted on continuous, substantially continuous, or periodic basis.

Turning now toFIG. 2,FIG. 2is a flow diagram of one embodiment of a method200for managing resources for maintenance tasks in a computing system (e.g., computing system50). At least in the illustrated embodiment, method200begins by determining, by a controller (e.g., controller120), the workload in the computing system available for or needing maintenance (block210).

Method200further comprises determining the urgency of each maintenance task (block220). The urgency of each maintenance task, in one embodiment, is based on the amount of maintenance each particular task needs at a particular point in time. For example, a maintenance task that includes a larger backlog of operations will be deemed more urgent than a maintenance task with a smaller backlog. In another example, each maintenance task may be provided with a predetermined hierarchy of importance and the urgency is determined by combining the amount backlog and the hierarchy of importance for each respective task.

In one embodiment, method200further comprises determining the amount of those resources available for allocation to maintenance tasks (block230). After the amount of resources available for the maintenance tasks is determined, method200includes dividing the available resources amongst the maintenance tasks based on the determined urgency of each respective maintenance task (block240).

The amount of system resources allocated to each task is determined by multiplying the amount of system resources available for maintenance tasks and by the divided available resources (block250). For example, if sixty percent (60%) of the overall system resources are allocated for maintenance tasks and a particular maintenance tasks is determined to need fifty percent (50%) of the available resources, the particular maintenance task will be allocated thirty percent (30%) of the overall system resources (i.e., 60%×50%). The remaining allocated system resources will be divided amongst the remaining maintenance task(s). Specifically, the other 30% of the overall system resources will be divided amongst the other maintenance task(s) based on their respective urgencies.

Method200further comprises determining the limit for each maintenance task (block260). In other words, the amount of available resources for each maintenance task is translated from a percentage to the limit set for a particular maintenance task. For example, a defragmentation task may translate 30% of system resources to 75 physical MB/sec, while a deletion task may translate the same 30% of the system resources to 1200 nominal MB/sec limitations.

In one embodiment, method200comprises monitoring the computing system to determine the workload available for maintenance consistent with block210(block270). In another embodiment, method200comprises monitoring the computing system to determine the urgency of each maintenance task consistent with block220(block280).

With reference now toFIG. 3,FIG. 3is a diagram illustrating an algorithm300of one embodiment of pseudo code for implementing the method ofFIG. 2in computer-executable code. At least in the illustrated embodiment, algorithm300comprises a TASK_X_RATE_LIMIT_SELECTOR module310. TASK_X_RATE_LIMIT_SELECTOR module310is responsible for holding the maintenance task's limit and converting the resources given to the maintenance task to the relevant parameters. In one embodiment, in the initialization phase a controller is given the maximal limit, representing 100 percent of the system resources. In line5of TASK_X_RATE_LIMIT_SELECTOR module310, the controller determines the resources percent and translates the percentage to the maintenance task's limit by, for example, multiplying the percentage by a measurement vector.

CALC_TASK_PERCENT (task) module320calculates each maintenance task's percentage by calling to CALC_TASKS_PERCENTS330and returning the specified maintenance task's result. Notably the whole algorithm is a critical section encapsulated in mutual exclusion (see lines4,9of CALC_TASKS_PERCENTS330).

CALC_TASKS_PERCENTS ( ) module330calculates the amount available resources, which results may be cached to increase performance. Here, the mission critical workload is determined. Next, in lines7through10of CALC_TASKS_PERCENTS ( ) module330, the urgency of each maintenance task is determined. In line12of CALC_TASKS_PERCENTS ( ) module330, the overall percentage of system resources dedicated to the maintenance tasks is determined. This function takes into consideration the system workload and the urgency of each respective maintenance task. This function may use predefined values for each urgency-workload combination or compute the result using the system workload and urgency.

Line14of CALC_TASKS_PERCENTS ( ) module330calls a method that calculates the relative percentages between the maintenance tasks according to their respective urgencies. For example, in a situation that includes two maintenance tasks, a 50%-50% division is returned when the maintenance tasks have the same urgency or a 90%-10% division is returned when one maintenance task is more urgent than the other maintenance task. In lines17to20of CALC_TASKS_PERCENTS ( ) module330, each maintenance task's overall percentage is determined by multiplying the maintenance task's relative percentage and the overall system resources as calculated in line13of CALC_TASKS_PERCENTS ( ) module330.

Any combination of one or more computer-readable medium(s) may be utilized. The computer-readable medium may be a computer-readable signal medium or a physical computer-readable storage medium. A physical computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, crystal, polymer, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. Examples of a physical computer-readable storage medium include, but are not limited to, an electrical connection having one or more wires, a portable computer diskette, a hard disk, RAM, ROM, an EPROM, a Flash memory, an optical fiber, a CD-ROM, an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer-readable storage medium may be any tangible medium that can contain, or store a program or data for use by or in connection with an instruction execution system, apparatus, or device.

Computer code embodied on a computer-readable medium may be transmitted using any appropriate medium, including but not limited to wireless, wired, optical fiber cable, radio frequency (RF), etc., or any suitable combination of the foregoing. Computer code for carrying out operations for aspects of the present invention may be written in any static language, such as the “C” programming language or other similar programming language. The computer code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, or communication system, including, but not limited to, a local area network (LAN) or a wide area network (WAN), Converged Network, or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).

While one or more embodiments of the present invention have been illustrated in detail, one of ordinary skill in the art will appreciate that modifications and adaptations to those embodiments may be made without departing from the scope of the present invention as set forth in the following claims.