IP Library Granted Patent US 9,830,356
Granted Patent B2
US 9,830,356 · App. 14/333,740 · Granted Nov 28, 2017

Systems and/or methods for enabling storage tier selection and usage at a granular level

Inventors: Gagan Mehra (Oakland, CA); Foram Gandhi (Fremont, CA); Steve Yellenberg (Los Gatos, CA)
Assignee: SOFTWARE AG USA, INC.
G06F17/3048G06F12/0871G06F12/126G06F9/4411G06F13/102G06F13/385
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,830,356
App. No.
14/333,740
Granted
Nov 28, 2017
Kind
B2
Abstract

Certain example embodiments relate to memory management techniques that enable users to “pin” elements to particular storage tiers (e.g., RAM, SSD, HDD, tape, or the like). Once pinned, elements are not moved from tier-to-tier during application execution. A memory manager, working with at least one processor, receives requests to store and retrieve data during application execution. Each request is handled using a non-transitory computer readable storage medium (rather than a transitory computer readable storage medium), if the associated data is part of a data cache that is pinned to the non-transitory computer readable storage medium, or if the associated data itself is pinned to the non-transitory computer readable storage medium. If neither condition applies, the memory manager determines which one of the non-transitory and the transitory computer readable storage mediums should be used in handling the respective received request, and handles the request accordingly.

Claims (39)

1. A computer system, comprising:

at least one processor;

a non-volatile computer readable storage medium;

a volatile computer readable storage medium; and

a memory manager that, in cooperation with the at least one processor, is configured to receive requests to store and retrieve data in connection with execution of an application, and for each said received request:

determine whether the data associated with the respective received request is part of a data cache that is pinned to the non-volatile computer readable storage medium,

in response to a determination that the data associated with the respective received request is part of a data cache that is pinned to the non-volatile computer readable storage medium, handle the respective received request using the non-volatile computer readable storage medium rather than the volatile computer readable storage medium,

determine whether the data associated with the respective received request itself is pinned to the non-volatile computer readable storage medium,

in response to a determination that the data associated with the respective received request itself is pinned to the non-volatile computer readable storage medium, handle the respective received request using the non-volatile computer readable storage medium rather than the volatile computer readable storage medium, and

in response to determinations that the data associated with the respective received request is not part of a data cache that is pinned to the non-volatile computer readable storage medium and that the data associated with the respective received request itself is not pinned to the non-volatile computer readable storage medium, (a) determine which one of the non-volatile computer readable storage medium and the volatile computer readable storage medium should be used in handling the respective received request, and (b) handle the respective received request in accordance with the determination made in (a).

2. The system of claim 1 , wherein the non-volatile computer readable storage medium is a solid state device (SSD) drive and the volatile computer readable storage medium is random access memory (RAM).

3. The system of claim 1 , further comprising a configuration file that is consultable in determining whether data associated with received requests is part of a data cache that is pinned to the non-volatile computer readable storage medium and whether data associated with received requests itself is pinned to the non-volatile computer readable storage medium.

4. The system of claim 3 , wherein the configuration file further identifies the non-volatile computer readable storage medium and/or the volatile computer readable storage medium.

5. The system of claim 4 , wherein the configuration file further identifies a capacity of the non-volatile computer readable storage medium and/or the volatile computer readable storage medium usable in pinning.

6. The system of claim 3 , further comprising a query manager configured to execute pre-programmed queries in determining whether data associated with received requests is part of a data cache that is pinned to the non-volatile computer readable storage medium and whether data associated with received requests itself is pinned to the non-volatile computer readable storage medium.

7. The system of claim 3 , wherein the memory manager is further configured to receive and execute application programming interface (API) calls in determining whether data associated with received requests is part of a data cache that is pinned to the non-volatile computer readable storage medium and whether data associated with received requests itself is pinned to the non-volatile computer readable storage medium.

8. The system of claim 1 , wherein the memory manager is further configured to receive and execute application programming interface (API) calls from the application in determining whether data associated with received requests is part of a data cache that is pinned to the non-volatile computer readable storage medium and whether data associated with received requests itself is pinned to the non-volatile computer readable storage medium.

9. The system of claim 8 , further comprising a query manager configured to execute pre-programmed queries in determining whether data associated with received requests is part of a data cache that is pinned to the non-volatile computer readable storage medium and whether data associated with received requests itself is pinned to the non-volatile computer readable storage medium.

10. The system of claim 1 , further comprising a query manager configured to execute pre-programmed queries in determining whether data associated with received requests is part of a data cache that is pinned to the non-volatile computer readable storage medium and whether data associated with received requests itself is pinned to the non-volatile computer readable storage medium.

11. The system of claim 10 , wherein the queries are SQL queries.

