# US 2019/0317873 A1 · Usage pattern virtual machine idle detection

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

- Number: US 2019/0317873 A1
- Document ID: US20190317873A1
- Status: Published application
- Kind: A1
- Application number: 15/952,824
- Filed: 2018-04-13
- Published: 2019-10-17
- Earliest claimed: 2018-04-13
- Assignees: VMware, Inc.
- Applicants: VMware, Inc.
- Inventors: Aditya Gopisetti; Chandrashekhar Jha; Jobin Raju George; Kumar Gaurav; Jusvinder Singh
- Web page: https://patentgrep.com/patent/US20190317873A1

## CPC

- G06F 11/3006: {where the computing system is distributed, e.g. networked systems, clusters, multiprocessor systems (multiprogramming arrangements G06F9/46; allocation of resources G06F9/50)}
- G06F 11/3423: {where the assessed time is active or idle time}
- G06F 9/45558: {Hypervisor-specific management and integration aspects}
- G06F 11/301: {where the computing system is a virtual computing platform, e.g. logically partitioned systems (virtual machines G06F9/45533; logical partitioning of resources G06F9/5077)}
- G06F 11/3409: {for performance assessment}
- G06F 2009/45575: {Starting, stopping, suspending or resuming virtual machine instances}
- G06F 2009/45591: {Monitoring or debugging support}
- G06F 2201/815: Virtual
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

The detection of idle virtual machines through usage pattern analysis is described. In one example, a computing device can collect utilization metrics from a virtual machine over time. The utilization metrics can be related to one or more processing usage, disk usage, network usage, and memory usage metrics, among others. The utilization metrics can be separated into a set of training metrics and a set of validation metrics, and a number of clusters can be determined based on the set of training metrics. The clusters can be used to organize the set of validation metrics into groups. Depending upon the number or overall percentage of the utilization metrics assigned to individual ones of the plurality of clusters, it is possible to determine whether or not the virtual machine is an idle virtual machine. Once identified, idle virtual machines can be shut down to conserve processing resources and costs.

## Claims

### Claim 1

A non-transitory computer-readable medium embodying program code for detecting idle virtual machines that, when executed by at least one computing device, directs the at least one computing device to at least:
collect a plurality of utilization metrics from a virtual machine over time;
separate the plurality of utilization metrics into a set of training metrics and a set of validation metrics;
determine a plurality of clusters for the plurality of utilization metrics based on the set of training metrics;
assign individual utilization metrics among the set of validation metrics to one of the plurality of clusters;
compute a percentage of utilization metrics assigned to individual ones of the plurality of clusters; and
determine that the virtual machine is an idle virtual machine in response to the percentage of utilization metrics assigned to one of the plurality of clusters being equal to or greater than a predetermined percentage.

### Claim 2 (depends on 1)

The non-transitory computer-readable medium according to claim 1, wherein the program code further directs the at least one computing device to at least remove outlier utilization metrics from among the plurality of utilization metrics.

### Claim 3 (depends on 1)

The non-transitory computer-readable medium according to claim 1, wherein the program code further directs the at least one computing device to at least normalize the plurality of utilization metrics.

### Claim 4 (depends on 1)

The non-transitory computer-readable medium according to claim 1, wherein individual ones of the plurality of utilization metrics comprise at least one of a processing unit utilization metric, a disk input/output (I/O) utilization metric, a network I/O utilization metric, and a memory utilization metric.

### Claim 5 (depends on 4)

The non-transitory computer-readable medium according to claim 4, wherein, to determine the plurality of clusters, the program code further directs the at least one computing device to at least:
initialize a center of at least one cluster among the plurality of clusters, the center being initialized based on a metric unit of at least one of processing unit utilization, disk I/O utilization, network I/O utilization, and a memory utilization for the virtual machine;
attribute a number of utilization metrics among the set of training metrics to the at least one cluster based on a difference between individual ones of the plurality of utilization metrics and the center of the at least one cluster; and
update the center of the at least one cluster based on an average of the difference between individual ones of the plurality of utilization metrics among the set of training metrics and the center of the at least one cluster.

### Claim 6 (depends on 4)

The non-transitory computer-readable medium according to claim 4, wherein the program code further directs the at least one computing device to at least notify an owner of the virtual machine that the virtual machine is idle.

### Claim 7 (depends on 4)

The non-transitory computer-readable medium according to claim 4, wherein the program code further directs the at least one computing device to at least notify an owner of the virtual machine that the virtual machine is idle.

### Claim 8 (depends on 4)

The non-transitory computer-readable medium according to claim 4, wherein the program code further directs the at least one computing device to at least shut down the virtual machine.

