IP Library Granted Patent US 10,133,488
Granted Patent B2
US 10,133,488 · App. 14/660,546 · Granted Nov 20, 2018

Apparatus and method for cache provisioning, configuration for optimal application performance

Inventor: Murali Nagaraj (Pune, IN)
Assignee: PrimaryIO, Inc.
G06F3/061G06F3/0655G06F3/0689
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,133,488
App. No.
14/660,546
Granted
Nov 20, 2018
Kind
B2
Abstract

In an embodiment of the invention, a method comprises: recording application-level heuristics and IO-level (input/output-level) heuristics; correlating and analyzing the application-level heuristics and IO-level heuristics; and based on an analysis and correlation of the application-level heuristics and IO-level heuristics, generating a policy for achieving optimal application performance. In another embodiment of the invention, an apparatus comprises: a system configured to record application-level heuristics and IO-level heuristics, to correlate and analyze the application-level heuristics and IO-level heuristics, and based on an analysis and correlation of the application-level heuristics and IO-level heuristics, to generate a policy for achieving optimal application performance.

Claims (65)

1. A method, comprising:

recording, by an application monitor, application-level heuristics;

wherein the application-level heuristics are monitored and recorded at an application level by the application monitor;

recording, by an IO (input/output) monitor, IO-level (input/output-level) heuristics in IO requests and subsequently passing, by the IO monitor, the IO-level heuristics to a storage stack;

wherein the IO monitor identifies IO stream characteristics in the IO requests and correlates the IO stream characteristics with application-defined objects;

wherein the application-level heuristics indicate a first plurality of components that can be accelerated in an application, a second plurality of components that are frequently accessed in the application, and a third plurality of components that are key to an application performance of the application;

wherein the IO-level heuristics indicate the IO stream characteristics and indicate a nature of the IO requests;

wherein the IO stream characteristics include a size of a dataset in an IO stream having the IO stream characteristics, an access pattern exhibiting if the IO stream comprises a sequential access pattern or a random access pattern, and whether the IO stream is predominantly reads or predominantly writes;

wherein the application-level heuristics indicate which components of the application can be accelerated, which components of the application are frequently accessed, and which components of the application are key to application performance;

correlating and analyzing, by an analyzer, the application-level heuristics and IO-level heuristics;

based on and in response to an analysis and a correlation of statistics in the application-level heuristics and in the IO-level heuristics, generating, by the analyzer, a caching policy, including parameters related to a cache and a primary storage coupled to the cache, for achieving optimal application performance;

based on the analysis and the correlation of the statistics in the application-level heuristics and in the IO-level heuristics, generating and provisioning a cache configuration for achieving optimal application performance including selecting settings for cache unit size, cache capacity, read cache size, write cache size, and regions of the primary storage that are candidates for cache acceleration;

wherein the caching policy comprises cache provisioning hints and an acceleration strategy; and

using, by a caching engine, the caching policy during caching operations on the cache in order to optimize a utilization of the cache and optimize a performance of the application.

2. The method of claim 1 , further comprising:

sending the caching policy to the caching engine for use by the caching engine in caching operations.

3. The method of claim 1 , further comprising:

provisioning, by the caching engine, the cache based on the caching policy so that a given size of the cache achieves a certain level of performance improvement.

4. The method of claim 1 , wherein the caching policy determines for a given block size at least one or more of the following: particular regions in the primary storage that are accelerated; amounts, in the cache, of cache spaces that are provisioned for a data set of the application and/or that are provisioned for accelerating writes; rates for a writeback and a copyback; and/or a writeback acceleration policy.

5. The method of claim 1 , wherein the cache is explicitly configured to be in effect and is different from any other kind of existing caching mechanism in a system.

6. The method of claim 5 , wherein the cache is different from a hardware cache such as a central processing unit (CPU) cache and other pre-existing caches in the system.

7. The method of claim 5 , wherein the cache is not configured such as a X86 server system with direct attached flash resources which are capable of being used as a cache storage.

8. The method of claim 5 , wherein the system does not have the cache but the system can benefit from having cache resources.

9. An apparatus, comprising:

a system comprising an application monitor, an IO (input/output) monitor, an analyzer, and a caching engine;

wherein the application monitor is configured to record application-level heuristics;

wherein the application-level heuristics are monitored and recorded at an application level by the application monitor;

wherein the IO monitor is configured to record IO-level (input/output-level) heuristics in IO requests and is configured to subsequently pass the IO-level heuristics to a storage stack;

wherein the IO monitor identifies IO stream characteristics in the IO requests and correlates the IO stream characteristics with application-defined objects;

wherein the analyzer is configured to correlate and analyze statistics in the application-level heuristics and in the IO-level heuristics and to generate a caching policy, including parameters related to a cache and a primary storage coupled to the cache, for achieving optimal application performance based on and in response to an analysis and a correlation of the application-level heuristics and IO-level heuristics,

wherein based on the analysis and the correlation of the statistics in the application-level heuristics and in the IO-level heuristics, the analyzer generates and provisions a cache configuration for achieving optimal application performance including selecting settings for cache unit size, cache capacity, read cache size, write cache size, and regions of the primary storage that are candidates for cache acceleration, and

