# US 12,118,386 B2 · Techniques for container scheduling in a virtual environment

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

- Number: US 12,118,386 B2
- Document ID: US12118386B2
- Status: Granted
- Kind: B2
- Application number: 18/227,849
- Filed: 2023-07-28
- Published: 2023-11-23
- Granted: 2024-10-15
- Earliest claimed: 2018-07-12
- Assignees: VMware, Inc.
- Applicants: VMware LLC
- Inventors: Thaleia Dimitra Doudali; Zhelong Pan; Pranshu Jain
- Web page: https://patentgrep.com/patent/US12118386B2

## CPC

- G06F 9/4881: {Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues}
- G06F 9/5027: {the resource being a machine, e.g. CPUs, Servers, Terminals}
- G06F 9/455: Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F 9/45533: {Hypervisors; Virtual machine monitors}
- G06F 9/45558: {Hypervisor-specific management and integration aspects}
- G06F 9/48: Program initiating; Program switching, e.g. by interrupt
- G06F 9/4843: {by program, e.g. task dispatcher, supervisor, operating system}
- G06F 9/485: {Task life-cycle, e.g. stopping, restarting, resuming execution (G06F9/4881 takes precedence)}
- G06F 9/50: Allocation of resources, e.g. of the central processing unit [CPU]
- G06F 9/5005: {to service a request}
- G06F 9/5011: {the resources being hardware resources other than CPUs, Servers and Terminals}
- G06F 9/5061: {Partitioning or combining of resources}
- 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/5083: {Techniques for rebalancing the load in a distributed system}
- G06F 2009/45562: {Creating, deleting, cloning virtual machine instances}
- G06F 2009/4557: {Distribution of virtual machine instances; Migration and load balancing}
- G06F 2209/508: Monitor
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

The present disclosure relates generally to virtualization, and more particularly to techniques for deploying containers in a virtual environment. The container scheduling can be based on information determined by a virtual machine scheduler. For example, a container scheduler can receive a request to deploy a container. The container scheduler can send container information to the virtual machine scheduler. The virtual machine scheduler can use the container information along with resource utilization of one or more virtual machines to determine an optimal virtual machine for the container. The virtual machine scheduler can send an identification of the optimal virtual machine back to the container scheduler so that the container scheduler can deploy the container on the optimal virtual machine.

## Claims

### Claim 1

A method, comprising:
transmitting, to a first scheduling process from a second scheduling process, first information identifying a plurality of first virtual machines executing on a plurality of physical hosts, wherein the first scheduling process has access to resource utilization data for only virtual machines that are executing at least one container;
receiving, from the first scheduling process by the second scheduling process, second information identifying one or more second virtual machines as one or more virtual machine candidates on which to deploy a first container, the second virtual machines executing on the plurality of physical hosts; and
deploying the first container on a virtual machine of the one or more second virtual machines, wherein the second scheduling process has access to the resource utilization data for each physical host of the plurality of physical hosts.

### Claim 2 (depends on 1)

The method of claim 1, wherein the second scheduling process is a virtual machine scheduling process, and wherein the first scheduling process is a container scheduling process.

### Claim 3 (depends on 1)

The method of claim 1, wherein the first information includes a resource requirement of a container to be deployed.

### Claim 4 (depends on 1)

The method of claim 1, wherein the first information includes a policy associated with the first scheduling process, and wherein the policy relates to identifying a virtual machine to be used to deploy a container.

### Claim 5 (depends on 1)

The method of claim 1, wherein the first information includes a ranking of the plurality of first virtual machines.

### Claim 6 (depends on 5)

The method of claim 5, wherein the ranking is determined by the first scheduling process.

### Claim 7 (depends on 1)

The method of claim 1, wherein at least one of the second virtual machines is a virtual machine different from the virtual machines of the plurality of first virtual machines.

### Claim 8 (depends on 1)

The method of claim 1, wherein the second information includes a ranking of the one or more second virtual machines.

### Claim 9 (depends on 1)

The method of claim 1, wherein the plurality of first virtual machines is identified by the first scheduling process.

### Claim 10 (depends on 1)

The method of claim 1, wherein the second scheduling process is executing on a virtual machine separate from the plurality of first virtual machines.

### Claim 11 (depends on 10)

The method of claim 10, wherein the virtual machine executing the second scheduling process is executing on a physical host separate from the plurality of physical hosts.

### Claim 12 (depends on 1)

The method of claim 1, wherein the second scheduling process is executing on a virtual machine of the plurality of first virtual machines.

### Claim 13 (depends on 1)

The method of claim 1, wherein each virtual machine of the plurality of first virtual machines is configured to execute one or more containers.

### Claim 14

A non-transitory computer readable medium storing one or more programs, the one or more programs comprising instructions, which when executed by a system, cause the system to:
transmit, to a first scheduling process from a second scheduling process, first information identifying a plurality of first virtual machines executing on a plurality of physical hosts, wherein the first scheduling process has access to resource utilization data for only virtual machines that are executing at least one container;
receive, from the first scheduling process by the second scheduling process, second information identifying one or more second virtual machines as one or more virtual machine candidates on which to deploy a first container, the second virtual machines executing on the plurality of physical hosts; and
deploy the first container on a virtual machine of the one or more second virtual machines, wherein the second scheduling process has access to the resource utilization data for each physical host of the plurality of physical hosts.

### Claim 15 (depends on 14)

The non-transitory computer readable medium of claim 14, wherein the second scheduling process is a virtual machine scheduling process, and wherein the first scheduling process is a container scheduling process.

### Claim 16 (depends on 14)

The non-transitory computer readable medium of claim 14, wherein at least one of the second virtual machines is a virtual machine different from the virtual machines of the plurality of first virtual machines.

### Claim 17 (depends on 14)

The non-transitory computer readable medium of claim 14, wherein the first information includes a policy associated with the first scheduling process, and wherein the policy relates to identifying a virtual machine to be used to deploy a container.

### Claim 18

A system comprising:
one or more processors;
memory; and
one or more programs, wherein the one or more programs are stored in the memory and configured to be executed by the one or more processors, the one or more programs including instructions for:
transmitting, to a first scheduling process from a second scheduling process, first information identifying a plurality of first virtual machines executing on a plurality of physical hosts, wherein the first scheduling process has access to resource utilization data for only virtual machines that are executing at least one container;
receiving, from the first scheduling process by the second scheduling process, second information identifying one or more second virtual machines as one or more virtual machine candidates on which to deploy a first container, the second virtual machines executing on the plurality of physical hosts; and
deploying the first container on a virtual machine of the one or more second virtual machines, wherein the second scheduling process has access to the resource utilization data for each physical host of the plurality of physical hosts.

### Claim 19 (depends on 18)

The system of claim 18, wherein the second scheduling process is a virtual machine scheduling process, and wherein the first scheduling process is a container scheduling process.

### Claim 20 (depends on 18)

The system of claim 18, wherein at least one of the second virtual machines is a virtual machine different from the virtual machines of the plurality of first virtual machines.
