IP Library › Granted Patent US 10,936,480
Granted Patent B2
US 10,936,480 · App. 16/428,910 · Granted Mar 2, 2021

Memory management for multiple process instances

Inventors: Manoj Syamala (Issaquah, WA); Vivek Narasayya (Redmond, WA); Junfeng Dong (Sammamish, WA); Ajay Kalhan (Redmond, WA); Shize Xu (Redmond, WA); Changsong Li (Bellevue, WA); Pankaj Arora (Sammamish, WA); Jiaqi Liu (Bellevue, WA); John M. Oslake (Seattle, WA); Arnd Christian König (Kirkland, WA)
Assignee: Microsoft Technology Licensing, LLC
G06F12/0238G06F12/0882G06F16/284
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,936,480
App. No.
16/428,910
Granted
Mar 2, 2021
Kind
B2
Abstract

Intelligent memory brokering for multiple process instances, such as relational databases (e.g., SQL servers), reclaims memory based on value, thereby minimizing cost across instances. An exemplary solution includes: based at least on a trigger event, determining a memory profile for each of a plurality of process instances at a computing node; determining an aggregate memory profile, the aggregate memory profile indicating a memory unit cost for each of a plurality of memory units; determining a count of memory units to be reclaimed; identifying, based at least on the aggregate memory profile and the count of memory units to be reclaimed, a count of memory units to be reclaimed within each process instance so that a total cost is minimized to reclaim the determined count; and communicating, to each process instance having identified memory units to be reclaimed, a count of memory units to be reclaimed within the process instance.

Claims (43)

1. A system for memory management for multiple database process instances, the system comprising:

a processor; and

a computer-readable medium storing instructions that are operative when executed by the processor to:

determine a memory profile for each of the plurality of process instances at a computing node, wherein each of the plurality of process instances comprises a relational database server process;

determine, based at least on the plurality of memory profiles, an aggregate memory profile, the aggregate memory profile indicating a memory unit cost for each of a plurality of memory units, the memory unit cost being calculated based, in part, on a rate of how often a memory unit is accessed per unit of time (λ);

determine a count of memory units to be reclaimed;

identify, based at least on the aggregate memory profile and the count of memory units to be reclaimed, a count of memory units to be reclaimed within each process instance so that a total cost is minimized to reclaim the determined count of memory units to be reclaimed;

communicate, to each process instance having identified memory units to be reclaimed, a count of memory units to be reclaimed within the process instance; and

reclaim the identified memory units, wherein reclaiming the identified memory units comprises releasing reclaimable memory.

2. The system of claim 1 , wherein the relational database server processes comprise structured query language (SQL) servers.

3. The system of claim 1 , wherein determining the aggregate memory profile comprises scaling, based at least on a value of a process instance, memory unit cost of the memory profile for the process instance.

4. The system of claim 1 , wherein the aggregate memory profile comprises a histogram of memory unit costs, and wherein the memory profile for each of the plurality of process instances comprises histograms of memory unit costs.

5. The system of claim 1 , wherein the memory unit cost comprises a cost for a cache unit, and wherein a cache unit comprises a page.

6. The system of claim 1 , wherein the memory profiles for the plurality of process instances indicate memory unit costs for reclaimable memory, and wherein the reclaimable memory comprises buffer pool memory.

7. The system of claim 1 , wherein the instructions are further operative to calculate memory unit cost based at least on a predictive model.

8. The system of claim 1 , wherein the instructions are further operative to calculate memory unit cost based at least on historical data.

9. The system of claim 1 , wherein communicating the count of memory units to be reclaimed comprises communicating a maximum amount of memory to retain.

10. A method of memory management for multiple database process instances, the method comprising:

determining a memory profile for each of the plurality of process instances at a computing node, wherein each of the plurality of process instances comprises a relational database server process;

determining, based at least on the plurality of memory profiles, an aggregate memory profile, the aggregate memory profile indicating a memory unit cost for each of a plurality of memory units, the memory unit cost being calculated based, in part, on how often a memory unit is accessed per unit of time (λ);

determining a count of memory units to be reclaimed;

identifying, based at least on the aggregate memory profile and the count of memory units to be reclaimed, a count of memory units to be reclaimed within each process instance so that a total cost is minimized to reclaim the determined count of memory units to be reclaimed; and

communicating, to each process instance having identified memory units to be reclaimed, a count of memory units to be reclaimed within the process instance.

11. The method of claim 10 , wherein the relational database server processes comprise SQL servers.

12. The method of claim 10 , wherein determining the aggregate memory profile comprises scaling, based at least on a value of a process instance, a memory unit cost of the memory profile for the process instance.

13. The method of claim 10 , wherein the aggregate memory profile comprises a histogram of memory unit costs, and wherein the memory profile for each of the plurality of process instances comprises histograms of memory unit costs.

14. The method of claim 10 , wherein the memory unit cost comprises a cost for a cache unit, and wherein a cache unit comprises a page.

15. The method of claim 10 , wherein the memory profiles for the plurality of process instances indicate memory unit costs for reclaimable memory, and wherein the reclaimable memory comprises buffer pool memory.

16. The method of claim 10 , further comprising:

reclaiming the identified memory units, wherein reclaiming the identified memory units comprises releasing buffer pool memory.

17. The method of claim 10 , further comprising:

calculating memory unit cost based at least on historical data; or

calculating memory unit cost based at least on a predictive model.

18. The method of claim 10 , wherein communicating the count of memory units to be reclaimed comprises communicating a maximum amount of memory to retain.

19. One or more computer storage devices having computer-executable instructions stored thereon for memory management for multiple relational database server process instances, which, on execution by a computer, cause the computer to perform operations comprising:

requesting a memory profile from each of a plurality of process instances at a computing node, wherein each of the plurality of process instances comprises a relational database server process;

for each process instance in the plurality of process instances, calculating memory unit cost based at least on historical data, predictive data, or both;

receiving the plurality of memory profiles from the plurality of process instances;

determining, based at least on the plurality of memory profiles, an aggregate memory profile, the aggregate memory profile indicating a memory unit cost for each of a plurality of memory units, wherein determining the aggregate memory profile comprises the memory unit cost being calculated based, in part, on how often a memory unit is accessed per unit of time (λ);

determining a count of memory units to be reclaimed;

identifying, based at least on the aggregate memory profile and the count of memory units to be reclaimed, a count of memory units to be reclaimed within each process instance so that a total cost is minimized to reclaim the determined count; and

communicating, to each process instance having identified memory units to be reclaimed, a count of memory units to be reclaimed within the process instance.

20. The one or more computer storage devices of claim 19 , further comprising scaling, based at least on a value of a process instance, a memory unit cost of the memory profile for the process instance, wherein the aggregate memory profile comprises a histogram of memory unit costs, wherein the memory profile for each of the plurality of process instances comprises histograms of memory unit costs, wherein the memory unit cost comprises a cost for a cache unit, wherein a cache unit comprises a page, wherein the memory profiles for the plurality of process instances indicate memory unit costs for reclaimable memory, and wherein the reclaimable memory comprises buffer pool memory.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 21, 2019
From: SYAMALA, MANOJ; NARASAYYA, VIVEK; DONG, JUNFENG; KALHAN, AJAY; XU, SHIZE; LI, CHANGSONG; ARORA, PANKAJ; LIU, JIAQI; OSLAKE, JOHN M.; KÖNIG, ARND CHRISTIAN
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 049555/0633 →
Continuity (1)
Related Publication 20200379896A1 · Dec 3, 2020