DETAILED ACTION
This Office Action is in response to claims filed on 08/29/2023.
Claims 1-20 are pending.
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-8 and 15-20 are rejected under 35 U.S.C. 103 as being unpatentable over Scheuer Pub. No. US 2018/0011737 A1 (hereinafter Scheuer) in view of Beyer et al. Patent No. US 11,182,209 B2 (hereinafter Beyer).
With regard to claim 1, Scheuer teaches a computing system comprising ([0016], A computer system can contain a job scheduler for scheduling jobs):
at least one hardware processor ([0007], Computer systems ae also described that may include one or more processors);
at least one memory coupled to the at least one hardware processor ([0007], and one or more memories coupled to the one or more processors);
one or more computer-readable storage media storing computer-executable instructions that, when executed, cause the computing system to perform operations ([0007], A memory, which can include a computer-readable storage medium, may include, encode, store, or the like one or more programs that causes one or more processors to perform one or more of the operations described herein) comprising:
…;
defining a schedule, the schedule identifying a job and an execution frequency ([0025], The application 102 may include an application part 116 that indicates then number and/or types of application jobs that the application 102 intends to send to the job scheduler 108. The callstacks of the jobs that are created can be collected);
determining that an instance of the schedule is to be executed based on the execution frequency ([0026], The application parts 104 can be analyzed to determine when the application 102 determines the number and/or types of application jobs that are to be sent to the job scheduler 108.);
instantiating an execution instance for the instance of the schedule ([0022], A thread can execute functions in the application 102; [0023], A job scheduler can be configured to determine which job runs and on which thread);
by the execution instance, selecting at least a portion of the job of the instance of the schedule for execution ([0030], In some variations, the concurrency hint can be a function call, where the application 102 calls into the job scheduler 108 to get a hint about the number of jobs it should create; [0035], At 204 the spectrum related to the first thread. The first thread is the thread that creates jobs and executed them on a core of a processor. The first thread calls the concurrency hint function 212.);
by the execution instance, identifying the at least a portion of the job as selected ([0034], At 214, the job scheduler has received the jobs from the application 102, the number and/or the type of jobs provided by the application based on the concurrency hint; [0035], The first thread … then creates the jobs 214 and sends them to the job scheduler to be executed.); and
by the execution instance, executing the at least a portion of the job ([0035], The jobs are then processed at 216. The thread waits for all the jobs to finish).
However, Scheuer does not explicitly teach implementation of a scheduler handler interface or instantiating a scheduler handler.
Beyer teaches by a scheduler client, implementing a scheduler handler interface (Col. 2, A job scheduler associated with a distributed job scheduling system may receive a request to perform a job from a client computing device);
for the scheduler client, instantiating a schedule handler (Col. 2, The job scheduler may create a handler for the received request)
It would have been obvious to one of ordinary skill in the art at the time the invention was filed to apply the teachings of Beyer with the teachings of Scheuer in order to provide a system that teaches a client-handler scheduling communication. The motivation for applying Beyer teaching with Scheuer teaching is to provide a system that allows for a separation of responsibilities between a scheduler client and scheduler handler, such that the handler is responsible for the lifecycle of a job request thereby permitting enabling coordinated job scheduling (Beyer, Col. 2-Col. 3). Scheuer and Beyer are analogous art directed towards scheduling strategies and arrangements. Therefore, it would have been obvious for one of ordinary skill in the art to combine Beyer with Scheuer to teach the claimed invention in order to provide a communication interface for handling job requests between a client and a corresponding handler.
With regard to claim 2, Scheuer teaches the operations further comprising:
by the execution instance, determining a load associated with the at least a portion of the job ([0028], The types of jobs can include long-processing time jobs, short-processing time jobs, or the like. At application part 116 of the application the application jobs that the application 102 will send to the job scheduler 108 can be determined); and
by the execution instance, determining that the execution instance has sufficient capacity to execute the at least a portion of the job ([0028], The application 102 can be configured to determine the number and/or type of application job to send to the job scheduler 108 based on the number and/or types of scheduled jobs revealed by the job concurrency hint 118 (Examiner notes: such that production of the job concurrency hint is representative of the capacity available to be executed in association with jobs available for execution).);
wherein the selecting at least a portion of the job instance of the schedule for execution is performed in response to determining that the execution instance has sufficient capacity to execute the job ([0034], The job scheduler has received the jobs from the application 102, the number and/or type of jobs provided by the application based on the concurrency hint. The jobs are then proc3essed at 216 and the application merely waits for the results).
With regard to claim 3, Beyer teaches wherein the job comprises a plurality of subtasks (Col. 7, lines 40-45, The job description 301 may include one or more step descriptions (Examiner notes: subtasks) under the steps field) and the at least a portion of the job comprises one or more subtasks of the plurality of subtasks (Col. 9, In particular embodiments, the job scheduler 201 may retrieve a step description corresponding to one of the one or more steps of the job to be performed from the data store. The step description may comprise a name of the step, a communication endpoint for a corresponding worker system 203, and commands to be delivered to the worker system 203).
It would have been obvious to one of ordinary skill in the art at the time the invention was filed to apply the teachings of Beyer with the teachings of Scheuer in order to provide a system that teaches tasks comprising of subtasks. The motivation for applying Beyer teaching with Scheuer teaching is to provide a system that applies the known techniques of tasks comprising of smaller subtasks with scheduling of tasks on a system to yield predictable results. Scheuer and Beyer are analogous art directed towards scheduling strategies and arrangements. Therefore, it would have been obvious for one of ordinary skill in the art to combine Beyer with Scheuer to teach the claimed invention in order to provide a scheduling framework in application with subtasks.
With regard to claim 4, Beyer teaches wherein the execution instance is a first execution instance and the at least a portion of the job is an at least a first portion of the job (Col. 6, FIG. 2 illustrates an example architecture for a distributed job scheduling system 200. Each of a plurality of job schedulers 201 may handle one or more jobs 205. A job 205 may comprise one or more steps. Each step may be an atomic unit of a job that can be performed by a worker system 203 independently of the other sets), the operations further comprising:
instantiating a second execution instance for at least a second portion of the job, the at least a second portion (Fig. 2, Job scheduler 2 coupled to Worker System 2; Col. 6, If the sets of required conditions for two steps, step A and step B, do not depend on completions of each other, the corresponding job scheduler 201 may attempt to complete the step A and step B in parallel)
It would have been obvious to one of ordinary skill in the art at the time the invention was filed to apply the teachings of Beyer with the teachings of Scheuer in order to provide a system that teaches instantiation of a plurality of execution instance in association with particular portions of a job. The motivation for applying Beyer teaching with Scheuer teaching is to provide a system that teaches the use of parallelization in order to obtain the benefit of improved resource utilization (Beyer, Col. 1-Col. 2). Scheuer and Beyer are analogous art directed towards scheduling strategies and arrangements. Therefore, it would have been obvious for one of ordinary skill in the art to combine Beyer with Scheuer to teach the claimed invention in order to provide performance improvements by leveraging a distributed processing system.
With regard to claim 5, Scheuer teaches determining that a target on which the job is executed has sufficient resources to accommodate parallelized operations of the job ([0026], The application parts 104 can be analyzed to determine when the application 102 determines the number and/or types of application jobs that are sent to the job scheduler 108. While illustrated as being discrete in FIG. 1, the application parts 104 can be … parallel parts … The concurrency hint object can be further configured to determine the number and/or types of jobs that need to be provided to the job).
With regard to claim 6, Beyer teaches providing access to job instance status information to the first execution instance and the second execution instance (Col. 6, Information associated with the distributed job scheduling system, including workloads for the job schedulers, a list of jobs, information associated with each job including a job identifier, an assigned job scheduler, a schedule, a type of job, a lists of steps, and details of each of the one or more steps, may be stored in a data store 202 … Each job scheduler 201 may communicate with the data store 202 or to store information to the data store 202).
It would have been obvious to one of ordinary skill in the art at the time the invention was filed to apply the teachings of Beyer with the teachings of Scheuer in order to provide a system that teaches shared access to a data store maintaining job instance information. The motivation for applying Beyer teaching with Scheuer teaching is to provide a system that allows for shared job instance database to support dynamic job scheduling based on the visibility of job states and dependency conditions thereby improving resource allocation, load balancing, and enabling job failover (Beyer, Col. 6). Scheuer and Beyer are analogous art directed towards scheduling strategies and arrangements. Therefore, it would have been obvious for one of ordinary skill in the art to combine Beyer with Scheuer to teach the claimed invention in order to provide shared access to a job instance database.
With regard to claim 7, Beyer teaches determining the at least a first portion of the job has failed (Col. 9, The job scheduler 201 may receive a status update comprising results for the commands from the corresponding worker system 203. If the job scheduler does not receive the status update within the timeout, the job scheduler 201 may consider that the attempt has failed); and
updating a status of the at least a first portion of the job in the job instance status information to indicate that the job has failed (Col. 9, The job scheduler 201 may store the status update to the data store 201).
It would have been obvious to one of ordinary skill in the art at the time the invention was filed to apply the teachings of Beyer with the teachings of Scheuer in order to provide a system that teaches failure status reporting in association with a particular job. The motivation for applying Beyer teaching with Scheuer teaching is to provide a system that allows for identification of failed execution such that the job scheduler may failover execution from one system to another, thereby increasing performance and reliability of job execution (Beyer, Col. 6). Scheuer and Beyer are analogous art directed towards scheduling strategies and arrangements. Therefore, it would have been obvious for one of ordinary skill in the art to combine Beyer with Scheuer to teach the claimed invention in order to provide failure status reporting to enable failover recovery.
With regard to claim 8, Beyer teaches wherein identifying the at least a portion of the job as selected comprising updating a status of the at least a first portion of the job in the job instance status information (Col. 10, If the step comprises a plurality of iterations, the worker system 203 may return a status update with non-terminal state results (e.g., iterationSucceeded). On receiving a status update with the non-terminal state results, the job scheduler 201 may store the received status update to the data store 202, sleep for 10 seconds as specified in the step description and send commands for the next iteration.).
It would have been obvious to one of ordinary skill in the art at the time the invention was filed to apply the teachings of Beyer with the teachings of Scheuer in order to provide a system that teaches updating the execution status associated with a job instance. The motivation for applying Beyer teaching with Scheuer teaching is to provide a system that allows for system visibility of the current status of a particular job such that enables adaptive scheduling to the current execution conditions (Beyer, Col. 6). Scheuer and Beyer are analogous art directed towards scheduling strategies and arrangements. Therefore, it would have been obvious for one of ordinary skill in the art to combine Beyer with Scheuer to teach the claimed invention in order to provide improved coordination and efficiency through status visibility.
With regard to claim 15, Beyer teaches at defined intervals, expanding the schedule to create a plurality of schedule instances to be executed over an interval period (Col. 2, The job scheduler may initiate executions of the job at an interval indicated by the schedule if the frequency is periodic); and
storing the plurality of schedule instances in storage (Col. 2, In particular embodiments, on receiving the request to perform a job, a job scheduler may store the job description into a data store.);
wherein selecting at least a portion of the job of the instance of the schedule for execution comprises retrieving a schedule instance from the storage (Col. 2, The job scheduler may retrieve a step description corresponding to one of the steps of the job to be performed from the data store.).
It would have been obvious to one of ordinary skill in the art at the time the invention was filed to apply the teachings of Beyer with the teachings of Scheuer in order to provide a system that teaches periodic job scheduling through the use of job instance database. The motivation for applying Beyer teaching with Scheuer teaching is to provide a system that allows for automation of periodic jobs such that storing a task for interval execution enables predictable and controlled execution timing (Beyer, Col. 7). Scheuer and Beyer are analogous art directed towards scheduling strategies and arrangements. Therefore, it would have been obvious for one of ordinary skill in the art to combine Beyer with Scheuer to teach the claimed invention in order to provide predictable and controlled execution timing.
With regard to claim 16, Beyer teaches wherein the execution instance is created from an execution definition that implements an interface defined by the scheduler handler (Fig. 3B, worker_address: “resource-init-manager”; Col. 9, The step description 302 may comprise a name of the step, a communication endpoint for a corresponding worker system 203, and commands to be delivered to the worker system 203.).
It would have been obvious to one of ordinary skill in the art at the time the invention was filed to apply the teachings of Beyer with the teachings of Scheuer in order to provide a system that teaches an interface that defines the parameters of execution required for a particular job to be scheduled. The motivation for applying Beyer teaching with Scheuer teaching is to provide a system that allows for greater flexibility in defining the conditions required to perform execution of the job task, such that support appropriate resource scheduling (Beyer, Col. 9). Scheuer and Beyer are analogous art directed towards scheduling strategies and arrangements. Therefore, it would have been obvious for one of ordinary skill in the art to combine Beyer with Scheuer to teach the claimed invention in order to provide efficient allocation of computing resources in accordance with execution definitions of the job.
With regard to claim 17, Beyer teaches wherein the interface comprises a method to determine subtasks associated with a schedule instance (Col. 9, The job scheduler 201 may retrieve a step description corresponding to one of the one or more steps of the job to be performed from the data store. The step description 302 may comprise a name of the step, a communication endpoint for a corresponding worker system 203, and commands to be delivered to the work system 203.) and a method to execute the at least a portion of the job, including any substasks comprised with the at least a portion of the job (Col. 9, The commands may comprise Uniform Resource Identifier (URI) for a Representational State Transfer (REST) request; Col. 10, The commands to be delivered to the worker system 203 is “/api/v1/provision/djs-job-step/hosts-connectivity-data.”).
It would have been obvious to one of ordinary skill in the art at the time the invention was filed to apply the teachings of Beyer with the teachings of Scheuer in order to provide a system that teaches an interface instruction to associated subtask with a schedule and an interface to trigger execution of the subtask associated with the schedule. The motivation for applying Beyer teaching with Scheuer teaching is to provide a system that allows for structured control and improved coordination over scheduling subtasks of a defined schedule (Beyer, Col. 10). Scheuer and Beyer are analogous art directed towards scheduling strategies and arrangements. Therefore, it would have been obvious for one of ordinary skill in the art to combine Beyer with Scheuer to teach the claimed invention in order to provide improved coordination and control over subtasks.
With regard to claim 18, Scheuer teaches determining an execution instance type associated with the job ([0019], The presently described subject matter facilitates an application obtaining a job concurrency hint. The job concurrency hint can include an indication of the number and type of jobs that are currently scheduled for processing);
wherein instantiating an execution instance for the instance of the schedule comprises instantiating an execution instance of the execution instance type ([0026], The concurrency hint object can be further configured to determine the number and/or types of jobs that need to be provided to the job scheduler 108 to reduce the overhead associated with initialization and setup of jobs).
With regard to claim 19, Scheuer teaches a method, implemented in a computing system comprising at least one hardware processor and at least one memory coupled to the at least one hardware processor ([0004], In one aspect, method is described that selects the number and/or size of jobs to be scheduled for execution based on a job concurrency hint giving an indication of then number and/or size of the jobs that can be executed in a thread by a core of a processor). Claim 19 is computer implemented method having similar limitations as claim 1. Thus, claim 19 is rejected for the same rationale as applied to claim 1.
With regard to claim 20, Scheuer teaches one or more computer-readable storage media ([0007], Implementations of the current subject matter can include, but are not limited to, systems and methods consistent including one or more features are described as well as articles that comprise a tangibly embodied machine-readable medium operable) Claim 20 is computer implemented method having similar limitations as claim 1. Thus, claim 20 is rejected for the same rationale as applied to claim 1.
Claims 9-14 are rejected under 35 U.S.C. 103 as being unpatentable over Scheuer in view of Beyer as applied to claim 1 above, and further in view of Adams et al. Patent No. US 9,804,889 B2 (hereinafter Adams).
With regard to claim 9, Adams teaches wherein the at least a portion of the job is executed by a first execution thread of a plurality of execution threads of the execution instance (Col. 16, A resource manager 404 maintains a resource database that indicates resources (E.g., compute nodes 410 and threads 412) … At 42, when a job is ready to be executed by the cluster system, the job queue 402 (or, in some embodiments, the job itself) requests an initial resource from resource manager 404, At 43, when a suitable resource is available, resource manager 404 grants access to that resource).
It would have been obvious to one of ordinary skill in the art at the time the invention was filed to apply the teachings of Adams with the teachings of Scheuer and Beyer in order to provide a system that teaches processing threads of a plurality of processing threads as the resource used to execute job tasks. The motivation for applying Adams teaching with Scheuer and Beyer teaching is to provide a system applies the known technique of scheduling a processing thread resource with execution of a job task on a system to yield predictable results. Scheuer and Beyer and Adams are analogous art directed towards scheduling strategies and arrangements. Therefore, it would have been obvious for one of ordinary skill in the art to combine Adams with Scheuer and Beyer to teach the claimed invention in order to provide a thread processing resource in order to perform operations associated with a job.
With regard to claim 10, Adams teaches wherein the at least a portion of the job is an at least a first portion of the job and at least a second portion of the job is executed by a second execution thread of the plurality of execution threads (Col. 16, the job 420 may be analyzed to break the job 420 down into two or more atomic tasks, with each task executable by a resource (e.g., a thread) on the cluster. At 45, the compute 410A requests one or more additional resources from the resource manager 404).
Rationale to claim 1 applied here.
Examiner notes: It would have been obvious for one of ordinary skill in the art to recognize that execution of a second portion of a job would occur on a second thread, such that it applies the known technique of applying a processing thread resource with execution of a task which would have yielded predictable results.
With regard to claim 11, Adams teaches wherein the at least a second portion of the job is executed by a second execution thread of the plurality of execution threads in response to determining that the execution instance has sufficient resources to execute the second execution thread (Col. 16, If resources are available as indicated by the resource database 406, the resource manager 404 grants access to those resources to the requesting resources (in this example, compute node 410A), as indicated at 46).
It would have been obvious to one of ordinary skill in the art at the time the invention was filed to apply the teachings of Adams with the teachings of Scheuer and Beyer in order to provide a system that teaches performing execution of a second job task on a second thread maintaining sufficient resources. The motivation for applying Adams teaching with Scheuer and Beyer teaching is to provide a system that teaches resource management of parallel processing such allows for redistribution of resources as resources are freed and become available, maximizing resource utilization (Adams, Col. 16). Scheuer and Beyer and Adams are analogous art directed towards scheduling strategies and arrangements. Therefore, it would have been obvious for one of ordinary skill in the art to combine Adams with Scheuer and Beyer to teach the claimed invention in order to provide resource redistribution towards job tasks requesting additional resources.
With regard to claim 12, Scheuer teaches wherein the at least a second portion of the job is executed by the second execution thread of the plurality of execution threads in response to determining that a target on which the job is executed has sufficient resources to accommodate parallelized operations of the job (A split operation can be used to partition input tables for subsequent processing steps based on partitioning criteria. Operations between the split and merge operations can then be executed in parallel for the different partitions … Split and merge allows for enhanced/automatically generated parallelization. If a user knows that the operations between the split and merge can work on partitioned data without changing the result, he or she can use a split. Then, the nodes can be automatically multiplied between split and merge and partition the data).
With regard to claim 13, Scheuer teaches wherein a number of execution threads assigned to the at least portion of the job is determined at least in part based on a load associated with the at least a portion of the job ([0053], The model optimizer 522 can be configured to enable dynamic partitioning based on one or more aspects of a query and/or datasets used by queries. The model optimizer can implement a series of rules that are triggered based on attributes of incoming datasets exceeding specified thresholds. Such rules can, for example, apply thresholds each with a corresponding parallelization factor. For example, if the incoming dataset has 1 million rows, then two partitions (E.g., parallel jobs, etc.) can be implemented)
With regard to claim 14, Scheuer teaches wherein the load is a predicted load ([0036], The number and/or type of application jobs (Examiner notes: such that comprises a load of jobs) that are provided to the job scheduler, such as job scheduler 108 in FIG. 1, can be based on a statistical prediction).
Conclusion
F2Any inquiry concerning this communication or earlier communications from the examiner should be directed to IVAN A CASTANEDA whose telephone number is (571)272-0465. The examiner can normally be reached Monday-Friday 9:30AM-5:30PM 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, Aimee Li can be reached at (571) 272-4169. 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.
/I.A.C./Examiner, Art Unit 2195
/Aimee Li/Supervisory Patent Examiner, Art Unit 2195