12. The system of claim 1 , wherein indications as to whether data elements and/or data caches are pinned to the non-volatile computer readable storage medium are updatable during application execution.

13. The system of claim 12 , wherein the indications are updatable during application execution via changes committed to a configuration file that is consultable in determining whether data associated with received requests is part of a data cache that is pinned to the non-volatile computer readable storage medium and whether data associated with received requests itself is pinned to the non-volatile computer readable storage medium, via application programming interface (API) calls from the application, and/or via queries that are run.

14. The system of claim 1 , wherein elements are storable in memory as <key, value>pairs, and individual elements are pinnable to the non-volatile computer readable storage medium.

15. A method of managing memory in a computer system including at least one processor, a non-volatile computer readable storage medium, and a volatile computer readable storage medium, the method comprising:

receiving requests to store and retrieve data in connection with execution of an application; and

for each said received request:

in response to a determination that the data associated with the respective received request is part of a data cache that is pinned to the non-volatile computer readable storage medium, handling the respective received request using the at least one processor and the non-volatile computer readable storage medium rather than the volatile computer readable storage medium,

in response to a determination that the data associated with the respective received request itself is pinned to the non-volatile computer readable storage medium, handling the respective received request using the at least one processor and the non-volatile computer readable storage medium rather than the volatile computer readable storage medium, and

in response to determinations that the data associated with the respective received request is not part of a data cache that is pinned to the non-volatile computer readable storage medium and that the data associated with the respective received request itself is not pinned to the non-volatile computer readable storage medium, (a) determining which one of the non-volatile computer readable storage medium and the volatile computer readable storage medium should be used in handling the respective received request, and (b) handling the respective received request in accordance with the determination made in (a).

16. The method of claim 15 , wherein the non-volatile computer readable storage medium is a solid state device (SSD) drive and the volatile computer readable storage medium is random access memory (RAM).

17. The method of claim 15 , further comprising consulting a configuration file in determining whether data associated with received requests is part of a data cache that is pinned to the non-volatile computer readable storage medium and whether data associated with received requests itself is pinned to the non-volatile computer readable storage medium.

18. The method of claim 15 , further comprising receiving and executing application programming interface (API) calls from the application in determining whether data associated with received requests is part of a data cache that is pinned to the non-volatile computer readable storage medium and whether data associated with received requests itself is pinned to the non-volatile computer readable storage medium.

19. The method of claim 15 , further comprising executing pre-programmed queries in determining whether data associated with received requests is part of a data cache that is pinned to the non-volatile computer readable storage medium and whether data associated with received requests itself is pinned to the non-volatile computer readable storage medium.

20. The method of claim 15 , further comprising updating an indication as to whether an identified data element and/or an identified data cache is pinned to the non-volatile computer readable storage medium, during application execution.

21. The method of claim 20 , wherein the updating is performed in response to a change committed to a configuration file that is consultable in determining whether data associated with received requests is part of a data cache that is pinned to the non-volatile computer readable storage medium and whether data associated with received requests itself is pinned to the non-volatile computer readable storage medium, via an application programming interface (API) call from the application, and/or via a query that is run.

22. The method of claim 15 , wherein elements are storable in memory as <key, value>pairs, and individual elements are pinnable to the non-volatile computer readable storage medium.

23. The method of claim 15 , further comprising allowing spill-over from the volatile computer readable storage medium to the non-volatile computer readable storage medium only for data that is not pinned, directly or indirectly, to the volatile computer readable storage medium.

24. The method of claim 15 , further comprising overriding computer instructions to store data to, or search for data in, volatile memory for data that is pinned, directly or indirectly, to the volatile computer readable storage medium.

25. A non-transitory computer readable storage medium tangibly storing a program comprising instructions that, when executed, perform the method of claim 15 .

Assignments (6)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 30, 2024
From: SUPER IPAAS INTEGRATION LLC
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 069440/0958 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 19, 2024
From: SOFTWARE AG, LLC
To: SUPER IPAAS INTEGRATION LLC
Reel/Frame 069319/0220 →
CHANGE OF NAME Recorded Oct 31, 2024
From: SAG 1, LLC
To: SOFTWARE AG, LLC
Reel/Frame 069287/0635 →
CHANGE OF NAME Recorded Sep 26, 2024
From: SOFTWARE AG, INC.
To: SAG 1, LLC
Reel/Frame 069064/0575 →
MERGER Recorded Sep 25, 2024
From: SOFTWARE AG USA, INC.
To: SOFTWARE AG, INC.
Reel/Frame 068693/0619 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 17, 2014
From: MEHRA, GAGAN; GANDHI, FORAM; YELLENBERG, STEVE
To: SOFTWARE AG USA, INC.
Reel/Frame 033332/0803 →
Continuity (1)
Related Publication 20160019144A1 · Jan 21, 2016