# US 11,307,898 B2 · Server resource balancing using a dynamic-sharing strategy

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 11,307,898 B2
- Document ID: US11307898B2
- Status: Granted
- Kind: B2
- Application number: 16/286,051
- Filed: 2019-02-26
- Published: 2020-08-27
- Granted: 2022-04-19
- Earliest claimed: 2019-02-26
- Assignees: Sap SE
- Applicants: Sap SE
- Inventors: Alain Gauthier; Martin Parent; Edgar Lott
- Web page: https://patentgrep.com/patent/US11307898B2

## CPC

- G06F 9/5038: {considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration (scheduling strategies G06F9/4881 and subgroups)}
- G06F 9/505: {considering the load}
- G06F 9/5066: {Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs (mappping at compile time, see G06F8/451)}
- G06F 9/5072: {Grid computing}
- G06F 9/5083: {Techniques for rebalancing the load in a distributed system}
- G06F 2209/5018: Thread allocation
- G06F 2209/504: Resource capping
- Y02D 10/00: Energy efficient computing, e.g. low power processors, power management or thermal management
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- Y02D: CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE

## Abstract

The present disclosure involves systems, software, and computer implemented methods for resource allocation and management. One example method includes receiving a request, including a first application priority, to run a task for an application. At least one second application priority is identified. A maximum number of parallel tasks per application priority is determined. Application priority weights are assigned to the first application priority and the second application priorities. Application priority divisors are determined, for the first application priority and the second application priorities, based on a respective application priority weight and a number of currently running applications of a respective application priority. A number of parallel tasks for the first application and other applications are determined based on the maximum number of allowable parallel tasks per application, an overall divisor, and a respective application priority weight. A number of parallel tasks are assigned to the first application.

## Claims

### Claim 1

A computer-implemented method comprising:
receiving, in a dispatching layer, a request to run a first task for a first application, the request including a first application priority;
identifying at least one second application priority of at least one currently running application, wherein the at least one second application priority is different than the first application priority;
determining a maximum number of allowable parallel tasks per application priority;
assigning application priority weights to each of the first application priority and the at least one second application priority, wherein a first application priority weight is assigned to the first application priority for the first application and at least one second application priority weight is assigned to the at least one second application priority for the at least one currently running application;
after assigning the application priority weights, determining a first application priority divisor for the first application priority and a second application priority divisor for the at least one second application priority, wherein the first application priority divisor is determined by multiplying the first application priority weight by a first number of currently running applications of the first application priority, and the second application priority divisor for the at least one second application priority is determined by multiplying the at least one second application priority weight by a second number of currently running applications of the at least one second application priority;
after determining the first application priority divisor and the second application priority divisor, determining an overall divisor based on the first application priority divisor and the second application priority divisor;
after determining the overall divisor, determining a number of parallel tasks for the first application and the at least one currently running application based on the maximum number of allowable parallel tasks per application priority, the overall divisor, and a respective application priority weight, wherein determining includes assigning a first number of parallel tasks to the first application; and
executing the first application using the assigned first number of parallel tasks.

### Claim 2 (depends on 1)

The method of claim 1, wherein an application priority weight for a higher priority application is a larger weight than an application priority weight for a lower priority application.

### Claim 3 (depends on 1)

The method of claim 1, wherein application priority weights are determined by determining accumulating in a respective application priority weight at least one fixed increment.

### Claim 4 (depends on 3)

The method of claim 3, wherein the number of fixed increments to accumulate in a given application priority weight is proportionate to the priority rank of the application priority.

### Claim 5 (depends on 1)

The method of claim 1, wherein determining the number of parallel tasks for the first application comprises:
calculating an intermediate value by multiplying the maximum number of allowable tasks per application priority by the application priority weight for the first application priority; and
dividing the intermediate value by the overall divisor.

### Claim 6 (depends on 1)

The method of claim 1, wherein the first application priority is not a highest priority application and a number of parallel tasks for a highest priority application is reduced based on the assigning of the first number of parallel tasks to the first application.

### Claim 7 (depends on 1)

The method of claim 1, wherein the method further comprises:
after assigning the application priority weights, determining the first number of currently running applications of the first application priority and the second number of currently running applications of the at least one second application priority, wherein the at least one second application priority weight is based on the first application priority weight, wherein a second number of parallel tasks for the at least one currently running application are reduced to share resources with the first number of parallel tasks for the first application, and wherein determining the overall divisor comprises:
determining the overall divisor by summing the first application priority divisor and the second application priority divisor.

### Claim 8

