DETAILED ACTION
Claims 1-16 are pending in this application.
Notice of Pre-AIA or AIA Status
The present application, filed on or after March 16, 2013, is being examined under the first inventor to file provisions of the AIA .
Claim Rejections - 35 USC § 103
The following is a quotation of 35 U.S.C. 103 which forms the basis for all obviousness rejections set forth in this Office action:
A patent for a claimed invention may not be obtained, notwithstanding that the claimed invention is not identically disclosed as set forth in section 102, if the differences between the claimed invention and the prior art are such that the claimed invention as a whole would have been obvious before the effective filing date of the claimed invention to a person having ordinary skill in the art to which the claimed invention pertains. Patentability shall not be negated by the manner in which the invention was made.
Claims 1, 2, 4, 9, 10 and 12 are rejected under 35 U.S.C. 103 as being unpatentable over U.S. Pub. No. 2018/0136838 A1 to White et al, in view of U.S. Pub. No. 2016/0357455 A1 to Kim et al.
As to claim 1, White teaches a memory allocation device, comprising:
a memory, configured to store at least one command (Main Memory 1004); and
a processor, configured to read the at least one command to execute (Central Processor 1001) following steps:
calculating a page thrashing value of the memory (delta heat value) (“…At step 104, the plurality of blocks of memory in the virtual storage device are reallocated among a plurality of blocks of memory in two or more real storage devices based on the heat map. The heat values associated with each block of allocated memory in the virtual storage device may be analyzed to determine an optimal allocation of the plurality of blocks of memory in the virtual storage device among the plurality of blocks of memory in the two or more real storage devices. In one embodiment, a minimum and maximum heat value is determined for each tier of real storage devices. A delta heat value may be calculated by subtracting a minimum heat value associated with a first tier of real storage devices from a maximum heat value associated with a second tier of real storage devices. In one embodiment, the reallocation of the plurality of blocks of memory is triggered based on a comparison of the delta heat value with a trigger value…Nevertheless, in order to avoid unnecessary thrashing of the memory allocation, a reallocation operation may only be triggered if the delta heat value is greater than a threshold value, referred to herein as a trigger value…In one embodiment, the delta heat value may be calculated each time a memory access request is performed. The delta heat value may be compared to the trigger value in order to determine whether a reallocation operation should be triggered. If the delta heat value is greater than the trigger value, then a callback function is executed that causes the VSD Engine 353 to launch a reallocation task…” paragraphs 0024/0084/0085/0089);
determining a corresponding relation between the page thrashing value (delta heat value) and a predetermined thrashing value (a threshold value, referred to herein as a trigger value) (“…Nevertheless, in order to avoid unnecessary thrashing of the memory allocation, a reallocation operation may only be triggered if the delta heat value is greater than a threshold value, referred to herein as a trigger value…In one embodiment, the delta heat value may be calculated each time a memory access request is performed. The delta heat value may be compared to the trigger value in order to determine whether a reallocation operation should be triggered. If the delta heat value is greater than the trigger value, then a callback function is executed that causes the VSD Engine 353 to launch a reallocation task…The GetCandidates( ) method may implement additional logic as well. For example, the set of block identifiers may be less than the number requested if the range of heat values associated with the set of block identifiers would be larger than the delta heat value. In other words, even though the delta heat value is larger than the trigger value, there could be a situation where there are outlier heat values in a particular tier (i.e., much hotter or much cooler than other heat values in the tier) and it would be inefficient to move the number of blocks of memory when the blocks of memory are associated with such disparate heat values. As another example, a minimum or maximum population of the tier may be enforced. For example, a minimum number of blocks of allocated memory should be utilized within a tier before any data is moved from that tier to a lower performance class tier. Thus, even if a particular block of memory is a candidate to be moved from one tier to another due to the heat value associated with that block of memory, the GetCandidates( ) method will not include that block identifier (or any block identifier) in the set of block identifiers because the capacity of that tier of RSDs 214 is underutilized. In other words, it is better to place data on the available RSDs 214 in the highest performance class tier until that time where the total data stored on the RSDs 214 reaches some threshold where allocation of data between the tiers becomes necessary. In addition, the GetCandidates( ) method could return additional block identifiers in the set of block identifiers that would normally not be included in the set if a maximum capacity of that tier is exceeded (i.e., there are below a threshold number of free blocks of memory in the tier). For example, the heat value associated with a particular block of memory is high enough where including the corresponding block identifier in the set of block identifiers to be moved from a higher performance class tier to a lower performance class tier is not warranted. However, because the number of blocks of free memory in the tier is below a threshold, the block identifier would be included in the set of block identifiers in order to free additional blocks of memory in the higher performance class tier for new data…In another embodiment, the GetCandidates( ) method selects the set of block identifiers by determining the difference between the delta heat value and the trigger value and selecting all block identifiers associated with heat values from a higher performance class tier that are within the difference of the minimum heat value for that tier. The blocks of memory associated with these block identifiers will be reallocated from the higher performance class tier to the lower performance class tier to ensure that, if the reallocation could be completed immediately, the delta heat value between the tiers would be less than or equal to the trigger value. Alternatively, in another embodiment, the set of block identifiers may be selected by determining the difference between the delta heat value and the trigger value and selecting all block identifiers associated with heat values from a lower performance class tier that are within the difference of the maximum heat value for that tier. The blocks of memory associated with these block identifiers will be reallocated from the lower performance class tier to the higher performance class tier to ensure that, if the reallocation could be completed immediately, the delta heat value between the tiers would be less than or equal to the trigger value…” paragraphs 0024/0084/0085/0089/0090); and
deciding whether to lend a memory according to the corresponding relation (a reallocation operation may only be triggered if the delta heat value is greater than a threshold value, referred to herein as a trigger value) (“…Nevertheless, in order to avoid unnecessary thrashing of the memory allocation, a reallocation operation may only be triggered if the delta heat value is greater than a threshold value, referred to herein as a trigger value…In one embodiment, the delta heat value may be calculated each time a memory access request is performed. The delta heat value may be compared to the trigger value in order to determine whether a reallocation operation should be triggered. If the delta heat value is greater than the trigger value, then a callback function is executed that causes the VSD Engine 353 to launch a reallocation task…The GetCandidates( ) method may implement additional logic as well. For example, the set of block identifiers may be less than the number requested if the range of heat values associated with the set of block identifiers would be larger than the delta heat value. In other words, even though the delta heat value is larger than the trigger value, there could be a situation where there are outlier heat values in a particular tier (i.e., much hotter or much cooler than other heat values in the tier) and it would be inefficient to move the number of blocks of memory when the blocks of memory are associated with such disparate heat values. As another example, a minimum or maximum population of the tier may be enforced. For example, a minimum number of blocks of allocated memory should be utilized within a tier before any data is moved from that tier to a lower performance class tier. Thus, even if a particular block of memory is a candidate to be moved from one tier to another due to the heat value associated with that block of memory, the GetCandidates( ) method will not include that block identifier (or any block identifier) in the set of block identifiers because the capacity of that tier of RSDs 214 is underutilized. In other words, it is better to place data on the available RSDs 214 in the highest performance class tier until that time where the total data stored on the RSDs 214 reaches some threshold where allocation of data between the tiers becomes necessary. In addition, the GetCandidates( ) method could return additional block identifiers in the set of block identifiers that would normally not be included in the set if a maximum capacity of that tier is exceeded (i.e., there are below a threshold number of free blocks of memory in the tier). For example, the heat value associated with a particular block of memory is high enough where including the corresponding block identifier in the set of block identifiers to be moved from a higher performance class tier to a lower performance class tier is not warranted. However, because the number of blocks of free memory in the tier is below a threshold, the block identifier would be included in the set of block identifiers in order to free additional blocks of memory in the higher performance class tier for new data…In another embodiment, the GetCandidates( ) method selects the set of block identifiers by determining the difference between the delta heat value and the trigger value and selecting all block identifiers associated with heat values from a higher performance class tier that are within the difference of the minimum heat value for that tier. The blocks of memory associated with these block identifiers will be reallocated from the higher performance class tier to the lower performance class tier to ensure that, if the reallocation could be completed immediately, the delta heat value between the tiers would be less than or equal to the trigger value. Alternatively, in another embodiment, the set of block identifiers may be selected by determining the difference between the delta heat value and the trigger value and selecting all block identifiers associated with heat values from a lower performance class tier that are within the difference of the maximum heat value for that tier. The blocks of memory associated with these block identifiers will be reallocated from the lower performance class tier to the higher performance class tier to ensure that, if the reallocation could be completed immediately, the delta heat value between the tiers would be less than or equal to the trigger value…” paragraphs 0024/0084/0085/0089/0090).
White is silent with reference to lending a contiguous memory.
Kim teaches lending a contiguous memory (“…If a contiguous memory request is received, the contiguous memory request processing unit 110 confirms a contiguous memory region corresponding to the contiguous memory request, secures contiguous memory space by arranging (reclaiming or moving) the memory if the contiguous memory region is not confirmed, and allocates the secured contiguous memory space corresponding to the contiguous memory request. The contiguous memory request processing unit 110 may allocate the contiguous memory region of the CMA region…The CMA region 135 may be a CMA region that is set to allocate the contiguous memory. The CMA region may be a region that is set to process the CMA request. The CMA region may be used to allocate the contiguous memory…” paragraphs 0039/0042).
It would have been obvious to one of ordinary skill in the art before the effective filing date of the claim invention to modify the system of White with the teaching of Kim because the teaching of Kim would improve the system of White by providing a memory allocation method through efficient management of the memory (Kim paragraph 0004).
As to claim 2, White teaches the contiguous memory allocation device of claim 1, wherein the processor is further configured to read the at least one command to execute following steps: determining whether the page thrashing value is larger than the predetermined thrashing value; and if the page thrashing value is larger than the predetermined thrashing value, lending the memory (the VSD Engine 353 to launch a reallocation task) (“…Nevertheless, in order to avoid unnecessary thrashing of the memory allocation, a reallocation operation may only be triggered if the delta heat value is greater than a threshold value, referred to herein as a trigger value…In one embodiment, the delta heat value may be calculated each time a memory access request is performed. The delta heat value may be compared to the trigger value in order to determine whether a reallocation operation should be triggered. If the delta heat value is greater than the trigger value, then a callback function is executed that causes the VSD Engine 353 to launch a reallocation task…” paragraphs 0024/0084).
As to claim 4, White teaches the memory allocation device of claim 1, wherein the predetermined thrashing value is proportional to a memory pressure of the memory (access frequency) (“…FIG. 1 illustrates a flowchart of a method 100 for allocating blocks of memory in a virtual storage device based on access frequency, according to one embodiment. Although the method 100 is described in the context of a program executed by a processor, the method 100 may also be performed by custom circuitry or by a combination of custom circuitry and a program. At step 102, access frequency is tracked for a plurality of blocks of memory in a virtual storage device utilizing a heat map. In one embodiment, a heat map is a software construct that maps block identifiers corresponding to the plurality of blocks of memory to heat values that represent the access frequency of the blocks of memory…” paragraph 0021).
As to claim 9, see the rejection of claim 1 above.
As to claim 10, see the rejection of claim 2 above.
As to claim 12, see the rejection of claim 4 above.
Claims 3 and 11 are rejected under 35 U.S.C. 103 as being unpatentable over U.S. Pub. No. 20180136838 A1 to White et al, in view of U.S. Pub. No. 20160357455 A1 to Kim et al. as applied to claims 1 and 9 above, and further in view of U.S. Pub. No. 2012/0151169 A1 to Mori et al.
As to claim 3, White as modified by Kim teaches the contiguous memory allocation device of claim 1, however it is silent with reference to wherein the processor is further configured to read the at least one command to execute following steps: determining whether the page thrashing value is larger than the predetermined thrashing value; and if the page thrashing value is not larger than the predetermined thrashing value, prohibiting from lending the contiguous memory.
Mori teaches wherein the processor is further configured to read the at least one command to execute following steps: determining whether the page thrashing value is larger than the predetermined thrashing value; and if the page thrashing value is not larger than the predetermined thrashing value, prohibiting from lending the memory (if the sum of access frequencies of the redundantly allocated real pages 1121 is less than the deduplication threshold, the storage apparatus 1000 cancels the redundant allocation) (“…As described above, the storage apparatus 1000 according to this Embodiment 1 administrates the access frequencies to the real pages 1121; if the sum of access frequencies of the redundantly allocated real pages 1121 is less than the deduplication threshold, the storage apparatus 1000 cancels the redundant allocation and integrates the real pages 1121 into any one thereof. This allows the access frequency to the real page 1121 to be less than the deduplication threshold even after elimination of the data redundancy, thereby avoiding excessive concentration of access after the data deduplication and access performance degradation…” paragraph 0136).
It would have been obvious to one of ordinary skill in the art before the effective filing date of the claim invention to modify the system of White and Kim with the teaching of Mori because the teaching of Mori would improve the system of White and Kim by allowing performance degradation to be suppressed (Mori paragraph 0014).
Allowable Subject Matter
Claims 5-8 and 13-16 are objected to as being dependent upon a rejected base claim, but would be allowable if rewritten in independent form including all of the limitations of the base claim and any intervening claims.
Reasons for allowance
The following is an examiner’s statement of reasons for allowance:
The closest prior art of records, (U.S. Pub. No. 2018/0136838 A1 to White et al. and U.S. Pub. No. 2016/0357455 A1 to Kim et al.), taken alone or in combination do not specifically disclose or suggest the claimed recitations (claims 5-8 and 13-16), when taken in the context of claims as a whole.
Any comments considered necessary by applicant must be submitted no later than the payment of the issue fee and, to avoid processing delays, should preferably accompany the issue fee. Such submissions should be clearly labeled “Comments on Statement of Reasons for Allowance.”
Conclusion
The prior art made of record and not relied upon is considered pertinent to applicant's disclosure.
U.S. Pub. No. 2017/0344298 A1 to Shih et al. and directed to memory management in a computer system may include allocating memory pages from a physical memory of the computer system to applications executing on the computer system.
J.P. No. H08272684A to Oku et al. and directed to thrashing prevention system
U.S. Pat. No. 5,752,261 issued to Cochcroft and directed to method and apparatus for detecting thrashing in a cache memory.
U.S. Pub. No. 2008/0307188 A1 to Franaszek et al. and directed to a system for identifying operating system having a plurality of memory pages allocated, means for counting the number of a plurality of memory pages allocated, and means for counting a number of free space pages in the compressed memory.
U.S. Pub. No. 2025/0278356 A1 to Basu et al. and directed to memory management in a digital processing.
U.S. Pub. No. 2006/0236059 A1 to Fleming et al. and directed to system and method of allocating contiguous real memory in a data processing system.
Any inquiry concerning this communication or earlier communications from the examiner should be directed to CHARLES E ANYA whose telephone number is (571)272-3757. The examiner can normally be reached Mon-Fir. 9-6pm.
Examiner interviews are available via telephone, in-person, and video conferencing using a USPTO supplied web-based collaboration tool. To schedule an interview, applicant is encouraged to use the USPTO Automated Interview Request (AIR) at http://www.uspto.gov/interviewpractice.
If attempts to reach the examiner by telephone are unsuccessful, the examiner’s supervisor, KEVIN YOUNG can be reached at 571-270-3180. The fax phone number for the organization where this application or proceeding is assigned is 571-273-8300.
Information regarding the status of published or unpublished applications may be obtained from Patent Center. Unpublished application information in Patent Center is available to registered users. To file and manage patent submissions in Patent Center, visit: https://patentcenter.uspto.gov. Visit https://www.uspto.gov/patents/apply/patent-center for more information about Patent Center and https://www.uspto.gov/patents/docx for information about filing in DOCX format. For additional questions, contact the Electronic Business Center (EBC) at 866-217-9197 (toll-free). If you would like assistance from a USPTO Customer Service Representative, call 800-786-9199 (IN USA OR CANADA) or 571-272-1000.
/CHARLES E ANYA/Primary Examiner, Art Unit 2194