FINAL ACTION
Response to Arguments
Applicant’s arguments with respect to claim(s) 1, 10, 12 and 20 have been considered but are moot because the new ground of rejection does not rely on any reference applied in the prior rejection of record for any teaching or matter specifically challenged in the argument.
Claim Rejections - 35 USC § 103
Claim(s) 1, 9, 10, 12 and 20 is/are rejected under 35 U.S.C. 103 as being unpatentable over Midgley (US 6625623) in view of Ibryam (US 20210157649) and Schay (US 20230305994).
Regarding claim 1, Midgley teaches A method of data recovery for a database system comprising: retrieving data from a backup data storage medium wherein the data was previously backed up to the backup data storage medium from the database system (“As the system 10 creates a replicated image of the data structure 52, including the directory structure, the subdirectory structure, and other such information, it will be apparent to those of ordinary skill in the art that such a replicated data structure facilitates the facile retrieval of selected portions of the data backed-up by the system “ col 11 lines 27-33); storing the data in a buffer; retrieving data pages of the data from the buffer into a main memory of the database system; (“In this case, the data is stored on the source system in a buffer/journal and transmitted over the network at the available/requested speed.” Col 22 lines 15-19); performing…on the data pages to produce processed data pages; (“the coalescence process can be used to merge all of the changes, and transmit only the most recent image of the data” col 22 lines 24-26); storing the processed data pages in a main memory of, (“a backup process for transmitting source files stored on the data server to the backup server for creating a copy file on the backup server” col 5 lines 39-41); and subsequently writing the processed data pages from the main memory to a persistent memory of the database system, thereby restoring the data to the database system; (“the data may be physically stored on any suitable memory system including a cache memory system, a random access data memory, or a persistent data memory, such as a hard disk drive, RAID system, tape drive system,” col 8 lines 52-55); and adjusting a throughput of the plurality of processing functions based on an available capacity of the main memory (“and a bandwidth control process for monitoring transmission of data by the backup process for controlling the weight of delivery of data from the data server to the backup server, thereby controlling network bandwidth usage.” Col 5 lines 41-45, “In an additional embodiment, the systems and methods described herein include a backup process that monitors other available network resources, such as buffer resources,” col 6 lines1-3).
Midgley does not teach so that the available capacity of the main memory is kept between first and second thresholds during the data recovery wherein the adjusting comprises increasing the number of the plurality of checksum validation jobs being performed in parallel on the data pages in the main memory when the available capacity of the main memory exceeds the first threshold, and wherein the adjusting comprises reducing the number of the plurality of checksum validation jobs being performed in parallel on the data pages in the main memory when the available capacity of the main memory falls below the second threshold.
Ibryam teaches so that the available capacity of the main memory is kept between first and second thresholds during the data recovery wherein the adjusting comprises increasing the number of the plurality of checksum validation jobs being performed in parallel on the data pages in the main memory when the available capacity of the main memory exceeds the first threshold (“The allocation of the first quantity of threads is increased to a second quantity of threads in the thread pool in response to determining that each of the one or more performance metrics meets the respective predetermined threshold.“ ¶3); and wherein the adjusting comprises reducing the number of the plurality of checksum validation jobs being performed in parallel on the data pages in the main memory when the available capacity of the main memory falls below the second threshold (“For example, if the performance metrics tracker 172 measures memory utilization and CPU utilization of the consumer 150 four times after 30 seconds, prior to the 2 minute period elapsing, and on the fourth time measures a memory utilization of 92% and a CPU utilization of 45%, in some instances, the message processing controller 168 decreases the allocation of threads and resets the time period. In other words, after decreasing an allocation of threads (e.g., from 125 to 100) because the higher allocation (e.g., 125) caused a performance metric (e.g., memory utilization) to degrade to a threshold, the time period (or messages processed) is a test run for the decreased allocation of threads (e.g., 100).” ¶45). It would have been obvious for one of ordinary skill in the art prior to the filing of the claimed invention to combine the data backup and bandwidth control methods of Midgley with the increasing or decreasing of allocated thread counts based on memory usage thresholds as taught by Ibrayam. This would allow the system to more efficiently utilize resources and adapt to changing conditions that affect processing (Ibrayam ¶16).
Midgley and Ibrayam do not teach performing, in parallel, a plurality of processing functions checksum validation jobs on the data pages in the main memory to produce processed data pages… and adjusting a throughput number of the plurality of processing functions checksum validation jobs being performed in parallel.
Schay teaches performing, in parallel, a plurality of processing functions checksum validation jobs on the data pages in the main memory to produce processed data pages (“a first checksum for data associated with the first batch of entries loaded in a first buffer (e.g., 17A) assigned to the first worker process for processing the first batch of entries; appending (e.g., B62, FIG. 1C), by the first worker process, the first buffer contents processed by the first worker process to a first archive file (e.g., 20A, FIG. 1A) assigned to the first worker process; determining (e.g., B44, FIG. 1B), by the second worker process (e.g., 18N, FIG. 1A), in parallel with the first worker process, a second checksum for data associated with the second batch of entries loaded in a second buffer (e.g., 17N, FIG. 1N) assigned to the second worker process for processing the second batch of entries; appending (e.g., B62, FIG. 1C)” ¶49) and adjusting a throughput number of the plurality of processing functions checksum validation jobs being performed in parallel (“The parameters include a location where the source file system 14 stores data, instructions for compressing data, instructions for encrypting information, parity parameters, if specified, a maximum number of worker processes 18 that can be used,” ¶39). It would have been obvious for one of ordinary skill in the art prior to the filing of the claimed invention to combine the parallel execution of checksum functions as taught by Schay with the backup resource management methods taught by Midgley and Ibrayam. Checksums are an example of processing functions which would allow for corrupted data to be corrected (Schay ¶33).
Regarding claim 9, Schay teaches wherein the plurality of checksum validation jobs operate on a plurality of threads. (“a first checksum for data associated with the first batch of entries loaded in a first buffer (e.g., 17A) assigned to the first worker process for processing the first batch of entries; appending (e.g., B62, FIG. 1C), by the first worker process, the first buffer contents processed by the first worker process to a first archive file (e.g., 20A, FIG. 1A) assigned to the first worker process; determining (e.g., B44, FIG. 1B), by the second worker process (e.g., 18N, FIG. 1A), in parallel with the first worker process, a second checksum for data associated with the second batch of entries loaded in a second buffer (e.g., 17N, FIG. 1N) assigned to the second worker process for processing the second batch of entries;” ¶49). Processes and threads are interpreted as synonymous in this context.
Regarding claim 10, Midgley and Schay teach wherein the plurality checksum validation jobs process the data pages from the main memory and send the processed data pages in a queue before writing the processed data pages to the persistent memory (“ Moreover, the bandwidth control process 44 may include a coalescence process that operates with the network bandwidth control process 44, to reduce the amount of data to be sent to the target/backup system when the data appears to exceed the available network resources, such as bandwidth. In this case, the data is stored on the source system in a buffer/journal and transmitted over the network at the available/requested speed.” Col 22 lines 9-17). The buffer/journal is interpreted as equivalent to a queue.
Regarding claim 12, Midgley teaches A computer system comprising: at least one processor; at least one non-transitory computer readable medium storing computer executable instructions that, when executed by the at least one processor, cause the computer system to perform a method of backing up data comprising (“The systems and methods described above may be realized as a software components operating on a conventional data processing system such as a UNIX, or Windows NT workstation” col 22 lines 62-65). The rest of the claim recites an identical method to that of claim 1 which is taught by Midgley, Ibrayam and Schay as shown above.
Regarding claim 20, Midgley teaches A non-transitory computer-readable medium storing computer-executable (“The systems and methods described above may be realized as a software components operating on a conventional data processing system such as a UNIX, or Windows NT workstation” col 22 lines 62-65),Midgley, Schay and Ibrayam teach the same method as claim 1 which is taught above.
Claim(s) 3, 11, and 14 are rejected under 35 U.S.C. 103 as being unpatentable over Midgley, Schay and Ibrayam in view of Thomsen (20190018740).
Regarding claim 3, Midgley, Schay or Ibrayam do not teach further comprising, for each data page: allocating a memory page in the main memory of the database system to store each data page; copying each data page to the memory page allocated in main memory; and performing, by one of the plurality checksum validation jobs functions, a checksum validation operation on the page
Thomsen teaches further comprising, for each data page: allocating a memory page in the main memory of the database system to store each data page; copying each data page to the memory page allocated in main memory; and performing, by one of the plurality checksum validation jobs functions, a checksum validation operation on the page. (in particular, in some embodiments, a checksum process involves generating a checksum for each block of data (e.g., data chunk, page, etc.) to be written to the backup storage system, validating the checksum,” ¶55). It would have been obvious for one of ordinary skill in the art prior to the filing of the claimed invention to combine the data backup throughput control methods of Midgley with the use of a checksum on the data. This would verify the integrity of the page (¶74).
Regarding claim 11, Thomsen teaches wherein the processed data pages are written to the persistent memory in encrypted form (“the page is handled over to a second thread/job, which then will perform the missing steps (allocating a shadow page, copying the page into the shadow page, calculating a checksum, encrypting the page and triggering the I/O)” ¶75).
Regarding claim 14, Midgley and Ibrayam teach the computer system of claim 12 as shown above. Thomsen teaches further comprising, for each data page: allocating a memory page in the main memory of the database system to store each data page; copying each data page to the memory page allocated in main memory; and performing, by one of the plurality of checksum validation jobs, a checksum validation operation on the data page. (in particular, in some embodiments, a checksum process involves generating a checksum for each block of data (e.g., data chunk, page, etc.) to be written to the backup storage system, validating the checksum,” ¶55).
Claim(s) 4, and 15 are rejected under 35 U.S.C. 103 as being unpatentable over Midgley, Schay and Ibrayam in view of Kashi (US 20230409535).
Regarding claim 4, Midgley does not teach wherein the plurality of checksum validation jobs has a corresponding plurality of queues to receive tasks to process particular data pages, wherein the plurality of checksum validation jobs receives one or more tasks from the plurality of queues, and wherein the adjusting of the throughput of the plurality of checksum validation jobs is further based on a number of tasks in the plurality of queues.
Kashi teaches wherein the plurality of checksum validation jobs has a corresponding plurality of queues to receive tasks to process particular data pages, wherein the plurality of checksum validation jobs receives one or more tasks from the plurality of queues, (“In yet another embodiment, the temporary buffer comprises a linked list of queues holding the replication-related jobs for the cross-region replication to be executed by the plurality of parallel running threads.” ¶7); , and wherein the adjusting of the throughput of the plurality of checksum validation jobs is further based on a number of tasks in the plurality of queues. (“The fair-share architecture is scalable because the linked-list of queues in the fair-share architecture can scale up and down as the number of job increase and decrease.” ¶178). It would have been obvious to one of ordinary skill in the art prior to the filing of the claimed invention to combine the backup write throughput control methods of Midgley with the increasing or decreasing of tasks taught by Kashi. This would allow the system to evenly distribute jobs for execution (¶178).
Regarding claim 15, Midgley and Ibrayam teach the system of claim 12 as shown above and the rest of the claim is substantially identical to claim 4 and is rejected for the same reasons.
Claim(s) 6, 7, 8, 17, 18 and 19 are rejected under 35 U.S.C. 103 as being unpatentable over Midgley, Schay, Ibrayam and Kashi in view of Swallow.
Regarding claim 6, Midgley, Ibrayam and Kashi teach the method of claim 4 as shown above. They do not teach wherein when the number of tasks in the plurality of queues is above a threshold, the number of the plurality of checksum validation jobs is increased
Swallow teaches wherein when the number of tasks in the plurality of queues is above a threshold, the number of the plurality of checksum validation jobs is increased (“For example, the result of the scanning process may identify less than a threshold number of files for backup. In such cases, the storage manager 140 may determine that too few files have been modified since a previous backup to initiating new backup process” col 56 lines 5-9, “if it is determined that the latency of the network 306 is improved by more than a threshold amount, the scanning agent 402 may request that the network storage manager 404 add an additional scanning threads” col 59 lines 19-23). It would have been obvious to one of ordinary skill in the art prior to the filing of the claimed invention to combine the backup throughput control and thread managing methods taught by Midgley and Kashi with increasing or decreasing functions based on a threshold of tasks like taught by Swallow. Kashi already teaches performance scaling with respect to the number of queued jobs (¶178), setting a threshold of jobs is equivalent.
Regarding claim 7, Swallow teaches wherein when the number of tasks in the plurality of queues is below a threshold (“For example, the result of the scanning process may identify less than a threshold number of files for backup.” Col 56 lines 5-7). Kashi teaches the number of the plurality checksum validation jobs is reduced. (“the fair-share architecture can scale up and down as the number of job increase and decrease.” ¶178) .
Regarding claim 8, Kashi teaches further comprising counting a number of empty queues, (“On the other end of the fair-share queue, the first job may be extracted for execution by an available thread from the thread pool” ¶185); wherein when the number of empty queues is below a first threshold, then the number of the plurality of checksum validation jobs is increased,(“ the fair-share architecture may not enqueue more jobs for execution …until resources are available again or new resources are added.” ¶178); and wherein when the number of empty queues is above a second threshold, then the number of the plurality of checksum validation jobs is reduced. (“For example, the linked-list of queues in the fair-share architecture may not enqueue more jobs for execution when no resource is available (e.g., all processing threads are busy)” ¶178).
Regarding claims 17-19, Midgley and Ibrayam teach The computer system of claim 15 as shown above. Each claim recites identical additional limitations as claims 6-9 respectively and are rejected for the same reasons.
Allowable Subject Matter
Claims 5 and 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.
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 SEAN KEVIN MCNAMARA whose telephone number is (703)756-1884. The examiner can normally be reached Monday-Friday 7:30-5:00 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, Bryce Bonzo can be reached at 571-272-3655. 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.
/SEAN KEVIN MCNAMARA/Examiner, Art Unit 2113
/PHILIP GUYTON/Primary Examiner, Art Unit 2113