# US 2014/0157283 A1 · Attributing causality to program execution capacity modifications

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

- Number: US 2014/0157283 A1
- Document ID: US20140157283A1
- Status: Published application
- Kind: A1
- Application number: 14/176,944
- Filed: 2014-02-10
- Published: 2014-06-05
- Earliest claimed: 2009-09-29
- Assignees: Amazon Technologies, Inc.
- Applicants: Amazon Technologies, Inc.
- Inventors: Alex Maclinovsky; Blake Meike; Chiranjeeb Buragohain; Christopher Reddy Kommareddy; Geoffry Scott Pare; John W. Heitmann; Sumit Lohia; Liang Chen
- Web page: https://patentgrep.com/patent/US20140157283A1

## CPC

- G06F 9/542: {Event management; Broadcasting; Multicasting; Notifications}
- G06F 9/50: Allocation of resources, e.g. of the central processing unit [CPU]
- G06F 9/543: {User-generated data transfer, e.g. clipboards, dynamic data exchange [DDE], object linking and embedding [OLE]}
- G06Q 20/085: {involving remote charge determination or related payment systems}
- G06Q 30/02: Marketing; Price estimation or determination; Fundraising
- G06Q 30/0283: Price estimation or determination
- G06F 2209/508: Monitor
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- G06Q: INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR

## Abstract

Techniques are described for managing program execution capacity, such as for a group of computing nodes that are provided for executing one or more programs for a user. In some situations, dynamic program execution capacity modifications for a computing node group that is in use may be performed periodically or otherwise in a recurrent manner, such as to aggregate multiple modifications that are requested or otherwise determined to be made during a period of time. In addition, various operations may be performed to attribute causality information or other responsibility for particular program execution capacity modifications that are performed, including by attributing a single event as causing one capacity modification, and a combination of multiple events as possible causes for another capacity modification. The techniques may in some situations be used in conjunction with a fee-based program execution service that executes multiple programs on behalf of multiple users of the service.

## Claims

### Claim 1

A method for a configured computing system of a program execution service to determine causality for dynamic modifications in program execution capacity provided to users, the method comprising:
under control of the configured computing system of the program execution service, the program execution service providing a plurality of computing nodes that are configurable to execute programs of a plurality of remote users in exchange for fees charged to the users, and for each of multiple of the users,
receiving information from the user that specifies an initial desired quantity of computing nodes for use in executing an indicated program of the user and that specifies multiple quantity modification triggers for use in later initiating automated modifications to the quantity of computing nodes being provided for use by the user, each of the quantity modification triggers including one or more criteria for use in determining if the quantity modification trigger is satisfied and including a specified computing node quantity change to be requested if the quantity modification trigger is satisfied;
automatically determining a group for the user of multiple of the plurality of computing nodes for use in executing the indicated program of the user, the multiple computing nodes being of the initial desired computing node quantity, and providing the multiple computing nodes for use by the user at a first time;
in response to an instruction from the user, initiating execution of a copy of the indicated program on each of the computing nodes of the group; and
automatically managing the computing nodes of the group during a period of time from the first time to a later second time, by:
during the period of time, automatically monitoring the computing nodes of the group to determine performance metrics from operation of those computing nodes, and automatically determining that at least one of the quantity modification triggers specified by the user is satisfied based on the determined performance metrics;
during the period of time, receiving one or more quantity change instructions from the user that each indicates a dynamically specified request for a quantity change in computing nodes of the group;
automatically determining an actual computing node quantity for the second time that reflects a quantity of the computing nodes of the group that are actually available at the second time to execute the program for the user, the determined actual computing node quantity at the second time being distinct from the initial desired quantity of computing nodes at the first time based at least in part on multiple changes to availability of computing nodes of the group during the period of time, at least some of the multiple availability changes having one or more associated fees for which the user is charged;
for each of at least one of the multiple changes to availability, automatically attributing a single cause of the availability change that is either one of the at least one quantity modification triggers that are determined to be satisfied or one of the one or more quantity change instructions from the user;
for each of at least one other of the multiple availability changes for which a single cause is not automatically attributed, the at least one other availability changes being distinct from the at least one availability changes, automatically attributing a combination of multiple possible causes to the availability change that are independent of each other and that include one or more of the at least one quantity modification triggers that are determined to be satisfied and include at least one of the one or more quantity change instructions from the user; and
providing indications of the attributed single cause for each of the at least one availability changes and of the attributed combination of multiple causes for each of the at least one other availability changes, so as to enable the associated fees for the at least some availability changes to be imputed to the user.

### Claim 2 (depends on 1)

