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 Objections
Claim 10 is objected to because of the following informalities: the last two lines of the claim appear to have typos corresponding to the “I/O”. Appropriate correction is required.
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.
Claim(s) 1-4, 9, 17, and 18 is/are rejected under 35 U.S.C. 103 as being unpatentable over Palmer (US 2020/0285582).
In regards to claims 1 and 17, taking claim 17 as exemplary Palmer teaches
detecting individual sequential input/output (I/0) workloads in a stream of superimposed I/O workloads accessing a same physical volume, the detecting being based on a time dependency corresponding to accesses of blocks of the volume and locations of the accessed blocks. (¶15 incoming read commands (i.e. a stream) are compared with current actively tracked sequential streams (sequential I/O workloads) in the active stream table and a command history table (i.e. time dependency) to determine if the access is part of a currently tracked sequential stream(i.e. is a continuation of an active stream on the active stream table) or a new one (i.e. is a continuation of a previous access that was the start of a new stream, and is on the command history table). Fig. 4, ¶26, the active stream table also include a last modified indication 412 (i.e. time dependency). ¶29 teaches each read command from the host system 120 includes a logical block address (accesses of blocks). ¶16, fig. 1 teaches memory subsystem 110 connected to host system 120, which can be an SSD (physical volume), which contains a controller with a processor) ¶24 teaches the methods can be performed by a combination of hardware and set of instructions executed on a processing device). Fig.4 and 5 show that the active stream table tracks a starting LBA, ending LBA and most recent command size (i.e. locations of accessed blocks) and the command history table tracks the starting LBA and length (locations of accessed blocks).
Palmer may not explicitly teach
the time dependency being derived from a single table of accessed blocks of the physical volume, the time dependency being based on timestamps of when individual ones of the accessed blocks are accessed. (bolded for emphasis)
Palmer does teach two tables that are used, the active stream table 400 (fig. 4) and the command history table 500 (fig. 5), the active stream table has a last modified indication 412, according to ¶49 is to “indicate a time of the current modification to the entry” (i.e. a timestamp of when the indicated block was last accessed).
It would have been obvious to one of ordinary skill in the art to modify the teachings of Palmer such that active stream table 400 and the command history table 500 could be combined into a single table that tracks both active streams and accesses that were not assigned to a stream (i.e. potentially the start of a new stream). One of ordinary skill in the art could have combined these two tables into a single table and used the combined table to identify if incoming accesses belonged to an already active stream or not, and been able to achieve predictable results. The rationale to support a conclusion that the claim would have been obvious is that all the claimed elements were known in the prior art and one skilled in the art could have combined the elements as claimed by known methods with no change in their respective functions, and the combination yielded nothing more than predictable results to one of ordinary skill in the art. (see MPEP 2143 I. A.)
In regards to claims 2 and 18, Palmer teaches
wherein the individual sequential I/O workloads are detected by analyzing accesses to sequential blocks in the volume during a predefined period of time and/or across a predefined number of accesses to the volume. (¶15 incoming read commands (i.e. a stream) are compared with current actively tracked sequential streams (sequential I/O workloads) in the active stream table and a command history table (i.e. time dependency) to determine if the access is part of a currently tracked sequential stream or a new one. Fig. 4, ¶26, the active stream table also include a last modified indication 412 (i.e. time dependency). ¶25 and 30 teaches that the table(s) can support a predefined number of entries (i.e. a predefined number of accesses to the volume). ¶48 also teaches that a predefined age threshold (period of time) can be set for when data can be evicted from the table(s).
In regards to claim 3, Palmer teaches
wherein the individual sequential I/O workloads are detected even when temporally consecutive accesses to the volume access nonsequential blocks. (¶15, 26, fig. 4., as the active stream table has multiple entries, and a history table exists, the consecutive accesses from the host can be accesses to nonsequential blocks and the sequential streams (individual sequential I/O workloads) are still detected.
In regards to claim 4, Palmer teaches
wherein the detecting is based only on information in the table. (¶15 incoming read commands (i.e. a stream) are compared with current actively tracked sequential streams (sequential I/O workloads) in the active stream table and a command history table (i.e. time dependency) to determine if the access is part of a currently tracked sequential stream. Note, claim 1 above combined the two tables.
In regards to claim 9, Palmer teaches
wherein the method is performed by a storage system having the volume. (¶16, 19, fig. 1 teaches memory subsystem 110 (storage system) which can be an SSD (physical volume) has a controller that performs the readahead management functions.
Claim(s) 5-8, 10-16, 19-20 is/are rejected under 35 U.S.C. 103 as being unpatentable over Palmer (US 2020/0285582) in view of Speight (US 2009/0198907).
In regards to claims 5 and 19, Palmer may not explicitly teach
comprising calculating a sequentiality factor for each of the sequential I/O workloads wherein the sequentiality factors for the respective sequential I/O workloads are calculated based on a formula that includes as variables: a number of I/Os in a sequential stream of the corresponding sequential I/O workload and a total number of I/Os against the volume during performance of said number of I/Os in the particular sequential stream of the corresponding sequential I/O workload.
However, Speight teaches in ¶36 that the rate of data consumption for each of the streams (sequential workloads) can be evaluated to determine a priority (sequentiality factor) which is then used to modify the frequency (i.e. order of prefetches) of prefetches for each sequential stream relative to each other.
It would have been obvious to one of ordinary skill in the art prior to the effective filing date of the claimed invention to have incorporated the teachings of Speight to improve the system of Palmer. This allows the system to dynamically adjust the order/frequency of when data for each of the streams is prefetched. The motivation for such a modification is that the efficiency of the catch can be improved via an increased hit rate and minimizing late/early prefetching.
In regards to claims 6, Palmer and Speight further teaches
wherein the sequentiality factor for each sequential I/O workload is calculated based on a formula that includes as variables: a number of I/Os in a sequential stream of the sequential I/0 workload and a total number of I/Os against the volume during performance of said number of I/Os.
Palmer teaches in ¶52-58 that the command size of an identified active stream vs. other streams can be used to determine the amount of the read-ahead cache assigned to each stream, and that a fairness policy can be used to determine how the read-ahead cache is populated for the identified streams.
Speight teaches in ¶36 that the rate of data consumption for each of the streams (sequential workloads) is evaluated to determine a priority (sequentiality factor) for each of the streams relative to each other (i.e. the priority for each stream is proportional to the rate (number of access per a unit of time of a sequential workload) compared to all the other streams (i.e. total number of I/Os per a unit time)).
It would have been obvious to one of ordinary skill in the art prior to the effective filing date of the claimed invention to have incorporated the teachings of Palmer and Speight to improve the system of Palmer by taking into account the I/Os of the individual streams in order to calculate a “sequentiality factor” that would allow a fair split between all of the active streams based on their actual usage. This allows the system to dynamically adjust the order/frequency of when data for each of the streams is prefetched. The motivation for such a modification is that the efficiency of the catch can be improved via an increased hit rate and minimizing late/early prefetching.
In regards to claim 13, Palmer further teaches
the time dependency is derived from a table of accessed blocks, the table including the locations of the accessed blocks and indications of times of accesses of the individual accessed blocks. (Fig. 4, ¶26, the active stream table also include a last modified indication 412 (i.e. time dependency). ¶29 teaches each read command from the host system 120 includes a logical block address (accesses of blocks). ¶16, fig. 1 teaches memory subsystem 110 connected to host system 120, which can be an SSD (physical volume), which contains a controller with a processor) ¶24 teaches the methods can be performed by a combination of hardware and set of instructions executed on a processing device). Fig.4 and 5 show that the active stream table tracks a starting LBA, ending LBA and most recent command size (i.e. locations of accessed blocks) and the command history table tracks the starting LBA and length (locations of accessed blocks).
In regards to claims 7, 14 and 20 Speight further teaches
comprising determining a preferred order of read ahead of blocks for one or more of the sequential I/0 workloads based on the sequentiality factors. (¶36 the priority (sequentiality factor) is then used to adjust the order of prefetches (read ahead blocks) for each stream).
In regards to claim 8 and 15, Speight further teaches
comprising performing read ahead of blocks for one or more of the sequential I/0 workloads according to the preferred order. (¶36 prefetches (read ahead of blocks) are performed in the queued order)
In regards to claim 10, Palmer teaches
detecting a plurality of sequential input/output (I/0) workloads in an I/0 stream of superimposed workloads accessing a same volume, the detecting being based on a time dependency corresponding to accesses of blocks of the volume; (¶15 incoming read commands (i.e. a stream) are compared with current actively tracked sequential streams (sequential I/O workloads) in the active stream table and a command history table (i.e. time dependency) to determine if the access is part of a currently tracked sequential stream or a new one. Fig. 4, ¶26, the active stream table also include a last modified indication 412 (i.e. time dependency). ¶29 teaches each read command from the host system 120 includes a logical block address (accesses of blocks). ¶16, fig. 1 teaches memory subsystem 110 connected to host system 120, which can be an SSD (physical volume), which contains a controller with a processor) ¶24 teaches the methods can be performed by a combination of hardware and set of instructions executed on a processing device).
Palmer may not explicitly teach
calculating a sequentiality factor of the sequential I/O workloads, wherein the sequentiality factors for the respective sequential I/O workloads are calculated based on a formula that includes as variables: a number of I/Os in a sequential stream of the corresponding sequential I/O workload and a total number of I/Os against the volume during performance of said number of I/Os in of the corresponding sequential I/O the particular sequential stream I/O workload.
Palmer does teach in ¶52-58 that the command size of an identified active stream vs. other streams can be used to determine the amount of the read-ahead cache assigned to each stream, and that a fairness policy can be used to determine how the read-ahead cache is populated for the identified streams.
Speight teaches in ¶36 that the rate of data consumption for each of the streams (sequential workloads) is evaluated to determine a priority (sequentiality factor) for each of the streams relative to each other (i.e. the priority for each stream is proportional to the rate (number of access per a unit of time of a sequential workload) compared to all the other streams (i.e. total number of I/Os per a unit time)).
It would have been obvious to one of ordinary skill in the art prior to the effective filing date of the claimed invention to have incorporated the teachings of Palmer and Speight to improve the system of Palmer by taking into account the I/Os of the individual streams in order to calculate a “sequentiality factor” that would allow a fair split between all of the active streams based on their actual usage. This allows the system to dynamically adjust the order/frequency of when data for each of the streams is prefetched. The motivation for such a modification is that the efficiency of the catch can be improved via an increased hit rate and minimizing late/early prefetching.
In regards to claim 11, Palmer and Speight may not explicitly teach
the time dependency being derived from a single table of accessed blocks of the physical volume, the time dependency being based on timestamps of when individual ones of the accessed blocks are accessed. (bolded for emphasis)
Palmer does teach two tables that are used, the active stream table 400 (fig. 4) and the command history table 500 (fig. 5), the active stream table has a last modified indication 412, according to ¶49 is to “indicate a time of the current modification to the entry” (i.e. a timestamp of when the indicated block was last accessed).
It would have been obvious to one of ordinary skill in the art to modify the teachings of Palmer such that active stream table 400 and the command history table 500 could be combined into a single table that tracks both active streams and accesses that were not assigned to a stream (i.e. potentially the start of a new stream). One of ordinary skill in the art could have combined these two tables into a single table and used the combined table to identify if incoming accesses belonged to an already active stream or not, and been able to achieve predictable results. The rationale to support a conclusion that the claim would have been obvious is that all the claimed elements were known in the prior art and one skilled in the art could have combined the elements as claimed by known methods with no change in their respective functions, and the combination yielded nothing more than predictable results to one of ordinary skill in the art. (see MPEP 2143 I. A.)
In regards to claim 12, Palmer teaches
wherein the individual sequential I/0 workloads are detected by analyzing accesses to sequential blocks in the volume during a period of time and/or across a number of accesses to the volume. (¶15 incoming read commands (i.e. a stream) are compared with current actively tracked sequential streams (sequential I/O workloads) in the active stream table and a command history table (i.e. time dependency) to determine if the access is part of a currently tracked sequential stream or a new one. Fig. 4, ¶26, the active stream table also include a last modified indication 412 (i.e. time dependency).
In regards to claim 16, Palmer teaches
wherein the method is performed by a storage system having the volume. (¶16, 19, fig. 1 teaches memory subsystem 110 (storage system) which can be an SSD (physical volume) has a controller that performs the readahead management functions.
Conclusion
Applicant's amendment necessitated the new ground(s) of rejection presented in this Office action. Accordingly, THIS ACTION IS MADE FINAL. See MPEP § 706.07(a). Applicant is reminded of the extension of time policy as set forth in 37 CFR 1.136(a).
A shortened statutory period for reply to this final action is set to expire THREE MONTHS from the mailing date of this action. In the event a first reply is filed within TWO MONTHS of the mailing date of this final action and the advisory action is not mailed until after the end of the THREE-MONTH shortened statutory period, then the shortened statutory period will expire on the date the advisory action is mailed, and any nonprovisional extension fee (37 CFR 1.17(a)) pursuant to 37 CFR 1.136(a) will be calculated from the mailing date of the advisory action. In no event, however, will the statutory period for reply expire later than SIX MONTHS from the mailing date of this final action.
Any inquiry concerning this communication or earlier communications from the examiner should be directed to JASON W BLUST whose telephone number is (571)272-6302. The examiner can normally be reached 12-8:30 EST.
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, Hosain Alam can be reached at (571) 272-3978. 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.
/JASON W BLUST/Primary Examiner, Art Unit 2132