# US 10,120,770 B2 · Grouping failure events with adaptive polling and sliding window buffering

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

- Number: US 10,120,770 B2
- Document ID: US10120770B2
- Status: Granted
- Kind: B2
- Application number: 15/347,536
- Filed: 2016-11-09
- Published: 2017-03-02
- Granted: 2018-11-06
- Earliest claimed: 2013-04-03
- Assignees: VMware, Inc.
- Applicants: VMware, Inc.
- Inventors: Anjaneya Prasad Gondi; Hemanth Kalluri; Naveen Kumar Kalaskar
- Web page: https://patentgrep.com/patent/US10120770B2

## CPC

- 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/0712: {in a virtual computing platform, e.g. logically partitioned systems}
- G06F 11/0778: {Dumping, i.e. gathering error/state information after a fault for later diagnosis}
- G06F 11/0793: {Remedial or corrective actions (recovery from an exception in an instruction pipeline G06F9/3861; by retry G06F11/1402; for recovering from a failure of a protocol instance or entity H04L69/40)}
- G06F 11/20: using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F 11/2023: {Failover techniques}
- G06F 11/2033: {switching over of hardware resources}
- 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/3055: {Monitoring arrangements for monitoring the status of the computing system or of the computing system component, e.g. monitoring if the computing system is on, off, available, not available (error or fault processing without redundancy G06F11/0703; error detection or correction by redundancy in data representation G06F11/08; error detection or correction of the data by redundancy in operations G06F11/14; error detection or correction by redundancy in hardware G06F11/16)}
- G06F 11/3072: {where the reporting involves data filtering, e.g. pattern matching, time or event triggered, adaptive or policy-based reporting}
- G06F 11/3075: {the data filtering being achieved in order to maintain consistency among the monitored data, e.g. ensuring that the monitored data belong to the same timeframe, to the same system or component}
- G06F 11/3082: {the data filtering being achieved by aggregating or compressing the monitored data}
- G06F 11/0709: {in a distributed system consisting of a plurality of standalone computer nodes, e.g. clusters, client-server systems}
- G06F 11/0751: {Error or fault detection not based on redundancy (power supply failures G06F1/30; network fault management H04L41/06)}
- G06F 11/3096: {wherein the means or processing minimize the use of computing system or of computing system component resources, e.g. non-intrusive monitoring which minimizes the probe effect: sniffing, intercepting, indirectly deriving the monitored data from other directly available data}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Embodiments detect and group multiple failure events to enable batch processing of those failure events, such as in a virtual datacenter executing a plurality of virtual machines (VMs). A long timer, adaptive short timer, and adaptive polling frequency enable a computing device to efficiently detect and group the failure events that may be related (e.g., resulting from one failure). The grouped failure events are processed in parallel thereby reducing the time for recovery from the failure events.

## Claims

### Claim 1

A system for failure event detection and grouping using adaptive polling intervals and sliding window buffering, the system comprising:
a memory area associated with a computing device, the memory area storing a plurality of virtualization components and datastores accessible thereto, a value for a short timer, and a value for a long timer; and
a processor programmed to:
upon detection of a failure event affecting at least one of the plurality of virtualization components and/or datastores, initiate the short timer and the long timer and poll for additional failure events during each of a series of polling intervals, wherein the series of polling intervals continue until either the short timer or the long timer expires, wherein a duration of each subsequent polling interval of the series of polling intervals depends on whether an additional failure was detected during a respective preceding polling interval of the series of polling intervals, the polling during each polling interval of the series of polling intervals comprising:
upon detection of at least one of the additional failure events during a particular polling interval, collecting data relating to the detected at least one additional failure event, resetting the short timer, and reducing a duration of a next polling interval relative to the particular polling interval;
group the detected failure event with the detected at least one additional failure event into a group of failure events; and
perform recovery operations in parallel for each failure event in the grouped failure events.

### Claim 2 (depends on 1)

The system of claim 1, wherein the detected at least one additional failure event comprises a hardware failure affecting the at least one of the plurality of VMs or datastores accessible thereto.

### Claim 3 (depends on 1)

The system of claim 1, wherein the plurality of VMs and datastores accessible thereto represent a protected site, and wherein performing recovery operations comprises performing replication operations from the protected site to a recovery site.

### Claim 4 (depends on 1)