A system comprising:
one or more computers; and
a non-transitory computer-readable medium coupled to the one or more computers having instructions stored thereon which, when executed by the one or more computers, cause the one or more computers to perform operations comprising:
receiving, in a dispatching layer, a request to run a first task for a first application, the request including a first application priority;
identifying at least one second application priority of at least one currently running application, wherein the at least one second application priority is different than the first application priority;
determining a maximum number of allowable parallel tasks per application priority;
assigning application priority weights to each of the first application priority and the at least one second application priority, wherein a first application priority weight is assigned to the first application priority for the first application and at least one second application priority weight is assigned to the at least one second application priority for the at least one currently running application;
after assigning the application priority weights, determining a first application priority divisor for the first application priority and a second application priority divisor for the at least one second application priority, wherein the first application priority divisor is determined by multiplying the first application priority weight by a first number of currently running applications of the first application priority, and the second application priority divisor for the at least one second application priority is determined by multiplying the at least one second application priority weight by a second number of currently running applications of the at least one second application priority;
after determining the first application priority divisor and the second application priority divisor, determining an overall divisor based on the first application priority divisor and the second application priority divisor;
after determining the overall divisor, determining a number of parallel tasks for the first application and the at least one currently running application based on the maximum number of allowable parallel tasks per application priority, the overall divisor, and a respective application priority weight, wherein determining includes assigning a first number of parallel tasks to the first application; and
executing the first application using the assigned first number of parallel tasks.

### Claim 9 (depends on 8)

The system of claim 8, wherein an application priority weight for a higher priority application is a larger weight than an application priority weight for a lower priority application.

### Claim 10 (depends on 8)

The system of claim 8, wherein application priority weights are determined by determining accumulating in a respective application priority weight at least one fixed increment.

### Claim 11 (depends on 10)

The system of claim 10, wherein the number of fixed increments to accumulate in a given application priority weight is proportionate to the priority rank of the application priority.

### Claim 12 (depends on 8)

The system of claim 8, wherein determining the number of parallel tasks for the first application comprises:
calculating an intermediate value by multiplying the maximum number of allowable tasks per application priority by the application priority weight for the first application; and
dividing the intermediate value by the overall divisor.

### Claim 13 (depends on 8)

The system of claim 8, wherein the first application priority is not a highest priority application and a number of parallel tasks for a highest priority application is reduced based on the assigning of the first number of parallel tasks to the first application.

### Claim 14 (depends on 8)

The system of claim 8, wherein the instructions further cause the one or more computers to perform operations comprising:
after assigning the application priority weights, determining the first number of currently running applications of the first application priority and the second number of currently running applications of the at least one second application priority, wherein the at least one second application priority weight is based on the first application priority weight, wherein a second number of parallel tasks for the at least one currently running application are reduced to share resources with the first number of parallel tasks for the first application, and wherein determining the overall divisor comprises:
determining the overall divisor by summing the first application priority divisor and the second application priority divisor.

### Claim 15

A computer program product encoded on a non-transitory storage medium, the product comprising non-transitory, computer readable instructions for causing one or more processors to perform operations comprising:
receiving, in a dispatching layer, a request to run a first task for a first application, the request including a first application priority;
identifying at least one second application priority of at least one currently running application, wherein the at least one second application priority is different than the first application priority;
determining a maximum number of allowable parallel tasks per application priority;
assigning application priority weights to each of the first application priority and the at least one second application priority, wherein a first application priority weight is assigned to the first application priority for the first application and at least one second application priority weight is assigned to the at least one second application priority for the at least one currently running application;
after assigning the application priority weights, determining a first application priority divisor for the first application priority and a second application priority divisor for the at least one second application priority, wherein the first application priority divisor is determined by multiplying the first application priority weight by a first number of currently running applications of the first application priority, and the second application priority divisor for the at least one second application priority is determined by multiplying the at least one second application priority weight by a second number of currently running applications of the at least one second application priority;
after determining the first application priority divisor and the second application priority divisor, determining an overall divisor based on the first application priority divisor and the second application priority divisor;
after determining the overall divisor, determining a number of parallel tasks for the first application and the at least one currently running application based on the maximum number of allowable parallel tasks per application priority, the overall divisor, and a respective application priority weight, wherein determining includes assigning a first number of parallel tasks to the first application; and
executing the first application using the assigned first number of parallel tasks.

### Claim 16 (depends on 15)

The computer program product of claim 15, wherein an application priority weight for a higher priority application is a larger weight than an application priority weight for a lower priority application.

### Claim 17 (depends on 15)

The computer program product of claim 15, wherein application priority weights are determined by determining accumulating in a respective application priority weight at least one fixed increment.

### Claim 18 (depends on 17)

The computer program product of claim 17, wherein the number of fixed increments to accumulate in a given application priority weight is proportionate to the priority rank of the application priority.

### Claim 19 (depends on 15)

The computer program product of claim 15, wherein determining the number of parallel tasks for the first application comprises:
calculating an intermediate value by multiplying the maximum number of allowable tasks per application priority by the application priority weight for the first application; and
dividing the intermediate value by the overall divisor.

### Claim 20 (depends on 19)

The computer program product of claim 19, wherein the first application priority is not a highest priority application and a number of parallel tasks for a highest priority application is reduced based on the assigning of the first number of parallel tasks to the first application.