wherein the caching engine is configured to use the caching policy during caching operations on the cache in order to optimize a utilization of the cache and optimize a performance of an application;

wherein the application-level heuristics indicate a first plurality of components that can be accelerated in an the application, a second plurality of components that are frequently accessed in the application, and a third plurality of components that are key to an application performance of the application;

wherein the IO-level heuristics indicate the IO stream characteristics and indicate a nature of the IO requests;

wherein the IO stream characteristics include a size of a dataset in an IO stream having the IO stream characteristics, an access pattern exhibiting if the IO stream comprises a sequential access pattern or a random access pattern, and whether the IO stream is predominantly reads or predominantly writes;

wherein the application-level heuristics indicate which components of the application can be accelerated, which components of the application are frequently accessed, and which components of the application are key to application performance; and

wherein the caching policy comprises cache provisioning hints and an acceleration strategy.

10. The apparatus of claim 9 , wherein the system is further configured to send the caching policy to the caching engine for use by the caching engine in caching operations.

11. The apparatus of claim 9 , wherein the caching engine provisions the cache based on the caching policy so that a given size of the cache achieves a certain level of performance improvement.

12. The apparatus of claim 9 , wherein the caching policy determines for a given block size at least one or more of the following: particular regions in the primary storage that are accelerated; amounts, in the cache, of cache spaces that are provisioned for a data set of the application and/or that are provisioned for accelerating writes; rates for a writeback and a copyback; and/or a writeback acceleration policy.

13. The apparatus of claim 9 , wherein the cache is explicitly configured to be in effect and is different from any other kind of existing caching mechanism in a system.

14. The apparatus of claim 13 , wherein the cache is different from a hardware cache such as a central processing unit (CPU) cache and other pre-existing caches in the system.

15. The apparatus of claim 13 , wherein the cache is not configured such as a X86 server system with direct attached flash resources which are capable of being used as a cache storage.

16. The apparatus of claim 13 , wherein the system does not have the cache but the system can benefit from having cache resources.

17. An article of manufacture, comprising:

a non-transitory computer-readable medium having stored thereon instructions operable to permit an apparatus to perform a method comprising:

recording, by an application monitor, application-level heuristics;

wherein the application-level heuristics are monitored and recorded at an application level by the application monitor;

recording, by an IO (input/output) monitor, IO-level (input/output-level) heuristics in IO requests and subsequently passing, by the IO monitor, the IO-level heuristics to a storage stack;

wherein the IO monitor identifies IO stream characteristics in the IO requests and correlates the IO stream characteristics with application-defined objects;

wherein the application-level heuristics indicate a first plurality of components that can be accelerated in an application, a second plurality of components that are frequently accessed in the application, and a third plurality of components that are key to an application performance of the application;

wherein the IO-level heuristics indicate the IO stream characteristics and indicate a nature of the IO requests;

wherein the IO stream characteristics include a size of a dataset in an IO stream having the IO stream characteristics, an access pattern exhibiting if the IO stream comprises a sequential access pattern or a random access pattern, and whether the IO stream is predominantly reads or predominantly writes;

wherein the application-level heuristics indicate which components of the application can be accelerated, which components of the application are frequently accessed, and which components of the application are key to application performance;

correlating and analyzing, by an analyzer, the application-level heuristics and IO-level heuristics; and

based on and in response to an analysis and a correlation of statistics in the application-level heuristics and in the IO-level heuristics, generating, by an analyzer, a caching policy, including parameters related to a cache and a primary storage coupled to the cache, for achieving optimal application performance;

based on the analysis and the correlation of the statistics in the application-level heuristics and in the IO-level heuristics, generating and provisioning a cache configuration for achieving optimal application performance including selecting settings for cache unit size, cache capacity, read cache size, write cache size, and regions of the primary storage that are candidates for cache acceleration;

wherein the caching policy comprises cache provisioning hints and an acceleration strategy; and

using, by a caching engine, the caching policy during caching operations on the cache in order to optimize a utilization of the cache and optimize a performance of the application.

18. The article of manufacture of claim 17 , wherein the instructions are further operable to permit the apparatus to perform a method further comprising:

sending the caching policy to the caching engine for use by the caching engine in caching operations.

19. The article of manufacture of claim 17 , wherein the instructions further permit the apparatus to perform a method further comprising:

provisioning, by the caching engine, the cache based on the caching policy so that a given size of the cache achieves a certain level of performance improvement.

20. The article of manufacture of claim 17 , wherein the caching policy determines for a given block size at least one or more of the following:

particular regions in the primary storage that are accelerated; amounts, in the cache, of cache spaces that are provisioned for a data set of the application and/or that are provisioned for accelerating writes; rates for a writeback and a copyback; and/or a writeback acceleration policy.

Assignments (2)
SECURITY INTEREST Recorded Oct 18, 2021
From: CACHEBOX, INC.
To: SILICON VALLEY BANK
Reel/Frame 057820/0247 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 5, 2018
From: NAGARAJ, MURALI
To: PRIMARYIO, INC.
Reel/Frame 047084/0677 →
Continuity (2)
Provisional Application 61954007 · Mar 17, 2014
Related Publication 20150261438A1 · Sep 17, 2015