The system of claim 1, wherein the detected at least one additional failure event comprises a disk failure in an array, and wherein performing the recovery operations comprises performing a failover of the array.

### Claim 5 (depends on 1)

The system of claim 1, wherein grouping the detected failure event with the detected at least one additional failure event comprises grouping the detected failure event with the detected at least one additional failure event based on a determination that the detected failure event and the detected at least one additional failure event were detected before the long timer expired.

### Claim 6 (depends on 1)

The system of claim 1, wherein the processor is programmed to reduce the duration of a next polling interval exponentially upon the detection of at least one of the additional failure events.

### Claim 7 (depends on 1)

The system of claim 1, further comprising means for detecting and grouping failure events in a datacenter using adaptive polling intervals and sliding window buffering of the failure events.

### Claim 8

A method comprising:
accessing an adaptive polling frequency, a value for a short timer, and a value for a long timer for use in collecting a plurality of failure events in a virtual datacenter having a plurality of virtualization components and a plurality of datastores;
initiating the short timer and the long timer and polling for failure events in the virtual datacenter according to the accessed adaptive polling frequency, wherein the polling for failure events continues until either the short timer or the long timer expires, wherein the adaptive polling frequency varies depending on detection of failure events; and
upon detection of one or more of the failure events during the polling, buffering the detected one or more failure events, increasing the adaptive polling frequency, and resetting the short timer, or, upon expiration of the short timer or the long timer, processing the buffered one or more failure events in parallel, resetting the short timer, and resetting the long timer.

### Claim 9 (depends on 8)

The method of claim 8, further comprising, upon no detection of a failure event during the polling, decreasing the adaptive polling frequency.

### Claim 10 (depends on 8)

The method of claim 8, wherein polling for the failure events comprises polling for the failure events during a series of polling intervals defined by the adaptive polling frequency.

### Claim 11 (depends on 8)

The method of claim 8, wherein buffering the one or more detected failure events comprises collecting data describing the one or more detected failure events.

### Claim 12 (depends on 8)

The method of claim 8, wherein processing the buffered one or more failure events in parallel comprises performing recovery operations in parallel for each of the buffered one or more failure events.

### Claim 13 (depends on 8)

The method of claim 8, wherein processing the buffered one or more failure events in parallel comprises performing replication operations in parallel for each of the buffered one or more failure events.

### Claim 14 (depends on 8)

The method of claim 8, wherein the value for the short timer and the adaptive polling frequency are the same.

### Claim 15 (depends on 8)

The method of claim 8, wherein the short timer and the long timer are implemented as different threads in an application.

### Claim 16

One or more non-transitory computer storage media including computer-executable instructions that, when executed, cause at least one processor to detect and group a plurality of failure events in a virtual datacenter having a plurality of virtualization components and datastores by:
upon detection of a failure event affecting at least one of the plurality of virtualization components or associated datastores, initiating the short timer and the long timer and polling for additional failure events in the virtual datacenter during each of a series of polling intervals, wherein the series of polling intervals continue until either an expiration of a short timer having a first value or a long timer having a second value, wherein a duration of each subsequent polling interval of the series depends on whether an additional failure was detected during a respective preceding polling interval of the series, the polling during each polling interval of the series of polling intervals comprising:
upon detection of at least one additional failure event during a particular polling interval, receiving data relating to the detected additional failure event, resetting the short timer, and reducing a duration of a next polling interval relative to the particular polling interval;
grouping two or more failure events detected during the polling into a group of failure events; and
processing each of the two or more failure events in the group of failure events in parallel.

### Claim 17 (depends on 16)

The non-transitory computer storage media of claim 16, wherein the computer-executable instructions cause the processor to poll for the failure events after detection of an initial failure event in the virtual datacenter.

### Claim 18 (depends on 16)

The non-transitory computer storage media of claim 16, wherein the computer-executable instructions cause the processor to process the group of failure events by performing recovery operations for each of the two or more failure events in the group of failure events in parallel.

### Claim 19 (depends on 16)

The non-transitory computer storage media of claim 16, wherein the computer-executable instructions cause the processor to process the group of failure events by performing replication operations for each of the two or more failure events in the group of failure events in parallel.

### Claim 20 (depends on 16)

The non-transitory computer storage media of claim 16, wherein the computer-executable instructions cause the processor to: upon no detection of at least one additional failure event during the particular polling interval, increasing a duration of a next polling interval relative to the particular polling interval.
