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 .
Information Disclosure Statement
The information disclosure statements (IDS) submitted on 12/05/2022. The submission is in compliance with the provisions of 37 CFR 1.97. Accordingly, the information disclosure statements are being considered by the examiner.
Claim Rejections - 35 USC § 103
In the event the determination of the status of the application as subject to AIA 35 U.S.C. 102 and 103 (or as subject to pre-AIA 35 U.S.C. 102 and 103) is incorrect, any correction of the statutory basis (i.e., changing from AIA to pre-AIA ) for the rejection will not be considered a new ground of rejection if the prior art relied upon, and the rationale supporting the rejection, would be the same under either status.
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-3, 5-12, 14-17 and 19-20 are rejected under 35 U.S.C. 103 as being unpatentable over Kinney (US 20220276904 A1) in view of Malvankar (US 11789774 B2).
Regarding claim 1, Kinney teaches:
A computer-implemented method for compute job allocation, comprising: (Claim 28. A computer-implemented method, comprising:)
initializing the virtualized environment associated with each of the plurality of clusters that has parameters corresponding to the associated cluster. ([0038] In generating a specification 130 of the managed compute environment 195A, one or more constraints 131 for the environment may be received from the user, approved by the user, and/or defined based (at least in part) on default policies. The constraint(s) 131 may be associated with computing resources, including compute instances, and may be defined or approved by a user. For example, the managed compute environment 195A may be associated with a constraint specifying one or more compute instance types that are recommended for and/or usable within the environment. As another example, the managed compute environment 195A may be associated with a constraint specifying a minimum number of virtual processing units (e.g., CPUs or GPUs) or compute instances and/or a constraint specifying a maximum number of virtual processing units or compute instances. As a further example, the managed compute environment 195A may be associated with a constraint specifying the source of compute instances, e.g., a spot market for instances that are less expensive but without guaranteed availability, an on-demand market for instances that are more expensive but with guaranteed availability, scheduled reserved instances for a window of time, and so on. The managed compute environment 195A may be associated with cost-related constraints such as a constraint specifying a maximum cost per compute instance (e.g., a maximum bid for the spot market as a percentage of on-demand pricing) and/or a constraint specifying a maximum aggregate budget for compute instances. In some embodiments, the managed compute environment 195A may be associated with a constraint specifying other types of resources such as storage resources and/or other suitable constraints. [0039] Subject to the constraint(s) 131, the compute environment management system 100 may automatically manage the aggregate computing resources 190A-190N within a managed compute environment 195A based (at least in part) on analysis of one or more job queue(s) 152. Based on automated analysis of the job queue(s) 152, the compute environment management system 100 may determine that a particular set of compute instances are required to execute the flow of jobs through the queue(s). The compute environment management 100 system may provision and reuse a set of compute instances 190A-190N to meet the aggregate demand of the jobs within the constraints 131 associated with the managed compute environment 195A. Within the environmental constraints 131, the set of computing resources for a managed compute environment 195A may be automatically increased or decreased in number or otherwise changed in composition based on automated analysis of the job queue(s) by the compute environment management system 100. If a computing resource has been purchased for an hour, the compute environment management system 100 may attempt to use that resource for one job after another (and potentially for multiple jobs running concurrently) for the entire hour rather than simply terminating the resource after one job. In other cases, the compute environment management system 100 may provision additional resources if the constraint(s) 131 permit. In one embodiment, the compute environment management system 100 may use machine learning techniques (e.g., based on the job execution history for one or more clients) to recommend or automatically implement optimized usage of resources within a managed compute environment. In one embodiment, backend resources may be oversubscribed for cost efficiency. In this manner, the compute environment management system 100 may efficiently use a set of computing resources 190A-190N within a managed compute environment 195A having constraints 131 for the computing resources. See also [0039] [0047])
assigning queued compute jobs in the second group of compute jobs to a cluster from the plurality of clusters based on the compute resource requirements; ([0022] Jobs from the queue(s) may be assigned to the scheduled reserved compute instances for execution during the window of time. The scheduled reserved compute instances may be automatically deprovisioned and removed from the compute environment when the window of time closes. Queues may differ in priority so that lower priority jobs can be assigned to reserved instances when higher priority jobs are not available. In this manner, scheduled reserved compute instances may be used efficiently during a window of time with automatic and programmatic management. [0046] A compute instance may be selected for the job based (at least in part) on any requirements associated with the job and/or on the constraint(s) 131 for the managed compute environment 195A. For example, if the environment is constrained to a particular set of compute instance types, then the compute environment management system may provision a compute instance of one of those types. In one embodiment, jobs may be associated with job definitions that indicate requirements or recommendations for computing resources (e.g., processor requirements, storage requirements, memory requirements, network requirements, and so on) and/or the anticipated duration of job execution. The compute instance type may be selected from among the permissible or recommended types based (at least in part) on the job definition, e.g., based on usage requirements specified for the job. In this manner, different types of jobs with different requirements may be assigned by the compute environment management system 100 to different types of compute instances in the managed compute environment 195A.)
and reusing a previously initialized virtualized environment associated with the cluster for execution of the queued compute jobs from the second group. ([0039] The compute environment management 100 system may provision and reuse a set of compute instances 190A-190N to meet the aggregate demand of the jobs within the constraints 131 associated with the managed compute environment 195A. Within the environmental constraints 131, the set of computing resources for a managed compute environment 195A may be automatically increased or decreased in number or otherwise changed in composition based on automated analysis of the job queue(s) by the compute environment management system 100.See also [0073])
Kinney does appear to explicitly teach: performing, for each executing compute job of a first group of compute jobs that are currently executing in a virtualized environment, an entity extraction process on a job description file corresponding to the executing compute job to extract a plurality of job entities;
However, Malvankar teaches: Col 9, line 37- col 10 line 2. ….Before configuring a new host for a workload, a process is conducted to ascertain if there is a configured host available and configured to support the workload, or if there is a configured host that can be leveraged to support the workload…Referring to FIG. 3, a flow chart (300) is provided illustrating a process for identifying a host for a scheduled workload or for scheduling a workload. As shown, a list of software options and application artifacts associated with a workload are received, or otherwise ascertained (302). In an exemplary embodiment, the list of software options may be ranked or otherwise ordered, such as a linear ordering or a hierarchical ordering. Examples of application artifacts include, but are not limited to, application source code, testing code, application programming interface (API) specifications, application configurations, deployment scripts, and variables. Following receipt of the application artifacts and software options at step (302), a metadata file associated with the workload is received from the user (304). In an exemplary embodiment, each workload has a metadata file that contains information about the software version being used in the workload and hardware and software drivers that are required to support the received application artifacts.; see also Col 6, line 64- col 7, line 18.
Malvankar teaches: creating a plurality of clusters corresponding to the first group of compute jobs based on compute resource requirements. (Col 6, line 64- col 7, line 18. In an embodiment, the NLP manager (154) applies an artificial neural network (ANN) to the unstructured data and leverages machine learning (ML) techniques to identify the host requirements. In an embodiment, the NLP manager (154) identifies one or more header sections in the unstructured data and classifies each header section. Accordingly, the NLP manager (154) applies NLP to the unstructured data identified by the data manager (152) for an initial identification of host requirements in support of efficient and effective processing of the workload. As shown herein, the NLP manager (154) is operatively coupled to the director (156). After identifying host requirements necessary to run the workload, the NLP manager (154) interfaces with the director (156) for identification of a compatible host and scheduling of the workload. The director (156) functions to selectively identify one or more hosts in the computing environment that are compatible with the one or more host requirements identified by the NLP manager (154). The identified host may be a single server or machine for enabling the workload, or in an exemplary embodiment, may utilize two or more servers that act as one system. An existing host is pre-configured with hardware, software, and associated libraries. As shown herein by way of example, server (190) may be a host with tools configured to support the workload.)
Malvankar teaches: performing, for each queued compute job of a second group of compute jobs that are currently queued for execution, the entity extraction process on the job description file corresponding to each queued compute job of the second group of compute jobs. (col 7, line 36-53. As further shown, a scheduling manager (158) is operatively coupled to the data manager (152), NLP manager (154) and director (156). The scheduling manager (158) is configured to selectively schedule the workload responsive to the initial, or the preliminary, host identification by the director (156). The scheduling manager (158) assesses the compatibility of the workload with the identified one or more hosts, and responsive to a determination of compatibility schedules the workload on the identified host. In an exemplary embodiment, a compatibility matrix is identified in the crowdsourced data. The compatibility matrix conveys requirements to support the workload, with the requirements includes elements such as hardware, software, and libraries. The scheduling manager (158) may leverage an identified compatibility matrix to compare the workload requirements with the host configuration, including one or more host embedded configuration elements directed at the hardware, software, and libraries.)
Accordingly, it would have been obvious to a person having ordinary skill in the art before the effective filing date of the claimed invention, having the teachings of Kinney and Malvankar before them, to include Malvankar’s machine leaning and natural language processing to analyze workload data with Kinney’s job allocation system. One would have been motivated to make such a combination to improve the efficiency of job scheduling decisions. Such combination merely applies known workload analysis techniques like machine learning to a job scheduling system.
Regarding claim 2, Kinney teaches:
The method of claim 1, wherein the virtualized environment further includes a dataset, and wherein reusing the virtualized environment includes reusing the dataset. ([0073] FIG. 8B is a flowchart illustrating a method for job execution with managed compute environments, including reuse of existing compute instances, according to one embodiment. In one embodiment, the same instance may be used for one or more jobs (potentially using the container management system discussed above) and then deprovisioned when the queue(s) associated with the managed compute environment are empty. The operations shown in 810, 820, 830, 840, and 850 may be performed as discussed above. As shown in 865, execution of the job may be initiated as discussed above using the compute instance and optionally any other suitable computing resources (e.g., storage resources, additional compute instances, and so on). Execution of the job may terminate successfully or unsuccessfully. As shown in 870, it may be determined whether or not the queue(s) hold one or more jobs suitable for attempted execution using the compute instance. If so, then the instance may be left running, and the method may return to the operation shown in 860 for execution of another job using the compute instance.; see also [0044, 0065])
Regarding claim 3, Malvankar teaches:
The method of claim 1, wherein performing the entity extraction process comprises performing a natural language processing (NLP) process based on machine learning. (Col 6, line 61- col 7, line 3. . In an embodiment, the NLP manager (154) applies an artificial neural network (ANN) to the unstructured data and leverages machine learning (ML) techniques to identify the host requirements. In an embodiment, the NLP manager (154) identifies one or more header sections in the unstructured data and classifies each header section. Accordingly, the NLP manager (154) applies NLP to the unstructured data identified by the data manager (152) for an initial identification of host requirements in support of efficient and effective processing of the workload.)
Same motivation as claim 1.
Regarding claim 5, Kinney teaches:
The method of claim 1, wherein extracting a plurality of job entities comprises extracting entities selected from the group consisting of CPU, GPU, and memory. ([0038] In generating a specification 130 of the managed compute environment 195A, one or more constraints 131 for the environment may be received from the user, approved by the user, and/or defined based (at least in part) on default policies. The constraint(s) 131 may be associated with computing resources, including compute instances, and may be defined or approved by a user. For example, the managed compute environment 195A may be associated with a constraint specifying one or more compute instance types that are recommended for and/or usable within the environment. As another example, the managed compute environment 195A may be associated with a constraint specifying a minimum number of virtual processing units (e.g., CPUs or GPUs) or compute instances and/or a constraint specifying a maximum number of virtual processing units or compute instances.)
Regarding claim 6, Malvankar teaches:
The method of claim 1, wherein the assigning includes performing a similarity analysis selected from the group consisting of cosine similarity computation process, Euclidean distance matrix, single link dendrogram, complete link dendrogram, and group average dendrogram. (col 7, line 38-53. The scheduling manager (158) is configured to selectively schedule the workload responsive to the initial, or the preliminary, host identification by the director (156). The scheduling manager (158) assesses the compatibility of the workload with the identified one or more hosts, and responsive to a determination of compatibility schedules the workload on the identified host. In an exemplary embodiment, a compatibility matrix is identified in the crowdsourced data. The compatibility matrix conveys requirements to support the workload, with the requirements includes elements such as hardware, software, and libraries. The scheduling manager (158) may leverage an identified compatibility matrix to compare the workload requirements with the host configuration, including one or more host embedded configuration elements directed at the hardware, software, and libraries.; see also col 3, line 54 – col. 4, line 14). Further it is obvious to one of ordinary skill in the art before the effective filing of the claimed invention that cosine similarity computation process, Euclidean distance matrix, single link dendogram, complete link dendrogram and group average dendrogram are well known types of similarity algorithms.
Same motivation as claim 1.
Regarding claim 7, Kinney teaches:
The method of claim 1, wherein assigning compute jobs in the second group to the cluster is based on an arrival rate of compute jobs. ([0065] The managed compute environment may also be associated with one or more job queues configured to hold data indicative of jobs for attempted execution within the environment. The data indicative of a job as stored in a job queue may include a job definition or other data and/or metadata associated with a job. Although the example of one or more queues is discussed herein, it is contemplated that other types of data structures (e.g., workflows) may also be used to hold jobs for attempted execution within the managed compute environment. In some embodiments, the other data structures may be used to feed job queues, e.g., such that a job in a workflow is placed in a job queue when the job's dependencies are satisfied. Particular queue(s) may be associated with the environment based on user input. See also [0087, 0114-0116])
Regarding claim 8, Kinney teaches:
The method of claim 1, wherein assigning compute jobs in the second group to the cluster is based on a departure rate of compute jobs. ([0065] The managed compute environment may also be associated with one or more job queues configured to hold data indicative of jobs for attempted execution within the environment. The data indicative of a job as stored in a job queue may include a job definition or other data and/or metadata associated with a job. Although the example of one or more queues is discussed herein, it is contemplated that other types of data structures (e.g., workflows) may also be used to hold jobs for attempted execution within the managed compute environment. In some embodiments, the other data structures may be used to feed job queues, e.g., such that a job in a workflow is placed in a job queue when the job's dependencies are satisfied. Particular queue(s) may be associated with the environment based on user input. See also [0087, 0114-0116])
Regarding claim 9, Malvankar teaches:
The method of claim 3, further comprising: determining a schedule priority of each compute job in the second group based on the NLP process; and moving at least one compute job in the second group to a different location within a job queue based on the schedule priority. (col 11, line 29-42. The generated configuration file is utilized to create a host that is compatible with the workload (324). Creating the new host creates a new deployment option that may be virtual, such as containers and virtual machines, or physical, or a combination of virtual and physical. Generation of the configuration file is shown and described in detail in FIG. 4. Following the creation of the new host, the workload is scheduled on the new host (326). Accordingly, the NLP discovered compatibility information is utilized to identify an existing host to run the workload, and in the event an existing host cannot be identified, the NLP discovered compatibility information is utilized as a source to generate a configuration file to create a new host. Col 9, line 51 – col 10, line 5. Referring to FIG. 3, a flow chart (300) is provided illustrating a process for identifying a host for a scheduled workload or for scheduling a workload. As shown, a list of software options and application artifacts associated with a workload are received, or otherwise ascertained (302). In an exemplary embodiment, the list of software options may be ranked or otherwise ordered, such as a linear ordering or a hierarchical ordering. Examples of application artifacts include, but are not limited to, application source code, testing code, application programming interface (API) specifications, application configurations, deployment scripts, and variables. Following receipt of the application artifacts and software options at step (302), a metadata file associated with the workload is received from the user (304). In an exemplary embodiment, each workload has a metadata file that contains information about the software version being used in the workload and hardware and software drivers that are required to support the received application artifacts. Accordingly, a ranked list of software options and application artifacts associated with a workload are received from a user along with a metadata file associated with the workload.)
Same motivation as claim 1.
Regarding claim 10, Kinney teaches the elements of claim 1 as outlined above. Kinney also teaches:
An electronic computation device comprising: a processor; a memory coupled to the processor, the memory containing instructions, that when executed by the processor, cause the electronic computation device to: (Claim 21. A system, comprising: one or more computing devices configured to implement a compute environment management system, wherein the compute environment management system is configured to: ).
Regarding claim 11, the claim recites similar limitation as corresponding claim 2 and is rejected for similar reasons as claim 2 using similar teachings and rationale.
Regarding claim 12, the claim recites similar limitation as corresponding claim 3 and is rejected for similar reasons as claim 3 using similar teachings and rationale.
Regarding claim 13, the claim recites similar limitation as corresponding claim 4 and is rejected for similar reasons as claim 4 using similar teachings and rationale.
Regarding claim 14, the claim recites similar limitation as corresponding claim 6 and is rejected for similar reasons as claim 6 using similar teachings and rationale.
Regarding claim 15, Kinney teaches the elements of claim 1 as outlined above. A also teaches:
A computer program product for an electronic computation device comprising a computer readable storage medium having program instructions embodied therewith, the program instructions executable by a processor to cause the electronic computation device to: (Claim 35.One or more computer-readable storage media storing instructions that, when executed on or across one or more processors, cause the one or more processors to:).
Regarding claim 16, the claim recites similar limitation as corresponding claim 2 and is rejected for similar reasons as claim 2 using similar teachings and rationale.
Regarding claim 17, the claim recites similar limitation as corresponding claim 3 and is rejected for similar reasons as claim 3 using similar teachings and rationale.
Regarding claim 19, the claim recites similar limitation as corresponding claim 4 and is rejected for similar reasons as claim 4 using similar teachings and rationale.
Regarding claim 20, the claim recites similar limitation as corresponding claim 6 and is rejected for similar reasons as claim 6 using similar teachings and rationale.
Claims 4, 13 and 18 are rejected under 35 U.S.C. 103 as being unpatentable over Kinney (US 20220276904 A1) in view of Malvankar (US 11789774 B2) and further view of Muthusamy ” Cluster-based Task Scheduling Using K-Means Clustering for Load Balancing in Cloud Datacenters”.
Regarding claim 4, Kinney does not appear to teach:
The method of claim 1, wherein creating the plurality of clusters is performed using a technique selected from the group consisting of K-means process, affinity propagation, hierarchical clustering, and mean clustering.
However, Muthusamy teaches: In section Task Scheduling using K-Means Clustering Data clustering [38-41] is an important and widely used technique in data analysis and data mining. The prime objective of clustering is to split the elements in a dataset into subsets where elements of the same group are more similar to each other than the elements Cluster-based Task Scheduling Using K-Means Clustering for Load Balancing in Cloud Datacenters 125 from different groups. Various clustering techniques are available in data mining, among which K-Means clustering is a simple and efficient approach. Compared to the other data clustering algorithms, KMeans clustering works efficiently in handling datasets with a single attribute. It is also fast and easy to implement. Hence, the proposed system makes use of K-Means to form task clusters to reduce makespan and perform a fair distribution of workload among the VMs. The dataset considered here is the meta-task set which consists of a batch of tasks that are to be scheduled to the resources. Tasks are clustered based on the distance between the task lengths. K in KMeans refers to the number of clusters, which is to be defined beforehand. The algorithm starts by randomly choosing a centroid value for each cluster. As the tasks are to be clustered in the proposed system, task lengths are the data points. Tasks are clustered and scheduled to suitable VMs based on the processing capacity of VMs. This leads to a balanced workload on all the VMs. Algorithm 1 summarizes the procedure to form task clusters using K-Means clustering algorithm. Algorithm 2 presents the steps involved in the proposed CBTS scheduling.
Accordingly, it would have been obvious to a person having ordinary skill in the art before the effective filing date of the claimed invention, having the teachings of Kinney and Muthusamy before them, to include Muthusamy’s clustering techniques in Kinney’s job scheduling system . One would have been motivated to apply a known clustering algorithm to job scheduling of Kinney a commonly used technique for organizing task with similar characteristics in cloud or virtualized environments. Using k-means clustering would have yield predictable results and improve workload distribution.
Regarding claim 13, the claim recites similar limitation as corresponding claim 4 and is rejected for similar reasons as claim 4 using similar teachings and rationale.
Regarding claim 18, the claim recites similar limitation as corresponding claim 4 and is rejected for similar reasons as claim 4 using similar teachings and rationale.
Conclusion
Any inquiry concerning this communication or earlier communications from the examiner should be directed to CARLOS A ESPANA whose telephone number is (703)756-1069. The examiner can normally be reached Monday - Friday 8 a.m - 5 p.m 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, LEWIS BULLOCK JR can be reached at (571)272-3759. 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.
/C.A.E./Examiner, Art Unit 2199
/LEWIS A BULLOCK JR/Supervisory Patent Examiner, Art Unit 2199