IP Library Granted Patent US 10,846,144
Granted Patent B2
US 10,846,144 · App. 15/832,370 · Granted Nov 24, 2020

Multistep automated scaling for cluster containers

Inventors: Tobias Günter Knaup (San Francisco, CA); Christopher John Barkley Gutierrez (San Mateo, CA)
Assignee: D2iQ, Inc.
G06F9/5088G06F9/5044
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,846,144
App. No.
15/832,370
Filed
Dec 5, 2017
Granted
Nov 24, 2020
Kind
B2
Art Unit
2494
USPC
718/104
Abstract

A system for managing a cluster computing system includes a storage system and a processor. The storage system is configured to store a resource usage history for a set of tasks running on a computer cluster comprising a plurality of worker systems. The processor is configured to determine a required resource size for a task of the set of tasks based at least in part on the resource usage history for the task; resize resources allocated to the task to the required resource size; arrange tasks of the set of tasks on the plurality of worker systems to reduce a number of worker systems running tasks; and deallocate worker systems no longer running tasks.

Claims (52)

1. A system for managing a cluster computing system, comprising:

a storage system configured to:

store a resource usage history for a set of tasks running on a computer cluster comprising a plurality of worker systems;

a processor configured to:

determine required resource sizes for a task of the set of tasks based at least in part on the resource usage history for the task;

resize resources allocated to the task to the required resource sizes;

determine a resource of the resources having a smallest resource availability factor;

arrange tasks of the set of tasks on the plurality of worker systems to reduce a number of worker systems running tasks, comprising to:

select an unchecked task of the set of tasks in an order of high to low resource usage for the resource, wherein a first worker system of the plurality of worker systems runs the unchecked task;

select a second worker system of the plurality of worker systems in an order of high to low loading for the resource;

move the unchecked task to the second worker system in response to a determination that the second worker system has available capacity for the required resource size of the resource for the unchecked task, wherein the first worker system is different from the second worker system; and

deallocate worker systems no longer running tasks.

2. The system of claim 1 , wherein the required resource size for the task is based at least in part on resource usage history over a period of a day, a week, a month, or a year.

3. The system of claim 1 , wherein the required resource size for the task is based at least in part on a maximum observed resource usage.

4. The system of claim 1 , wherein the resource of the resources allocated to the task comprises one of a memory utilization, storage system utilization, a processor utilization, a graphics processing unit utilization, memory bandwidth utilization, available port usage, or a network bandwidth utilization.

5. The system of claim 1 , wherein resizing the resources allocated to the task comprises reducing an amount of resources allocated to the task.

6. The system of claim 1 , wherein resizing the resources allocated to the task comprises increasing an amount of resources allocated to the task.

7. The system of claim 6 , wherein increasing the amount of resources allocated to the task comprises determining whether resources are available to increase the amount of resources allocated to the task to the required resource size.

8. The system of claim 7 , wherein, in response to determining that the resources are not available, the amount of resources allocated to the task are increased to a maximum available size.

9. The system of claim 7 , wherein, in response to determining that the resources are not available, an indication of the required resource size for the task is stored.

10. The system of claim 1 , wherein resizing the resources allocated to the task to the required resource size comprises stopping the task and restarting the task with the resource allocation set to the required resource size.

11. The system of claim 1 , wherein resizing the resources allocated to the task to the required resource size comprises resizing the resources allocated to the task without stopping the task.

12. The system of claim 1 , wherein the processor is further configured to determine a single required resource size for all tasks of a task group, wherein the task group comprises a subset of the set of tasks comprising multiple instances of a same task or a group of related tasks.

13. The system of claim 1 , wherein the required resource size comprises a projected required resource size.

14. The system of claim 1 , wherein deallocating cluster machines no longer running tasks comprises shutting down one or more physical worker systems no longer running tasks.

15. The system of claim 1 , wherein deallocating cluster machines no longer running tasks comprises releasing one or more virtual worker systems no longer running tasks.

