Managing virtual machines

US9575808B1 · US · B1

Patent metadata
FieldValue
Publication numberUS-9575808-B1
Application numberUS-201615291835-A
CountryUS
Kind codeB1
Filing dateOct 12, 2016
Priority dateFeb 1, 2016
Publication dateFeb 21, 2017
Grant dateFeb 21, 2017

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

Management of virtual machines can include receiving a request associated with a job that is to be executed using one or more virtual machines from among multiple virtual machines. For each virtual machine of the multiple virtual machines, a respective attribute can be determined. The respective attribute can be determined based on a modulo of an uptime of the respective virtual machine and a predetermined time increment. The particular virtual machine of the multiple virtual machines that is to be used to execute the job can be determined based on the respective attribute associated with the particular virtual machine having a highest value or a lowest value among multiple attributes corresponding to the multiple virtual machines. Based on determining that the particular virtual machine is to be used to execute the job, the particular virtual machine can execute the job.

First claim

Opening claim text (preview).

The invention claimed is: 1. A non-transitory computer readable medium comprising program code executable by a processor for causing the processor to: receive a request associated with a job to be executed using one or more virtual machines of a plurality of virtual machines; for each virtual machine of the plurality of virtual machines, determine a respective attribute based on a modulo of an uptime of the respective virtual machine and a predetermined time increment, the uptime being a length of time since the respective virtual machine was created; determine that a particular virtual machine of the plurality of virtual machines is to be used to execute the job based on the respective attribute associated with the particular virtual machine having a highest value or a lowest value among a plurality of attributes corresponding to the plurality of virtual machines; and based on determining that the particular virtual machine is to be used to execute the job, cause the particular virtual machine to execute the job. 2. The non-transitory computer readable medium of claim 1 , further comprising program code that is executable by the processor for causing the processor to generate the plurality of virtual machines by: determining that there are no available virtual machines for executing the job; based on determining that there are no available virtual machines for executing the job, causing a new virtual machine to be provisioned; based on the new virtual machine being provisioned, include the new virtual machine in the plurality of virtual machines; and initialize an attribute associated with the new virtual machine to a default value of zero, the attribute indicating a relationship between the uptime of the new virtual machine and the predetermined time increment. 3. The non-transitory computer readable medium of claim 2 , wherein the particular virtual machine is provisioned by an entity in blocks of time, each block of time being equal to the predetermined time increment. 4. The non-transitory computer readable medium of claim 1 , further comprising program code that is executable by the processor for causing the processor to: determine that a number of virtual machines in the plurality of virtual machines exceeds a threshold number of virtual machines; and based on determining that the number of virtual machines in the plurality of virtual machines exceeds the threshold number of virtual machines: determine that a subset of virtual machines of the plurality of virtual machines are not executing jobs; determine that a virtual machine of the subset of virtual machines has an attribute with the lowest value or the highest value among the subset of virtual machines by comparing the attributes associated with the subset of virtual machines; determine that the lowest value is below a first threshold value that is predefined or that the highest value is above a second threshold value that is predefined; and based on (i) the virtual machine having the lowest value and the lowest value being below the first threshold value, or (ii) the virtual machine having the highest value and the highest value being above the second threshold value, remove the virtual machine from the plurality of virtual machines. 5. The non-transitory computer readable medium of claim 1 , further comprising program code that is executable by the processor for causing the processor to, for each virtual machine of the plurality of virtual machines, determine the respective attribute by: determining a remainder resulting from dividing the uptime of the respective virtual machine by a respective predetermined time increment associated with the respective virtual machine; and multiplying the remainder by the predetermined time increment. 6. The non-transitory computer readable medium of claim 1 , further comprising program code that is executable by the processor for causing the processor to: determine a hardware characteristic or a software characteristic of a server hosting the plurality of virtual machines; and determine the plurality of virtual machines from a larger group of virtual machines based on the hardware characteristic or the software characteristic of the server. 7. The non-transitory computer readable medium of claim 1 , further comprising program code that is executable by the processor for causing the processor to: receive a communication indicating minimum amount of memory required to execute the job; and determine the plurality of virtual machines from a larger group of virtual machines based on the plurality of virtual machines having available the minimum amount of memory required to execute the job. 8. The non-transitory computer readable medium of claim 1 , further comprising program code that is executable by the processor for causing the processor to: determine a priority of the job based on a characteristic of a user account associated with the job; and determine that the particular virtual machine of the plurality of virtual machines is to be used to execute the job based on the priority of the job. 9. The non-transitory computer readable medium of claim 1 , further comprising program code that is executable by the processor for causing the processor to: determine an estimated amount of time that the job will take to execute by analyzing previous jobs submitted by a user; and determine that the particular virtual machine of the plurality of virtual machines is to be used to execute the job based on the estimated amount of time that the job will take to execute. 10. The non-transitory computer readable medium of claim 1 , further comprising program code that is executable by the processor for causing the processor to: determine at least two virtual machines of the plurality of virtual machines to be used to execute respective portions of the job based on the respective attributes associated with the at least two machines; and cause the at least two virtual machines of the plurality of virtual machines to execute the respective portions of the job. 11. A method comprising: receiving, by a processor, a request associated with a job to be executed using one or more virtual machines of a plurality of virtual machines; determining, by the processor, a respective attribute for each virtual machine of the plurality of virtual machines based on a modulo of an uptime of the respective virtual machine and a predetermined time increment, the uptime being a length of time since the respective virtual machine was created; determining, by the processor, that a particular virtual machine of the plurality of virtual machines is to be used to execute the job based on the respective attribute associated with the particular virtual machine having a highest value or a lowest value among a plurality of attributes corresponding to the plurality of virtual machines; and based on determining that the particular virtual machine is to be used to execute the job, causing, by the processor, the particular virtual machine to execute the job. 12. The method of claim 11 , further comprising generating the plurality of virtual machines by: determining that there are no available virtual machines for executing the job; based on determining that there are no available virtual machines for executing the job, causing a new virtual machine to be provisioned; based on the new virtual machine being provisioned, including the new virtual machine in the plurality of virtual machines; and initializing an attribute associated with the new virtual machine to a default value, the attribute indicating a relationship between the uptime of the new virtual machine and the predetermined time in

Assignees

Inventors

Classifications

  • G06F9/5038Primary

    considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration (scheduling strategies G06F9/4881 and subgroups) · CPC title

  • Hypervisors; Virtual machine monitors · CPC title

  • G06F9/5044Primary

    considering hardware capabilities · CPC title

  • Network integration; Enabling network access in virtual machine instances · CPC title

  • Hypervisor-specific management and integration aspects · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US9575808B1 cover?
Management of virtual machines can include receiving a request associated with a job that is to be executed using one or more virtual machines from among multiple virtual machines. For each virtual machine of the multiple virtual machines, a respective attribute can be determined. The respective attribute can be determined based on a modulo of an uptime of the respective virtual machine and a p…
Who is the assignee on this patent?
Sas Inst Inc
What technology area does this patent fall under?
Primary CPC classification G06F9/5038. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Feb 21 2017 00:00:00 GMT+0000 (Coordinated Universal Time) (B1). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 1 related publication on this page (citations in our corpus or others sharing the same primary CPC).