Browse Prior Art Database

Autonomic System-Resource Management Algorithm

IP.com Disclosure Number: IPCOM000030472D
Original Publication Date: 2004-Aug-17
Included in the Prior Art Database: 2004-Aug-17
Document File: 3 page(s) / 62K

Publishing Venue

IBM

Abstract

An algorithm that controls the system resource usage of a software product to prevent shortages is described. It guarantees that the product will always shutdown in a controlled manner when resource-starvation approaches by always pre-allocating enough system resources to prevent a sudden crash. It also informs the system administrator well before this would happen. It achieves this by pre-allocating fixed size segments of system resources and monitoring how quickly they are being used up by the system.

This text was extracted from a PDF file.
This is the abbreviated version, containing approximately 43% of the total text.

Page 1 of 3

Autonomic System-Resource Management Algorithm

The algorithm disclosed pre-allocates system resources to prevent resource starvation. By monitoring how quickly system resources are being used by the software product, it can always guarantee that the system will be able to continue to function correctly for a fixed time in the future. The system administrator would set this time as part of their IT policy. By setting a time threshold rather than a system resource threshold, the system administrator can provide guarantees which are more meaningful to the business needs of end-users.

    There are currently two ways to control the usage of system resources such as shared memory, semaphores and disk space on distributed platforms.
1) Use monitoring tools to keep track of the usage of the resources by applications running on the system. Use the results to predict shortages and alter configuration parameters or the operation of applications to prevent the system running out. However, just monitoring and controlling resources at a system-level is not very flexible in that if there is a shortage of a particular resource, the only options to correct the situation is to stop one of the applications that uses that resource. To have more flexibility, applications would be required to change their use of system resources at runtime. In addition, realistically customers do not always have good monitoring tools and procedures, so applications should be written to be robust to shortages of systems resources.
2) Determine how much system resources each application running on the system will need for particular load levels and use information this to ensure that the applications will always have access to sufficient resources. The problem is that this would result in more resources being allocated than might be necessary since the required resources will be calculated based on peak load levels. Again, to be more efficient, individual applications would have to be able to adapt their usage of system resources depending on availability. Also, it is often very hard to predict the all the system resource requirements in advance for complex products.

    A better way would be for individual applications to monitor and control their own usage of system resources and adapt their usage pattern depending on the availability of the resource. Applications should also be robust to running out of resources in that they should be able to carry on operating normally for a period and shutdown gracefully if necessary.

    The algorithm is based on accessing system resources for a particular purpose in homogenous chunks (or extents) and to prepare enough chunks in advance to guarantee that enough resources will be available for normal operation for a period of time. A chunk might be a log extent or a trace file or an area of shared memory. The space allocated for each chunk is set in advance rather than being gradually increased with write operations for example. The period of t...