The method of claim 1 wherein, for one of the multiple users, the determined actual computing node quantity at the second time is more than the initial desired computing node quantity for the first time based at least in part on requested increases in the quantity of computing nodes for the group for the one user from each of one or more of the at least one quantity modification triggers that are determined to be satisfied and at least one of the one or more quantity change instructions from the one user, wherein the automatic determining of the actual computing node quantity for the second time for the one user includes determining a single aggregated modification to make to increase the computing node quantity of the group for the one user based on aggregating the requested increases of the one or more satisfied quantity modification triggers and of the at least one quantity change instruction from the one user, wherein the determined single aggregated modification to increase the computing node quantity of the group for the one user is one of the at least one other availability changes for the group for the one user, wherein none of the one or more satisfied quantity modification triggers and the at least one quantity change instruction from the one user are attributed as the single cause of any of the at least one availability changes for the group for the one user, and wherein the combination of multiple possible causes for each of the at least one other availability changes for the group for the one user include all possible causes that are identified for availability changes in the computing node group for the one user during the period of time and that are not attributed as a singe cause of one of the at least one availability changes.

### Claim 3 (depends on 2)

The method of claim 2 wherein the program execution service is a network-accessible service such that each of the remote users provide instructions from client computing devices over one or more networks, wherein the at least some availability changes with the associated fees for the group for the one user include one or more increases in the quantity of computing nodes of the group for the one user, and wherein the one user pays a first fee for the providing of the multiple computing nodes for use by the one user at the first time and pays one or more distinct second fees for each additional computing node provided as part of the one or more quantity increases of the group for the one user.

### Claim 4

A computer-implemented method for determining causality for dynamic modifications in program execution capacity provided to a user, the method comprising:
under control of one or more computing systems that are configured to provide a program execution service for use by multiple users, the program execution service having a plurality of computing nodes that are configurable to execute programs of the users of the program execution service,
receiving an indication of an initial desired program execution capacity for executing one or more software programs on behalf of a first user of the program execution service; determining multiple capacity modification triggers for use in later initiating automated modifications to program execution capacity being provided to the first user, each of the capacity modification triggers including one or more criteria for use in determining if the capacity modification trigger is satisfied and including a specified type of program execution capacity modification to be requested if the capacity modification trigger is satisfied;
automatically determining a first group of multiple of the plurality of computing nodes for use in providing the initial desired program execution capacity of the first user, and making the computing nodes of the first group available at a first time to each execute one or more software programs for the first user;
automatically identifying multiple independent events that occur during a period of time between the first time and a later second time and that each are capable of resulting in a modification of the program execution capacity being provided by the multiple computing nodes of the first group, the multiple events including at least one of the specified capacity modification triggers being determined to be satisfied; automatically determining an actual program execution capacity that is available to the first user from the computing nodes of the first group at the second time, the actual program execution capacity at the second time being distinct from the desired program execution capacity provided to the first user at the first time based at least in part on one or more changes to availability of one or more computing nodes of the first group that occurred during a time period between the first time and the second time;
for each of the availability changes of the one or more computing nodes of the first group, automatically attributing one or more of the identified events as a cause of the availability change, at least one of the availability changes having a cause that is a combination of multiple events that are independent of each other and that include one or more of the at least one specified capacity modification triggers that are determined to be satisfied; and providing an indication of the attributed cause for each of one or more of the availability changes so as to enable one or more further actions to be performed corresponding to that attributed cause.

### Claim 5 (depends on 4)

The method of claim 4 wherein the multiple events further include at least one capacity modification instruction that is dynamically specified by the first user to request a specified modification to the program execution capacity being provided by the first group, and wherein the combination of multiple events that are attributed as the cause for one of the at least one availability changes includes one or more of the at least one specified capacity modification instructions.

### Claim 6 (depends on 4)

The method of claim 4 wherein at least one other of the availability changes has an attributed cause that is a single one of the multiple events, the at least one other availability change being distinct from the at least one availability change.

### Claim 7 (depends on 6)

The method of claim 6 further comprising automatically determining that the single one event is a determined type of cause of the at least one other availability change, the determined type of cause being either a direct cause or an indirect cause, and providing an indication of the single one event being the determined type of cause of the at least one other availability change.

### Claim 8 (depends on 4)

The method of the claim 4 wherein the automatic determining of the actual program execution capacity includes determining multiple availability changes that have occurred, and wherein the automatic attributing of the one or more events as the cause of each of the availability changes includes identifying one or more of the multiple events that are each a single cause of one of the multiple availability changes, and aggregating all of the multiple events that are not a single cause of the one of the multiple availability changes as part of the combination for each other of the multiple availability changes that does not have a single cause.

