IP Library Granted Patent US 10,846,137
Granted Patent B2
US 10,846,137 · App. 15/870,466 · Granted Nov 24, 2020

Dynamic adjustment of application resources in a distributed computing system

Inventors: Shravan Kumar Vallala (San Jose, CA); Ravi Kumar Alluboyina (Santa Clara, CA)
Assignee: ROBIN SYSTEMS, INC.
G06F9/5016G06F9/455G06F9/45558G06F9/48G06F9/5033G06F9/5077G06F12/0253G06F2201/84
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,137
App. No.
15/870,466
Filed
Jan 12, 2018
Granted
Nov 24, 2020
Kind
B2
Art Unit
2199
USPC
718/104
Abstract

A new snapshot of a storage volume is created by instructing computing nodes to suppress write requests. Once pending write requests from the computing nodes are completed, storage nodes create a new snapshot for the storage volume by allocating a new segment to the new snapshot and finalizes and performs garbage collection with respect to segments allocated to the previous snapshot. Subsequent write requests to the storage volume are then performed on the segments allocated to the new snapshot. An orchestration layer implements a bundled application that is provisioned with virtualized storage and computation resources. A snapshot of the application may be created and used to rollback or clone the application. The amount of processing cores, memory, and containers of the bundled application may be increased or decreased based on usage. Components of the bundled application may be assigned to nodes to satisfy affinity and anti-affinity rules.

Claims (67)

1. A method comprising:

monitoring, by a first computing device, loading of a subject application instance of a bundled application executing in a first container on the first computing device, the bundled application including a plurality of application instances executing on a plurality of computing devices, the subject application instance executing on a subject computing device that is one of the first computing device and a second computing device of the plurality of computing devices;

(a) determining, by the first computing device, that loading of the subject application instance exceeds a first threshold condition;

in response to (a), increasing, by the first computing device, an allocation of processing cores to the first container;

receiving, by a kernel executing on the subject computing device, a system call to retrieve a number of processors of the subject computing device;

intercepting, by the kernel, the system call; and

returning, by the kernel, in response to the system call, the allocation of processing cores to the first container.

2. The method of claim 1 , further comprising:

in response to (a), increasing an allocation of memory to the first container.

3. The method of claim 1 , further comprising:

(b) determining, by the first computing device, that loading of the subject application instance is below a second threshold condition; and

in response to (b), decreasing the allocation of processing cores to the first container.

4. The method of claim 1 , further comprising:

mounting, by the first computing device, a virtual file system to the first container; and

storing, by the subject computing device, a virtual system resource file in the virtual file system;

wherein increasing the allocation of processing cores to the first container comprises changing a number of processors stored in the virtual system resource file.

5. The method of claim 1 , wherein increasing, by the first computing device, the allocation of processing cores to the first container comprises:

(b) determining, by the first computing device, that the subject computing device does not have available processing cores to permit increasing of the allocation; and

in response to (b), transferring the first container from the subject computing device to a third computing device.

6. The method of claim 5 , wherein transferring the first container from the subject computing device to the third computing device comprises:

stopping the first container;

creating a new container on the third computing device; and

transferring a state of the first container to the new container.

7. The method of claim 6 , wherein transferring the first container from the subject computing device to the third computing device comprises:

executing a pre-transfer hook with respect to the subject application instance prior to stopping the first container, the pre-transfer hook being a first script; and

executing a post-transfer hook with respect to the subject application instance after transferring the state of the first container to the new container, the post-transfer hook being a second script.

8. The method of claim 1 , further comprising:

(b) determining, by the first computing device, that loading of the subject application instance exceeds a second threshold condition; and

in response to (b):

creating a new container on a third computing device; and

loading a copy of the subject application instance into the new container.

9. The method of claim 1 , further comprising:

(b) determining, by the first computing device, that loading of the subject application instance is below a second threshold condition; and

in response to (b), shutting down the first container.

10. A system comprising:

a first computing device programmed to:

monitor loading of a subject application instance of a bundled application executing in a first container on the first computing device, the bundled application including a plurality of application instances executing on a plurality of computing devices, the subject application instance executing one a subject computing device that is one of the first computing device and a second computing device of the plurality of computing devices;

when (a) loading of the subject application instance exceeds a first threshold condition, increase, by the first computing device, an allocation of processing cores to the first container;

mount a virtual file system to the first container;

store a virtual system resource file in the virtual file system; and

increase the allocation of processing cores to the first container by changing a number of processors stored in the virtual system resource file.

11. The system of claim 10 , wherein the first computing device is further programmed to:

in response to (a), increase an allocation of memory to the first container.

12. The system of claim 10 , wherein the first computing device is further programmed to:

when loading of the subject application instance is below a second threshold condition, decrease the allocation of processing cores to the first container.

13. The system of claim 10 , further comprising the subject computing device, the subject computing device being further programmed to:

receive, by a kernel executing on the subject computing device, a system call to retrieve a number of processors of the subject computing device;

intercept, by the kernel, the system call; and

return, by the kernel, in response to the system call, the allocation of processing cores to the first container.

