# US 10,503,704 B2 · Isolating resources and performance in a database management system

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

- Number: US 10,503,704 B2
- Document ID: US10503704B2
- Status: Granted
- Kind: B2
- Application number: 15/252,972
- Filed: 2016-08-31
- Published: 2016-12-22
- Granted: 2019-12-10
- Earliest claimed: 2013-01-23
- Assignees: Microsoft Technology Licensing, LLC
- Applicants: Microsoft Technology Licensing, LLC
- Inventors: Vivek R. Narasayya; Sudipto Das; Feng Li; Manoj A. Syamala; Hyunjung Park; Surajit Chaudhuri; Badrish Chandramouli
- Web page: https://patentgrep.com/patent/US10503704B2

## CPC

- G06F 16/21: Design, administration or maintenance of databases
- G06F 11/302: {where the computing system component is a software system}
- G06F 11/3409: {for performance assessment}
- G06F 11/3442: {for planning or managing the needed capacity}
- G06F 11/3495: {for systems}
- G06F 16/217: {Database tuning (G06F16/2282 takes precedence; database performance monitoring G06F11/3409)}
- G06F 16/2379: {Updates performed during online database operations; commit processing}
- G06F 16/24561: {Intermediate data storage techniques for performance improvement}
- G06F 11/3485: {for I/O devices}
- G06F 2201/80: Database-specific techniques
- G06F 2201/815: Virtual
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Techniques for tenant performance isolation in a multiple-tenant database management system are described. These techniques may include providing a reservation of server resources. The server resources reservation may include a reservation of a central processing unit (CPU), a reservation of Input/Ouput throughput, and/or a reservation of buffer pool memory or working memory. The techniques may also include a metering mechanism that determines whether the resource reservation is satisfied. The metering mechanism may be independent of an actual resource allocation mechanism associated with the server resource reservation.

## Claims

### Claim 1

A computing device configured to determine whether a tenant is actually allocated a previously reserved allocation of server resources, the computing device comprising:
one or more processors; and
one or more computer-readable storage devices storing instructions that, when executed by the one or more processors, cause the computing device to:
determine a reserved allocation of a server resource for a tenant in a multi-tenant environment, the reserved allocation including a reserved amount of the server resource in a database server process to allocate for the tenant, the reserved allocation of a server resource including at least a minimum guaranteed central processing unit (CPU) utilization allocation, a minimum guaranteed amount of working memory, and a minimum guaranteed amount of input/output (I/O) throughput;
receive, from the tenant, a request to utilize the server resource;
determine, based at least in part on the request, a workload for the tenant;
determine that the workload of the tenant has a sufficient demand to consume the guaranteed CPU utilization;
meter an actual allocation of an actual amount of the server resource for the tenant; and
determine, based at least in part on metering the actual allocation, including the CPU utilization, the minimum guaranteed amount of working memory, and the minimum guaranteed amount of I/O throughput, whether the tenant is actually allocated the reserved amount of the server resource.

### Claim 2 (depends on 1)

The computing device of claim 1, wherein the instructions, when executed by the one or more processors, further cause the computing device to:
determine that a workload for the tenant includes sufficient demand to consume the amount of the server resource;
determine that the tenant is not allocated the amount of the server resource; and
based at least in part on determining that the tenant is not allocated the amount of the server resource, establish an accountability of a server associated with the database server resource.

### Claim 3 (depends on 1)

The computing device of claim 1, wherein the server resource includes at least one of, network bandwidth, or a data/instruction cache of a server associated with the database server process.

### Claim 4 (depends on 1)

The computing device of claim 1, wherein metering the allocation comprises metering the allocation of the amount of the server resource based, at least in part, on a metering algorithm that is associated with the server resource.

### Claim 5 (depends on 1)

The computing device of claim 1, wherein metering the allocation comprises metering the allocation of the server resource based at least in part on a time interval, and wherein the instructions, when executed by the one or more processors, further cause the computing device to:
determine that the tenant is not allocated the amount of the server resource during the time interval.

### Claim 6 (depends on 1)

The computing device of claim 1, wherein the instructions, when executed by the one or more processors, further cause the computing device to:
determine that the server fails to allocate the amount of the CPU utilization to the tenant.

### Claim 7 (depends on 1)

The computing device of claim 1, the amount of the server resource comprising an amount of I/O throughput associated with a server during a metering interval, and the request including a pending I/O request, and wherein the instructions, when executed by the one or more processors, further cause the computing device to:
determine that an I/O throughput associated with the pending I/O request of the tenant is less than the amount of the I/O throughput; and
determining that the tenant is not allocated the amount of the server resource.

### Claim 8