16. The system of claim 1 , wherein the processor is further configured to receive a performance target for the task of the set of tasks.

17. The system of claim 16 , wherein the required resource size for the task is based at least in part on the performance target.

18. The system of claim 1 , wherein the required resource size is determined for each task of the set of tasks.

19. The system of claim 18 , wherein resources allocated to each task of the set of tasks are resized according to the required resource size.

20. The system of claim 1 , wherein the loading of the second worker system is based at least in part on the available capacity of the second worker system.

21. The system of claim 1 , wherein the resource availability factor is a percentage of the available resources of the plurality of worker systems not allocated to the set of tasks.

22. A method for managing a cluster computing system, comprising:

storing a resource usage history for a set of tasks running on a computer cluster comprising a plurality of worker systems;

determining, using a processor, required resource sizes for a task of the set of tasks based at least in part on the resource usage history for the task;

resizing resources allocated to the task to the required resource sizes;

determining a resource of the resources having a smallest resource availability factor;

arranging the set of tasks on the plurality of worker systems to reduce a number of worker systems running tasks, comprising:

selecting an unchecked task of the set of tasks in an order of high to low resource usage for the resource, wherein a first worker system of the plurality of worker systems runs the unchecked task;

selecting a second worker system of the plurality of worker systems in an order of high to low loading for the resource;

moving the unchecked task to the second worker system in response to a determination that the second worker system has available capacity for the required resource size of the resource for the unchecked task, wherein the first worker system is different from the second worker system; and

deallocating worker systems no longer running tasks.

23. A computer program product for managing a cluster computing system, the computer program product being embodied in a non-transitory computer readable storage medium and comprising computer instructions for:

storing a resource usage history for a set of tasks running on a computer cluster comprising a plurality of worker systems;

determining required resource sizes for a task of the set of tasks based at least in part on the resource usage history for the task;

resizing resources allocated to the task to the required resource sizes;

determining a resource of the resources having a smallest resource availability factor;

arranging the set of tasks on the plurality of worker systems to reduce a number of worker systems running tasks, comprising:

selecting an unchecked task of the set of tasks in an order of high to low resource usage for the resource, wherein a first worker system of the plurality of worker systems runs the unchecked task;

selecting a second worker system of the plurality of worker systems in an order of high to low loading for the resource;

moving the unchecked task to the second worker system in response to a determination that the second worker system has available capacity for the required resource size of the resource for the unchecked task, wherein the first worker system is different from the second worker system; and

deallocating worker systems no longer running tasks.

Assignments (6)
SECURITY INTEREST Recorded Feb 13, 2025
From: NUTANIX, INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 070206/0463 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 19, 2023
From: D2IQ, INC.
To: D2IQ (ASSIGNMENT FOR THE BENEFIT OF CREDITORS), LLC
Reel/Frame 065909/0748 →
CORRECTIVE ASSIGNMENT TO CORRECT THE NAME OF THE ASSIGNOR. PREVIOUSLY RECORDED ON REEL 065771 FRAME 0424. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Dec 8, 2023
From: D2IQ (ASSIGNMENT FOR THE BENEFIT OF CREDITORS), LLC.
To: NUTANIX, INC.
Reel/Frame 065836/0558 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 5, 2023
From: D2IQ, INC.
To: NUTANIX, INC.
Reel/Frame 065771/0424 →
CHANGE OF NAME Recorded May 15, 2020
From: MESOSPHERE, INC.
To: D2IQ, INC.
Reel/Frame 052679/0179 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 23, 2018
From: KNAUP, TOBIAS GÜNTER; GUTIERREZ, CHRISTOPHER JOHN BARKLEY
To: MESOSPHERE, INC.
Reel/Frame 045024/0565 →
Continuity (1)
Related Publication 20190171495A1 · Jun 6, 2019
Cited By (1)
US 12,688,074