14. The system of claim 10 , wherein the first computing device is further programmed to increase the allocation of processing cores to the first container by:

(b) determining, by the first computing device, that the subject computing device does not have available processing cores to permit increasing of the allocation; and

in response to (b), transferring the first container from the subject computing device to a third computing device.

15. The system of claim 14 , wherein the first computing device is further programmed to transfer the first container from the subject computing device to the third computing device by:

stopping the first container;

creating a new container on the third computing device; and

transferring a state of the first container to the new container.

16. The system of claim 15 , wherein the first computing device is further programmed to transfer the first container from the subject computing device to the third computing device by:

executing a pre-transfer hook with respect to the subject application instance prior to stopping the first container, the pre-transfer hook being a first script; and

executing a post-transfer hook with respect to the subject application instance after transferring the state of the first container to the new container, the post-transfer hook being a second script.

17. The system of claim 10 , wherein the first computing device is further programmed to:

(b) determine that loading of the subject application instance exceeds a second threshold condition; and

in response to (b):

create a new container on a third computing device; and

load a copy of the subject application instance into the new container.

18. The system of claim 10 , wherein the first computing device is further programmed to:

(b) determine that loading of the subject application instance is below a second threshold condition; and

in response to (b), shut down the first container.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 30, 2024
From: ROBIN SYSTEMS, INC.
To: RAKUTEN SYMPHONY, INC.
Reel/Frame 068193/0367 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 19, 2018
From: VALLALA, SHRAVAN KUMAR; ALLUBOYINA, RAVI KUMAR
To: ROBIN SYSTEMS, INC.
Reel/Frame 045591/0063 →
Continuity (1)
Related Publication 20190220315A1 · Jul 18, 2019
Cited By (166)
US 12,189,975 US 12,197,274 US 12,204,657 US 12,204,768 US 12,204,778 US 12,204,787 US 12,204,788 US 12,210,417 US 12,210,762 US 12,210,778 US 12,212,624 US 12,216,524 US 12,216,615 US 12,223,183 US 12,229,402 US 12,229,428 US 12,229,430 US 12,231,413 US 12,235,807 US 12,236,117 US 12,236,121 US 12,236,122 US 12,242,425 US 12,242,896 US 12,248,379 US 12,248,566 US 12,253,922 US 12,253,941 US 12,253,990 US 12,271,264 US 12,271,359 US 12,277,106 US 12,282,399 US 12,282,686 US 12,287,990 US 12,293,111 US 12,314,131 US 12,314,134 US 12,314,165 US 12,314,170 US 12,314,183 US 12,314,194 US 12,323,437 US 12,332,747 US 12,339,750 US 12,340,107 US 12,346,201 US 12,346,743 US 12,348,583 US 12,353,321 US 12,353,364 US 12,353,746 US 12,360,865 US 12,360,866 US 12,366,972 US 12,367,178 US 12,373,126 US 12,373,224 US 12,373,289 US 12,373,339 US 12,373,340 US 12,373,428 US 12,380,063 US 12,380,127 US 12,381,934 US 12,386,505 US 12,386,530 US 12,386,782 US 12,393,340 US 12,393,353 US 12,393,485 US 12,394,477 US 12,399,640 US 12,399,825 US 12,399,908 US 12,411,629 US 12,411,812 US 12,411,867 US 12,411,962 US 12,422,984 US 12,430,047 US 12,430,053 US 12,430,059 US 12,430,213 US 12,430,217 US 12,430,245 US 12,438,944 US 12,443,359 US 12,443,763 US 12,450,126 US 12,455,685 US 12,455,705 US 12,457,214 US 12,464,043 US 12,468,488 US 12,481,442 US 12,481,531 US 12,481,607 US 12,481,675 US 12,483,518 US 12,487,920 US 12,488,018 US 12,488,133 US 12,489,813 US 12,493,428 US 12,498,861 US 12,498,875 US 12,498,888 US 12,499,085 US 12,499,165 US 12,505,079 US 12,511,062 US 12,511,068 US 12,511,239 US 12,517,827 US 12,524,309 US 12,536,192 US 12,536,195 US 12,541,313 US 12,541,315 US 12,554,442 US 12,554,587 US 12,561,068 US 12,561,093 US 12,561,125 US 12,572,296 US 12,572,421 US 12,574,220 US 12,578,858 US 12,578,878 US 12,578,903 US 12,578,971 US 12,579,040 US 12,585,385 US 12,585,401 US 12,585,621 US 12,596,498 US 12,596,816 US 12,602,294 US 12,608,346 US 12,609,934 US 12,613,638 US 12,619,469 US 12,632,300 US 12,639,171 US 12,639,172 US 12,639,176 US 12,645,383 US 12,645,576 US 12,645,606 US 12,650,784 US 12,650,827 US 12,656,951 US 12,669,950 US 12,669,965 US 12,670,179 US 12,675,368 US 12,682,949 US 12,699,509 US 12,699,512 US 12,699,575 US 12,705,149 US 12,705,214 US 12,711,099 US 12,717,689 US 12,717,709