# US 12,118,407 B2 · High availability multi-single-tenant services

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

- Number: US 12,118,407 B2
- Document ID: US12118407B2
- Status: Granted
- Kind: B2
- Application number: 18/337,566
- Filed: 2023-06-20
- Published: 2023-10-26
- Granted: 2024-10-15
- Earliest claimed: 2023-06-20
- Assignees: Google Inc.
- Applicants: Google LLC
- Inventors: Grigor Avagyan; Dean Hildebrand
- Web page: https://patentgrep.com/patent/US12118407B2

## CPC

- G06F 9/5077: {Logical partitioning of resources; Management or configuration of virtualized resources (specific details on emulation or internal functioning of virtual machines G06F9/455)}
- G06F 9/45558: {Hypervisor-specific management and integration aspects}
- G06F 9/5027: {the resource being a machine, e.g. CPUs, Servers, Terminals}
- G06F 11/3409: {for performance assessment}
- G06F 2009/45575: {Starting, stopping, suspending or resuming virtual machine instances}
- G06F 2009/45583: {Memory management, e.g. access or allocation}
- G06F 2009/45595: {Network integration; Enabling network access in virtual machine instances}
- G06F 2209/5011: Pool
- G06F 2209/503: Resource availability
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A method includes executing a pool of primary virtual machine (VM) instances, each primary VM instance executing a corresponding individual service instance, and instantiating a shared secondary VM instance. The method includes identifying unavailability of a particular primary VM instance of the pool of primary VM instances, and causing the corresponding individual service instance executing on the particular primary VM instance to failover to the shared secondary VM instance to commence executing the corresponding individual service instance. The method includes, after the failover to the shared secondary VM instance, determining a difference between a current resource level of the shared secondary VM instance and a target resource level associated with the corresponding individual service instance, and adjusting the current resource level of the secondary VM instance based on the difference.

## Claims

### Claim 1

A computer-implemented method executed on data processing hardware that causes the data processing hardware to perform operations comprising:
executing a pool of primary virtual machine (VM) instances, each primary VM instance executing a corresponding individual service instance;
instantiating a shared secondary VM instance;
identifying unavailability of a particular primary VM instance of the pool of primary VM instances;
causing the corresponding individual service instance executing on the particular primary VM instance to failover to the shared secondary VM instance to commence executing the corresponding individual service instance; and
in response to the corresponding individual service instance failing over to the shared secondary VM instance and during execution of the individual service instance by the secondary VM instance:
determining a difference between a current resource level of the shared secondary VM instance and a target resource level associated with the corresponding individual service instance; and
adjusting the current resource level of the secondary VM instance based on the difference.

### Claim 2 (depends on 1)

The computer-implemented method of claim 1, wherein the target resource level indicates at least one of a memory resource requirement, a computing resource requirement, a network specification requirement, or a storage resource requirement.

### Claim 3 (depends on 1)

The computer-implemented method of claim 1, wherein identifying unavailability of the particular primary VM instance is based on at least one of a failure of the particular primary VM instance, a delay in re-creating the particular primary VM instance, or a planned maintenance time period for the particular primary VM instance.

### Claim 4 (depends on 1)

The computer-implemented method of claim 1, wherein:
the operations further comprise selecting the shared secondary VM instance from a shared pool of secondary VM instances; and
a number of secondary VM instances in the shared pool of secondary VM instances is less than a number of primary VM instances in the pool of primary VM instances.

### Claim 5 (depends on 4)

The computer-implemented method of claim 4, wherein the operations further comprise changing the number of secondary VM instances in the shared pool of secondary VM instances when the number of primary VM instances changes.

### Claim 6 (depends on 4)

The computer-implemented method of claim 4, wherein the operations further comprise changing the number of secondary VM instances in the shared pool of secondary VM instances based on at least one of a rate of unavailability or a period of unavailability.

### Claim 7 (depends on 4)

The computer-implemented method of claim 4, wherein the operations further comprise:
determining a corresponding VM type for each primary VM instance in the pool of primary VM instances; and
for each particular VM type in the pool of primary VM instances, instantiating at least one secondary VM instance having the particular VM type.

### Claim 8 (depends on 7)

The computer-implemented method of claim 7, wherein the particular VM type indicates at least one of a memory resource requirement, a computing resource requirement, a network specification requirement, or a storage resource requirement.

### Claim 9 (depends on 4)

The computer-implemented method of claim 4, wherein the shared pool of secondary VM instances is shared among multiple customers of a distributed system.

### Claim 10 (depends on 1)

The computer-implemented method of claim 1, wherein the secondary VM instance is passive and idle until the failover causes the secondary VM instance to commence executing the corresponding individual service instance associated with the unavailable particular primary VM instance.

### Claim 11

A system comprising:
data processing hardware;
memory hardware in communication with the data processing hardware and storing instructions that, when executed on the data processing hardware, cause the data processing hardware to perform operations comprising:
executing a pool of primary virtual machine (VM) instances, each primary VM instance executing a corresponding individual service instance;
instantiating a shared secondary VM instance;
identifying unavailability of a particular primary VM instance of the pool of primary VM instances;
causing the corresponding individual service instance executing on the particular primary VM instance to failover to the share secondary VM instance to commence executing the corresponding individual service instance; and
in response to the corresponding individual service instance failing over to the shared secondary VM instance and during execution of the individual service instance by the secondary VM instance:
determining a difference between a resource level of the shared secondary VM instance and a target resource level associated with the corresponding individual service instance; and
adjusting the current resource level of the secondary VM instance based on the difference.

### Claim 12 (depends on 11)

The system of claim 11, wherein the target resource level indicates at least one of a memory resource requirement, a computing resource requirement, a network specification requirement, or a storage resource requirement.

### Claim 13 (depends on 11)

The system of claim 11, wherein identifying unavailability of the particular primary VM instance is based on at least one of a failure of the particular primary VM instance, a delay in re-creating the particular primary VM instance, or a planned maintenance time period for the particular primary VM instance.

### Claim 14 (depends on 11)

The system of claim 11, wherein:
the operations further comprise selecting the shared secondary VM instance from a shared pool of secondary VM instances; and
a number of secondary VM instances in the shared pool of secondary VM instances is less than a number of primary VM instances in the pool of primary VM instances.

### Claim 15 (depends on 14)

The system of claim 14, wherein the operations further comprise changing the number of secondary VM instances in the shared pool of secondary VM instances when the number of primary VM instances changes.

### Claim 16 (depends on 14)

The system of claim 14, wherein the operations further comprise changing the number of secondary VM instances in the shared pool of secondary VM instances based on at least one of a rate of unavailability or a period of unavailability.

### Claim 17 (depends on 14)

The system of claim 14, wherein the operations further comprise:
determining a corresponding VM type for each primary VM instance in the pool of primary VM instances; and
for each particular VM type in the pool of primary VM instances, instantiating at least one secondary VM instance having the particular VM type.

### Claim 18 (depends on 17)

The system of claim 17, wherein the particular VM type indicates at least one of a memory resource requirement, a computing resource requirement, a network specification requirement, or a storage resource requirement.

### Claim 19 (depends on 14)

The system of claim 14, wherein the shared pool of secondary VM instances is shared among multiple customers of a distributed system.

### Claim 20 (depends on 11)

The system of claim 11, wherein the secondary VM instance is passive and idle until the failover causes the secondary VM instance to commence executing the corresponding individual service instance associated with the unavailable particular primary VM instance.
