US 12,229,077 B2
Managing use of program execution capacity
Peter N. DeSantis, Seattle, WA (US); Matthew S. Garman, Seattle, WA (US); Charles Ward, Sammamish, WA (US); James Alfred Gordon Greenfield, Cape Town (ZA); and Andrew R. Jassy, Seattle, WA (US)
Assigned to Amazon Technologies, Inc., Seattle, WA (US)
Filed by Amazon Technologies, Inc., Seattle, WA (US)
Filed on Feb. 5, 2021, as Appl. No. 17/169,240.
Application 17/169,240 is a continuation of application No. 15/860,524, filed on Jan. 2, 2018, granted, now 10,915,491.
Application 15/860,524 is a continuation of application No. 13/556,047, filed on Jul. 23, 2012, granted, now 9,864,725, issued on Jan. 9, 2018.
Application 13/556,047 is a continuation of application No. 12/334,022, filed on Dec. 12, 2008, granted, now 8,249,904, issued on Aug. 21, 2012.
Prior Publication US 2021/0255986 A1, Aug. 19, 2021
Int. Cl. G06F 15/173 (2006.01); G06F 9/50 (2006.01); G06Q 10/06 (2023.01)
CPC G06F 15/173 (2013.01) [G06F 9/5088 (2013.01); G06Q 10/06 (2013.01); G06F 2209/5014 (2013.01); G06F 2209/509 (2013.01)] 20 Claims
OG exemplary drawing
 
1. A computing system, comprising:
one or more processors; and
a system manager component that is configured to, when executed by at least one of the one or more processors, manage execution of programs for users of a program execution service, including to:
receive an indication to execute a first program of a first user using a specified first amount of computing capacity of the program execution service, wherein the first program is stored as part of a first virtual machine image;
initiate execution of the first program of the first user using a group of computing resources of the program execution service that is determined to provide the first amount of computing capacity, wherein the group of computing resources comprises virtual machines booted using the first virtual machine image;
receive an indication of a second amount of computing capacity of the program execution service for executing a second program of a second user, wherein the second program is stored as part of a second virtual machine image, and the indication for the second amount of computing capacity has higher priority than the indication for the first amount of computing capacity;
determine to preempt at least some of the group of computing resources that is being used for executing the first program of the first user to provide the second amount of computing capacity to execute the second program, and in response:
preempt the at least some of the group of computing resources to cause the at least some of the group of computing resources to (a) stop execution of the first program so as to free up at least some of the computing capacity of the program execution service to execute the second program, and (b) save an execution state of the first program before the stop of the first program; and
initiate execution of the second program of the second user on another group of computing resources, wherein the other group of computing resources comprises virtual machines booted using the second virtual machine image; and
after the stop of the first program, restart execution of the first program based on the saved execution state of first program.