A computer-implemented method for determining whether a tenant is allocated a reserved amount of server resources comprising:
providing a reservation of a reserved amount of a server resource for a tenant in a multi-tenant environment, the server resource including each of a central processing unit (CPU) utilization allocation, a minimum guaranteed amount of working memory, a minimum guaranteed amount of input/output (I/O) throughput, a minimum network bandwidth;
receiving, from the tenant, a request to utilize the server resource;
determining, based at least in part on the request, that the tenant has sufficient demand to consume the reserved amount of the server resource;
determining an actual amount of the server resource actually allocated to the tenant while servicing the request to utilize the server resource;
comparing the actual amount and the reserved amount of the server resource; and
determining that the tenant is not allocated the reserved amount of the server resource.

### Claim 9 (depends on 8)

The computer-implemented method of claim 8, further comprising:
metering, based at least in part on the request, the reservation of the server resource,
and wherein determining that the tenant is not allocated the amount of the server resource is based, at least in part, on metering the reservation.

### Claim 10 (depends on 9)

The computer-implemented method of claim 9, wherein metering the reservation of the server resource comprises metering the reservation of the server resource based, at least in part, on a metering algorithm that is associated with the server resource.

### Claim 11 (depends on 9)

The computer-implemented method of claim 9, wherein:
metering the reservation of the server resource comprises metering the reservation of the server resource based, at least in part, on a time interval; and
determining that the tenant is not allocated the server resource comprises determining that the tenant is not allocated the server resource during the time interval.

### Claim 12 (depends on 8)

The computer-implemented method of claim 8, further comprising establishing an accountability of the server for the tenant.

### Claim 13 (depends on 8)

The computer-implemented method of claim 8, wherein the computer-implemented method further comprises:
determining, based at least in part on the request, that the tenant has a running task or a runnable task on the core of the server,
and wherein determining that the tenant is not allocated the amount of the server resource comprises determining that the server fails to provide the tenant with the guaranteed allocation of CPU utilization.

### Claim 14 (depends on 1)

The computer-implemented method of claim 1, the reservation of the amount of the server resource including a resource reservation of an amount of I/O throughput of an I/O throughput capacity of the server, and wherein the computer-implemented method further comprises:
determining, based at least in part on the request, that the tenant has a pending I/O request,
and wherein determining that the tenant is not allocated the amount of the server resource comprises determining that an I/O throughput associated with the pending I/O request of the tenant is less than the amount of the I/O throughput of the resource reservation.

### Claim 15 (depends on 1)

The computer-implemented method of claim 1, wherein the reservation of the amount of the server resource includes a resource reservation of an amount of at least one of a buffer pool or a working memory of the server.

### Claim 16

A device configured to determine whether a tenant is allocated a reserved amount of server resources and provide for accountability of the server, the device comprising:
one or more processors; and
one or more computer-readable media storing instructions that, when executed by
the one or more processors, cause the computing device to:
provide a reservation of a reserved amount of a server resource to a tenant, the reserved amount of a server resource including at least a minimum guaranteed central processing unit (CPU) utilization allocation, a minimum guaranteed amount of working memory, and a minimum guaranteed amount of input/output (I/O) throughput;
receive a request to utilize the server resource;
determine, based at least in part on the request, a workload for the tenant;
determine that the workload of the tenant has a sufficient demand to consume the guaranteed CPU utilization;
determine, based at least in part on receiving the request, that a server does not allocate the reserved amount of the server resource to the tenant; and
establish an accountability of the server for the tenant.

### Claim 17 (depends on 16)

The device of claim 16, wherein the server resource includes at least one of network bandwidth, or a data/instruction cache of the server.

### Claim 18 (depends on 16)

The device of claim 16, wherein the instructions, when executed by the one or more processors, further cause the computing device to:
meter the reservation of the amount of the server resources; and
determine, based at least in part on metering the reservation, whether the server allocates the amount of the server resource to the client.

### Claim 19 (depends on 16)

The device of claim 16, wherein the amount of the server resource comprises an amount of CPU time for which a task of the tenant runs on a core of a CPU of the server, and wherein the instructions, when executed by the one or more processors, further cause the device to:
determine, based at least in part on the request, a workload for the tenant; and
determine that the workload of the tenant has a sufficient demand to consume the amount of CPU time,
and wherein determining that the server does not allocate the amount of the server resource to the client comprises determining that the server fails to allocate the amount of the CPU time to the tenant.

### Claim 20 (depends on 16)

The device of claim 16, wherein the amount of the server resource comprises an amount of I/O throughput associated with the server during a metering interval, and wherein the instructions, when executed by the one or more processors, further cause the device to:
determine, based at least in part on the request, that the tenant has a pending I/O request,
and wherein determining that the server does not allocate the amount of the server resource to the client comprises determining that an I/O throughput associated with the pending I/O request of the tenant is less than the amount of the I/O throughput.