### Claim 9 (depends on 4)

The method of claim 4 wherein, for one of the at least one availability changes, the automatic attributing of the combination of multiple events as the cause of the one availability change includes determining that the combination of multiple events is a determined type of cause of the one availability change, the determined type of cause being either a direct cause or an indirect cause, and wherein the providing of the indication of the attributed cause for each of the one or more availability changes includes providing an indication of the combination of multiple events being the determined type of cause of the one availability change.

### Claim 10 (depends on 4)

The method of claim 4 wherein the multiple independent events each request a modification of the program execution capacity being provided by the first group, and wherein the method further comprises automatically determining a single aggregated modification to make to the program execution capacity of the first group based on aggregating the requested modifications of the multiple events, and initiating the determined single aggregated modification to the first group prior to the second time.

### Claim 11 (depends on 10)

The method of claim 10 wherein the multiple events further include at least one capacity modification instruction that is dynamically specified by the first user to request a specified modification to the program execution capacity being provided by the first group, wherein the determined multiple capacity modification triggers are specified by the first user prior to the first time, and wherein the combination of multiple events that are attributed as the cause for one of the at least one availability changes includes one or more of the at least one specified capacity modification instructions.

### Claim 12 (depends on 11)

The method of claim 11 wherein the determined single aggregated modification is the one availability change for which the one or more specified capacity modification instructions are included in the combination that is attributed as the cause.

### Claim 13 (depends on 10)

The method of claim 10 wherein the program execution capacity of the first group is measured based on a quantity of computing nodes that are part of the first group, such that the initial desired program execution capacity is an initial desired quantity of computing nodes and such that the determined actual program execution capacity at the second time is an actual quantity of computing nodes that are available as part of the first group at the second time, wherein the one or more availability changes of the one or more computing nodes of the first group each include at least one of one or more computing nodes that are part of the first group becoming unavailable and of one or more new computing nodes being added to the first group, and wherein the determined single aggregated modification to the first group is a determined change in quantity of the computing nodes for the first group.

### Claim 14 (depends on 13)

The method of claim 13 wherein the determined single aggregated modification is to increase the quantity of computing nodes of the first group by a specified quantity of one or more computing nodes, wherein the determined single aggregated modification is one of the one or more availability changes for which the indication of the attributed cause is provided, and wherein the method further comprises performing one or more further actions that include initiating one or more monetary charges to the first user based at least in part on the initiated determined single aggregated modification.

### Claim 15 (depends on 4)

The method of claim 4 wherein one of the one or more availability changes for which the indication of the attributed cause is provided includes at least a first of the multiple events as at least part of the cause of the one availability change, and wherein the providing of the indication of the attributed cause for the one availability change is performed in response to a request for at least one of which events cause the one availability change and of which availability changes are caused by the first event.

### Claim 16 (depends on 15)

The method of claim 15 wherein the request is received from a user, and wherein the providing of the indication of the attributed cause for the one availability change includes generating a human-readable explanation of the attributed cause for the one availability change and providing the generated human-readable explanation for display to the user.

### Claim 17 (depends on 4)

The method of claim 4 further comprising, for each of one or more additional time periods that occur after the second time, automatically attributing one or more additional identified events as a cause of an availability change that occurred during the additional time period, and wherein, for one of the additional identified events that is the cause of one of the availability changes that occurred during one of the one or more additional time periods, the one additional identified event is a result of one of the availability changes that occurred during the time period between the first time and the second time.

### Claim 18 (depends on 4)

The method of claim 4 wherein the making available of the computing nodes of the first group at the first time to each execute the one or more software programs for the first user includes automatically provisioning each of the computing nodes of the first group and includes automatically initiating execution of each of the one or more software programs on each of the computing nodes of the first group.

### Claim 19 (depends on 4)

The method of claim 4 wherein the program execution service is a fee-based network-accessible service that is remote from the first user, wherein the program execution service provides at least one of one or more Application Programming Interfaces (APIs) for remote computing systems to programmatically interact with the program execution service over one or more networks and of a graphical user interface for use by remote users over the one or more networks, and wherein the first user pays one or more fees based at least in part on the attributed cause of one or more of the availability changes.

### Claim 20 (depends on 4)

The method of claim 4 wherein the program execution service uses virtualization technology such that the plurality of computing nodes include, for each of multiple physical computing systems, multiple virtual machines hosted by the physical computing system that are each able to execute at least one program, wherein the computing nodes of the first group are hosted virtual machines, and wherein the one or more programs of the first user are part of a virtual machine image.

### Claim at position 21

21-29. (canceled)
