IP Library Granted Patent US 9,152,549
Granted Patent B1
US 9,152,549 · App. 13/854,891 · Granted Oct 6, 2015

Dynamically allocating memory for processes

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 9,152,549
App. No.
13/854,891
Granted
Oct 6, 2015
Kind
B1
Abstract

A system, computer-readable storage medium storing at least one program, and a computer-implemented method for dynamically allocating memory for processes is presented. A first request to allocate memory for a first process is received, where the first process is associated with a first quality-of-service class in a plurality of quality-of-service classes. A first memory allocation for the first quality-of-service class is calculated as a function of a current amount of free memory on the server and a first minimum memory allocation for the first quality-of-service class. An amount of memory currently used by processes associated with the first quality-of-service class is determined. The first request is rejected when the amount of memory currently used by the processes associated with the first quality-of-service class is greater than or equal to the first memory allocation.

Claims (62)

1. A computer-implemented method for dynamically allocating memory for processes, performed on a server having at least one processor and memory storing at least one program for execution by the at least one processor to perform the method, comprising:

receiving a first request to allocate memory for a first process, the first process being associated with a first quality-of-service class in a plurality of quality-of-service classes;

calculating a first memory allocation for the first quality-of-service class as a function of a current amount of free memory on the server and a first minimum memory allocation for the first quality-of-service class;

determining an amount of memory currently used by processes associated with the first quality-of-service class; and

rejecting the first request when the amount of memory currently used by the processes associated with the first quality-of-service class is greater than or equal to the first memory allocation.

2. The computer-implemented method of claim 1 , wherein when the amount of memory currently used by the processes associated with the first quality-of-service class is less than the first memory allocation, the method further comprises:

calculating a second memory allocation for the first process as a function of a current amount of free memory in the first memory allocation;

determining an amount of memory currently used by requests associated with the first process in the first quality-of-service class; and

rejecting the first request when the amount of memory used by the requests associated with the first process in the first quality-of-service class is greater than or equal to the second memory allocation.

3. The computer-implemented method of claim 2 , wherein the current amount of free memory in the first memory allocation is a difference of the first memory allocation and the amount of memory currently used by processes associated with the first quality-of-service class.

4. The computer-implemented method of claim 2 , wherein when the amount of memory used by the requests associated with the first process in the first quality-of-service class is less than the second memory allocation, the method further comprises:

accepting the first request;

increasing the first memory allocation to accommodate the first request; and

increasing the second memory allocation to accommodate the first request.

5. The computer-implemented method of claim 4 , further comprising:

determining that the first request has been terminated;

releasing memory allocated to the first request in the first memory allocation; and

releasing memory allocated to the first request in the second memory allocation.

6. The computer-implemented method of claim 2 , wherein calculating the second memory allocation as a function of the current amount of free memory in the first memory allocation includes calculating the second memory allocation as a product of a free memory multiplier for the first process and the current amount of free memory in the first memory allocation.

7. The computer-implemented method of claim 1 , wherein calculating a respective memory allocation for a respective quality-of-service class as the function of the current amount of free memory on the server and a respective minimum memory allocation for the respective quality-of-service class includes:

calculating a respective free memory allocation for the respective quality-of-service class as a product of a respective free memory multiplier for the respective quality-of-service class and the current amount of free memory on the server;

calculating a respective candidate memory allocation for the respective quality-of-service class as a sum of the respective free memory allocation and the respective minimum memory allocation for the respective quality-of-service class; and

calculating the respective memory allocation as a minimum of the respective candidate memory allocation for the respective quality-of-service class and a predetermined amount of memory.

8. The computer-implemented method of claim 1 , wherein the predetermined amount of memory is a total amount of memory on the server.

9. The computer-implemented method of claim 1 , wherein the first request includes a network connection request received from a first computer system via a network, and wherein the first process includes a process that handles network traffic between the server and the first computer system.

10. The computer-implemented method of claim 1 , wherein a sum of a minimum memory allocation for each quality-of-service class in the plurality of quality-of-service classes is no greater than a total amount of memory on the server.