### Claim 9

A method for detecting idle virtual machines, comprising:
collecting, by at least one computing device, a plurality of utilization metrics from a virtual machine over time;
determining, by the at least one computing device, a plurality of clusters for the plurality of utilization metrics;
assigning, by the at least one computing device, individual utilization metrics among the plurality of utilization metrics to one of the plurality of clusters; and
computing, by the at least one computing device, a percentage of utilization metrics assigned to individual ones of the plurality of clusters as an indication as to the virtual machine being idle or utilized.

### Claim 10 (depends on 9)

The method for detecting idle virtual machines according to claim 9, further comprising:
determining, by the at least one computing device, that the virtual machine is an idle virtual machine in response to the percentage of utilization metrics assigned to one of the plurality of clusters being equal to or greater than a predetermined percentage.

### Claim 11 (depends on 9)

The method for detecting idle virtual machines according to claim 9, further comprising notifying an owner of the virtual machine that the virtual machine is idle.

### Claim 12 (depends on 9)

The method for detecting idle virtual machines according to claim 9, further comprising:
determining, by the at least one computing device, that the virtual machine is a utilized virtual machine in response to the percentage of utilization metrics assigned to two of the plurality of clusters being equal to or greater than a predetermined percentage.

### Claim 13 (depends on 9)

The method for detecting idle virtual machines according to claim 9, further comprising:
separating, by the at least one computing device, the plurality of utilization metrics into a set of training metrics and a set of validation metrics; and
determining the plurality of clusters based on the set of training metrics.

### Claim 14 (depends on 9)

The method for detecting idle virtual machines according to claim 9, further comprising:
removing, by the at least one computing device, outlier utilization metrics from among the plurality of utilization metrics; and
normalizing, by the at least one computing device, the plurality of utilization metrics.

### Claim 15 (depends on 9)

The method for detecting idle virtual machines according to claim 9, wherein individual ones of the plurality of utilization metrics comprise at least one of a processing unit utilization metric, a disk input/output (I/O) utilization metric, a network I/O utilization metric, and a memory utilization metric.

### Claim 16 (depends on 15)

The method for detecting idle virtual machines according to claim 15, wherein determining the plurality of clusters comprises:
initializing, by the at least one computing device, a center of at least one cluster among the plurality of clusters, the center being initialized based on a metric unit of at least one of processing unit utilization, disk I/O utilization, network I/O utilization, and a memory utilization for the virtual machine;
attributing, by the at least one computing device, a number of utilization metrics among the plurality of utilization metrics to the at least one cluster based on a difference between individual ones of the plurality of utilization metrics and the center of the at least one cluster; and
updating, by the at least one computing device, the center of the at least one cluster based on an average of the difference between individual ones of the plurality of utilization metrics and the center of the at least one cluster.

### Claim 17

A system for detecting idle virtual machines, comprising:
a memory device configured to store computer-readable instructions thereon; and
at least one computing device configured, through execution of the computer-readable instructions, to at least:
collect a plurality of utilization metrics from a virtual machine over time;
separate the plurality of utilization metrics into a set of training metrics and a set of validation metrics;
determine a plurality of clusters for the plurality of utilization metrics based on the set of training metrics;
assign individual utilization metrics among the set of validation metrics to one of the plurality of clusters;
compute a percentage of utilization metrics assigned to individual ones of the plurality of clusters; and
determine that the virtual machine is an idle virtual machine in response to the percentage of utilization metrics assigned to one of the plurality of clusters being equal to or greater than a predetermined percentage.

### Claim 18 (depends on 17)

The system according to claim 17, wherein the at least one computing device is further configured to at least:
remove outlier utilization metrics from among the plurality of utilization metrics; and
normalize the plurality of utilization metrics.

### Claim 19 (depends on 17)

The system according to claim 17, wherein individual ones of the plurality of utilization metrics comprise at least one of a processing unit utilization metric, a disk input/output (I/O) utilization metric, a network I/O utilization metric, and a memory utilization metric.

### Claim 20 (depends on 19)

The system according to claim 19, wherein the at least one computing device is further configured to at least:
initialize a center of at least one cluster among the plurality of clusters, the center being initialized based on a metric unit of at least one of processing unit utilization, disk I/O utilization, network I/O utilization, and a memory utilization for the virtual machine;
attribute a number of utilization metrics among the set of training metrics to the at least one cluster based on a difference between individual ones of the plurality of utilization metrics and the center of the at least one cluster; and
update the center of the at least one cluster based on an average of the difference between individual ones of the plurality of utilization metrics among the set of training metrics and the center of the at least one cluster.