11. The computer-implemented method of claim 1 , wherein the first request includes a desired amount of memory to be allocated to the first process in the first quality-of-service class.

12. A system to dynamically allocate memory for processes, comprising:

at least one processor;

memory; and

at least one program stored in the memory and executable by the at least one processor, the at least one program comprising instructions to:

receive a first request to allocate memory for a first process, the first process being associated with a first quality-of-service class in a plurality of quality-of-service classes;

calculate a first memory allocation for the first quality-of-service class as a function of a current amount of free memory on the server and a first minimum memory allocation for the first quality-of-service class;

determine an amount of memory currently used by processes associated with the first quality-of-service class; and

reject the first request when the amount of memory currently used by the processes associated with the first quality-of-service class is greater than or equal to the first memory allocation.

13. The system of claim 12 , wherein when the amount of memory currently used by the processes associated with the first quality-of-service class is less than the first memory allocation, the at least one program includes instructions to:

calculate a second memory allocation for the first process as a function of a current amount of free memory in the first memory allocation;

determine an amount of memory currently used by requests associated with the first process in the first quality-of-service class; and

reject the first request when the amount of memory used by the requests associated with the first process in the first quality-of-service class is greater than or equal to the second memory allocation.

14. The system of claim 13 , wherein the instructions to calculate the second memory allocation as a function of the current amount of free memory in the first memory allocation include instructions to calculate the second memory allocation as a product of a free memory multiplier for the first process and the current amount of free memory in the first memory allocation.

15. The system of claim 12 , wherein the instructions to calculate a respective memory allocation for a respective quality-of-service class as the function of the current amount of free memory on the server and a respective minimum memory allocation for the respective quality-of-service class include instructions to:

calculate a respective free memory allocation for the respective quality-of-service class as a product of a respective free memory multiplier for the respective quality-of-service class and the current amount of free memory on the server;

calculate a respective candidate memory allocation for the respective quality-of-service class as a sum of the respective free memory allocation and the respective minimum memory allocation for the respective quality-of-service class; and

calculate the respective memory allocation as a minimum of the respective candidate memory allocation for the respective quality-of-service class and a predetermined amount of memory.

16. The system of claim 12 , wherein the first request includes a network connection request received from a first computer system via a network, and wherein the first process includes a process that handles network traffic between the server and the first computer system.

17. A non-transitory computer readable storage medium storing at least one program configured for execution by at least one processor of a computer system, the at least one program comprising instructions to:

receive a first request to allocate memory for a first process, the first process being associated with a first quality-of-service class in a plurality of quality-of-service classes;

calculate a first memory allocation for the first quality-of-service class as a function of a current amount of free memory on the server and a first minimum memory allocation for the first quality-of-service class;

determine an amount of memory currently used by processes associated with the first quality-of-service class; and

reject the first request when the amount of memory currently used by the processes associated with the first quality-of-service class is greater than or equal to the first memory allocation.

18. The non-transitory computer readable storage medium of claim 17 , wherein when the amount of memory currently used by the processes associated with the first quality-of-service class is less than the first memory allocation, the at least one program includes instructions to:

calculate a second memory allocation for the first process as a function of a current amount of free memory in the first memory allocation;

determine an amount of memory currently used by requests associated with the first process in the first quality-of-service class; and

reject the first request when the amount of memory used by the requests associated with the first process in the first quality-of-service class is greater than or equal to the second memory allocation.

19. The non-transitory computer readable storage medium of claim 18 , wherein when the amount of memory used by the requests associated with the first process in the first quality-of-service class is less than the second memory allocation, the at least one program includes instructions to:

accept the first request;

increase the first memory allocation to accommodate the first request; and

increase the second memory allocation to accommodate the first request.

20. The non-transitory computer readable storage medium of claim 19 , wherein the at least one program includes instructions to:

determine that the first request has been terminated;

release memory allocated to the first request in the first memory allocation; and

release memory allocated to the first request in the second memory allocation.

Assignments (2)
CHANGE OF NAME Recorded Oct 2, 2017
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 044334/0466 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 21, 2015
From: KESSELMAN, ALEX
To: GOOGLE INC.
Reel/Frame 035873/0279 →