DETAILED ACTION
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 .
This application claims priority to U.S. Provisional Patent Application 63/547,451, filed 11/06/2023. The priority claim is acknowledged by the Examiner.
Examiner’s Note
The Examiner cites particular columns, paragraphs, figures, and line numbers in the references as applied to the claims below for the convenience of the applicant. Although the specified citations are representative of the teachings in the art and are applied to the specific limitations within the individual claim, other passages and figures may also apply. It is respectfully requested that, in preparing responses, the Applicant fully consider the references in its entirety as potentially teaching all or part of the claimed invention, as well as the context of the passage as taught by the prior art or disclosed by the Examiner.
Claim Objections
Claims 1-15 are objected to because of the following informalities:
Regarding claims 1, 8, and 15, each claim recites “the first set of GPU shares comprises at least on GPU share”. “on” appears to be intended to read “one”.
Any claim not explicitly mentioned above is objected to due to dependency on an objected claim.
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.
Claims 1-2, 7-9, and 14-15 are rejected under 35 U.S.C. 103 as being unpatentable over Fong et al. (US 20230266988 A1) hereafter Fong in view of Venkataraman et al. (US 20200073714 A1) hereafter Venkataraman.
Regarding claim 1, Fong teaches:
A method for optimized virtualization of processing units for implementing one or more cloud computing services, comprising implementing at a processor (Paragraph 39; “The user devices 102, host devices 111 and SmartNICs 112 in the FIG. 1 embodiment are assumed to be implemented using at least one processing platform, with each processing platform comprising one or more processing devices each having a processor coupled to a memory.”, the preamble except the processor considered to be non-limiting based on the claim language), the steps of:
receiving a request for instantiating at least one cloud computing service (Paragraph 30; “In one or more embodiments, a service portal is provided by a cloud service provider 110, where a user can request network interface card resources (e.g., SmartNIC resources) within a CaaS model.”, and Paragraph 21; “Virtualized computing resource images 105 comprise, for example, static files with executable code that can create a VM or container on a computing system. As explained in more detail herein, the virtualized computing resource images 105 can be deployed by the cloud service providers 110 to run virtualized computing resource instances on SmartNICs to execute one or more workloads 103”. The user request is received in the cloud provider provisioning process that identifies and generates the requested computing resource cluster and deploys virtualized computing resource instances for workload execution, thereby corresponding to receiving a request that results in instantiation of the cloud computing service.);
assigning for execution of the at least one cloud computing service (Paragraph 30; “the request processing module 113 identifies SmartNICs 112 comprising the requested resource(s) and generates a cluster comprising the identified SmartNICs 112 as per the user requirements.”, corresponding to identifying and assigning resources for execution of the cloud computing service.):
a first central processing unit (CPU) (Paragraph 30; “users via a user interface on a user device 102, can choose from available resources, as well as available quality of service (QoS) options. For example, plans can include SmartNICs with a CPU (e.g., an advanced reduced instruction set computer (RISC) machine (ARM) CPU)”);
a first set of graphic processing unit (GPU) shares (Paragraph 30; “a GPU, a partition of a CPU, GPU computational time slices and GPU memory.”);
and executing a set of processes corresponding to the at least one cloud computing service (Paragraph 32; “In one or more embodiments, container images are able to execute on both a host device 111 (e.g., x86 host device) and a SmartNIC 112 (e.g., SmartNIC with ARM cores). In the case when a SmartNIC 112 with the requested resource becomes unavailable, the same container path wound be able to execute on a host device 111 (e.g., x86 host device) but with a different image. When a SmartNIC 112 is unavailable, since container images can be compiled to support multiple architectural types and some workloads 103 can also execute on a host device 111 without the acceleration offered by the SmartNIC 112, a scheduler 119 can execute a given workload 103 on a host device 111 without additional cost.”, where the disclosed workloads are executable processes performed by the computing device.), wherein:
a first sub-set of processes within the set of processes are executed (Paragraph 31; “A user may upload a kernel configuration (kernel config) image corresponding to a SmartNIC that will support cgroups and namespaces, which may be required to run containers and virtual networks. This kernel image will be different from a kernel image for a host device 111, which has a different architecture from a SmartNIC 112. Cgroups limit the resources that a process or set of processes can use, while namespaces restrict the visibility of a group of processes to the rest of the system.”, and Paragraph 29; “a given container may include a plurality of processes with sub-groups of the processes respectively corresponding to different cgroups”, where the execution of one such cgroup corresponds to the execution of one subset of processes.);
a second sub-set of processes within the set of processes are executed (Paragraph 31; “A user may upload a kernel configuration (kernel config) image corresponding to a SmartNIC that will support cgroups and namespaces, which may be required to run containers and virtual networks. This kernel image will be different from a kernel image for a host device 111, which has a different architecture from a SmartNIC 112. Cgroups limit the resources that a process or set of processes can use, while namespaces restrict the visibility of a group of processes to the rest of the system.”, and Paragraph 29; “a given container may include a plurality of processes with sub-groups of the processes respectively corresponding to different cgroups”, where the execution of a second such cgroup corresponds to the execution of a second subset of processes);
wherein:
the first CPU is implemented at a CPU core (Paragraph 48; “According to an embodiment, the one or more network interface cards comprise SmartNICs, and the at least one network interface card resource comprises at least one of a CPU, a GPU, a partition of a CPU, GPU computational time slices and GPU memory.”, where the NIC is a hardware component that is may have a CPU. The CPU corresponds to a CPU core.);
the first set of GPU shares comprises at least one GPU share from among a second set of GPU shares implemented at a GPU core (Paragraph 48; “According to an embodiment, the one or more network interface cards comprise SmartNICs, and the at least one network interface card resource comprises at least one of a CPU, a GPU, a partition of a CPU, GPU computational time slices and GPU memory.”, where the NIC is a hardware component that is may have a GPU or GPU time slices, in which both implemented on a physical GPU must be implemented at a GPU core.).
It would have been obvious to a person of ordinary skill in the art before the effective filing date of the claimed invention to have provided a set of CPU time slices and have a set of CPU shares comprise at least one CPU share among the entire set of CPU shares implemented at a CPU core. Fong teaches providing GPU computational time slices (Paragraph 48), and further discloses providing selectable computing resources motivated by allowing a user to select resources best suited to the user’s use case (Paragraph 30). The implementation of this methodology would yield the predictable result of allowing the user to select CPU processing time allocations appropriate for the user’s particular use case.
Fong does not teach execution by the first set of CPUs; execution by the first set of GPUs; a first number of CPU shares within the second set of CPU shares is different from a second number of GPU shares within the second set of GPU shares.
However, Venkataraman teaches:
execution by the first set of CPUs (Paragraph 132; "there is some degree of pipelining between the processor and coprocessor (e.g., CPU and GPU), but in which there is some portion of time during which the processor (e.g., CPU) is waiting for the results of an offloaded work item from the coprocessor (e.g., GPU) or the coprocessor (e.g., GPU) is waiting for a new command buffer from the processor (e.g., CPU). In the illustrative example of FIG. 13C, the processor requires less time to execute its work instances 1301a, 1303a, 1305a, and 1307a than the coprocessor requires to execute its corresponding work instances 1301b, 1303b, 1305b, and 1307b. It will be appreciated that variations of this workload may also exist.", which discloses execution solely by the processor, i.e. a CPU, that is awaiting execution from a coprocessor, i.e. GPU.);
execution by the first set of GPUs (Paragraph 132; "there is some degree of pipelining between the processor and coprocessor (e.g., CPU and GPU), but in which there is some portion of time during which the processor (e.g., CPU) is waiting for the results of an offloaded work item from the coprocessor (e.g., GPU) or the coprocessor (e.g., GPU) is waiting for a new command buffer from the processor (e.g., CPU). In the illustrative example of FIG. 13C, the processor requires less time to execute its work instances 1301a, 1303a, 1305a, and 1307a than the coprocessor requires to execute its corresponding work instances 1301b, 1303b, 1305b, and 1307b. It will be appreciated that variations of this workload may also exist.", which discloses execution solely by the processor, i.e. a CPU, that is awaiting execution from a coprocessor, i.e. GPU. Since there is pipelining between the processor and the coprocessor, the reverse, in which the CPU awaits execution from the GPU is also true, corresponding to the execution of a process on a GPU.);
a first amount of CPU execution time is different from a second amount of GPU execution time (Paragraph 132; “FIG. 13C illustrates a workload that is somewhere between completely serialized and perfectly pipelined, meaning that there is some degree of pipelining between the processor and coprocessor (e.g., CPU and GPU), but in which there is some portion of time during which the processor (e.g., CPU) is waiting for the results of an offloaded work item from the coprocessor (e.g., GPU) or the coprocessor (e.g., GPU) is waiting for a new command buffer from the processor (e.g., CPU). In the illustrative example of FIG. 13C, the processor requires less time to execute its work instances 1301a, 1303a, 1305a, and 1307a than the coprocessor requires to execute its corresponding work instances 1301b, 1303b, 1305b, and 1307b. It will be appreciated that variations of this workload may also exist.”).
Fong and Venkataraman are considered to be analogous to the claimed invention because they are reasonably pertinent to resource scheduling. Therefore, it would have been obvious to a person of ordinary skill in the art before the effective filing date of the claimed invention to have combined the teachings of Fong and Venkataraman to have executed sets of processes individually on a set of CPUs and GPUs, and to have a first number of CPU shares within the second set of CPU shares be different from a second number of GPU shares within the second set of GPU shares. A person of ordinary skill in the art would have found it obvious to execute the set of processes solely on a set of CPUs or solely on a set of GPUs because executing processes on a homogenous set of resources is a known technique for assigning optimal resources to particular tasks, yielding the predictable result of distributing execution of tasks among either the CPUs or GPUs as necessary. Further, a person of ordinary skill in the art would have found it obvious to allocate a first number of CPU shares within the first set that is different from a second number of GPU shares within the second set of GPU shares because Venkataraman teaches that CPUs and GPUs may require different amounts of execution time (Paragraph 132). Given Fong’s teachings and modification of slices of computation time for CPUs and GPUs, a person of ordinary skill in the art would recognize that given different execution time requirements, different amounts of shares would be necessary to perform their respective work instances, whose implementation would yield the predictable result of allocating different amounts of CPU and GPU shares from among the sets of shares respectively.
Claim 8 recites similar limitations as those of claim 1, directed toward a method, additionally reciting at least one memory; and a processor. Fong teaches:
at least one memory; and a processor (Paragraph 39; “The user devices 102, host devices 111 and SmartNICs 112 in the FIG. 1 embodiment are assumed to be implemented using at least one processing platform, with each processing platform comprising one or more processing devices each having a processor coupled to a memory.”).
Claim 8 is rejected for similar reasons as those of claim 1.
Claim 15 recites similar limitations as those of claim 1, additionally reciting a computer program product comprising a non-transitory computer-readable medium having a computer readable program code embodied therein. Fong teaches:
a computer program product (Paragraph 78; “Articles of manufacture comprising such processor-readable storage media are considered illustrative embodiments. A given such article of manufacture may comprise, for example, a storage array, a storage disk or an integrated circuit containing RAM, ROM, flash memory or other electronic memory, or any of a wide variety of other types of computer program products.”) comprising a non-transitory computer-readable medium having a computer readable program code embodied therein (Paragraph 5; “Further illustrative embodiments are provided in the form of a non-transitory computer-readable storage medium having embodied therein executable program code that when executed by a processor causes the processor to perform the above steps.”).
Claim 15 is rejected for similar reasons as those of claim 1.
Regarding claim 2, Fong in view of Venkataraman teach the method of claim 1. Fong teaches:
a first central processing unit (CPU) (Paragraph 30; “users via a user interface on a user device 102, can choose from available resources, as well as available quality of service (QoS) options. For example, plans can include SmartNICs with a CPU (e.g., an advanced reduced instruction set computer (RISC) machine (ARM) CPU)”);
a first set of graphic processing unit (GPU) shares (Paragraph 30; “a GPU, a partition of a CPU, GPU computational time slices and GPU memory.”).
It would have been obvious to a person of ordinary skill in the art before the effective filing date of the claimed invention to have provided a set of CPU time slices and have a set of CPU shares comprise at least one CPU share among the entire set of CPU shares implemented at a CPU core. Fong teaches providing GPU computational time slices (Paragraph 48), and further discloses providing selectable computing resources motivated by allowing a user to select resources best suited to the user’s use case (Paragraph 30). The implementation of this methodology would yield the predictable result of allowing the user to select CPU processing time allocations appropriate for the user’s particular use case.
Venkataraman teaches:
wherein the second amount of GPU execution time is greater than the first amount of CPU execution time (Paragraph 132; “FIG. 13C illustrates a workload that is somewhere between completely serialized and perfectly pipelined, meaning that there is some degree of pipelining between the processor and coprocessor (e.g., CPU and GPU), but in which there is some portion of time during which the processor (e.g., CPU) is waiting for the results of an offloaded work item from the coprocessor (e.g., GPU) or the coprocessor (e.g., GPU) is waiting for a new command buffer from the processor (e.g., CPU). In the illustrative example of FIG. 13C, the processor requires less time to execute its work instances 1301a, 1303a, 1305a, and 1307a than the coprocessor requires to execute its corresponding work instances 1301b, 1303b, 1305b, and 1307b. It will be appreciated that variations of this workload may also exist.”).
It would have been obvious to a person of ordinary skill in the art before the effective filing date of the claimed invention to have the second number of GPU shares be greater than the first number of CPU shares. A person of ordinary skill in the art would have recognized based on Venkataraman (Paragraph 132) that the processor and coprocessor may wait on each other to finish execution before proceeding, in that there is a time in which the CPU is waiting for the results from a GPU because the GPU is disclosed as requiring more execution time than the CPU for the respective work instances. The computational time slices of Fong provide a known mechanism for allocating execution time among processing resources, whose implementation would yield the predictable result of allocating a greater number of computational time slices to the GPU than to the CPU.
Claim 9 recites similar limitations as those of claim 2. Claim 9 is rejected for similar reasons as those of claim 2.
Regarding claim 7, Fong in view of Venkataraman teach the method of claim 1. Fong teaches:
wherein instantiating the at least one cloud computing service comprises instantiating at least one virtual machine or at least one instance of a software application in a set of computing devices controlled by a cloud computing platform (Paragraph 30; discloses a service portal provided by a cloud service provider through which a user requests a SmartNIC resource and a resource processing module that receives the user request for at least one NIC resource. This resource processing module identifies SmartNICs comprising the requested resources and generates a cluster according to the requirements. Paragraph 21 further discloses virtualized computing resource images comprise executable code capable of creating a VM and such images are deployed by the cloud service provider to run virtualized computing resource instances on the SmartNICs. Therefore, the user request is received in the cloud provider provisioning process that identifies and generates the requested computing resource cluster and deploys virtualized computing resource instances for workload execution. Paragraph 22 further discloses “As shown in FIG. 1, a cloud service provider 110-1 includes a plurality of host devices 111-1, 111-2, . . . , 111-M (collectively, host devices 111) and a plurality of SmartNICs 112-1, 112-2, . . . , 112-N (collectively, SmartNICs 112).”. The cloud service provider identifies and organizes the computing resources in response to the user request, corresponding to being controlled by a cloud computing platform, and the plurality of host devices corresponds to a set of host devices.).
Claim 14 recites similar limitations as those of claim 7. Claim 14 is rejected for similar reasons as those of claim 7.
Claims 3 and 10 are rejected under 35 U.S.C. 103 as being unpatentable over Fong in view of Venkataraman, further in view of Prakash et al. (US 20210110506 A1) hereafter Prakash.
Regarding claim 3, Fong in view of Venkataraman teach the method of claim 1. Fong teaches:
implementing the at least one cloud computing service comprises instantiating a third number of virtual machines or a third number of instances of a software application (Paragraph 30; discloses a service portal provided by a cloud service provider through which a user requests a SmartNIC resource and a resource processing module that receives the user request for at least one NIC resource. This resource processing module identifies SmartNICs comprising the requested resources and generates a cluster according to the requirements. Paragraph 21 further discloses virtualized computing resource images comprise executable code capable of creating a VM and such images are deployed by the cloud service provider to run virtualized computing resource instances on the SmartNICs. Therefore, the user request is received in the cloud provider provisioning process that identifies and generates the requested computing resource cluster and deploys virtualized computing resource instances for workload execution, corresponding to instantiation of a number compute instances of an application for workload execution, applications further disclosed in Paragraph 21 as “Workloads 103 comprise, for example, applications running as single components or several components working together”.);
a central processing unit (CPU) (Paragraph 30; “users via a user interface on a user device 102, can choose from available resources, as well as available quality of service (QoS) options. For example, plans can include SmartNICs with a CPU (e.g., an advanced reduced instruction set computer (RISC) machine (ARM) CPU)”);
graphic processing unit (GPU) shares (Paragraph 30; “a GPU, a partition of a CPU, GPU computational time slices and GPU memory.”).
It would have been obvious to a person of ordinary skill in the art before the effective filing date of the claimed invention to have provided a set of CPU time slices and have a set of CPU shares comprise at least one CPU share among the entire set of CPU shares implemented at a CPU core. Fong teaches providing GPU computational time slices (Paragraph 48), and further discloses providing selectable computing resources motivated by allowing a user to select resources best suited to the user’s use case (Paragraph 30). The implementation of this methodology would yield the predictable result of allowing the user to select CPU processing time allocations appropriate for the user’s particular use case.
Fong in view of Venkataraman does not teach the second number of GPU shares is equal to the third number of virtual machines or to the third number of instances of the software application.
However, Prakash teaches:
the second number of GPU shares is equal to the third number of virtual machines or to the third number of instances of the software application (Paragraph 47; “For example, if the vGPU profile 137 for a GPU 121 is set to 2q, there will be eight time slices, one per vGPU 140. In equal-share scheduling algorithm, a GPU 121 is split into time slices equal to the number of virtual machines 126 that are allocated to the GPU 121 and turned on”, explicitly teaching a number of GPU time slices, corresponding to shares, equal to the number of virtual machines.).
Fong, Venkataraman, and Prakash are considered to be analogous to the claimed invention because they are reasonably pertinent to resource scheduling. Therefore, it would have been obvious to a person of ordinary skill in the art before the effective filing date of the claimed invention to have combined the teachings of Fong, Venkataraman, and Prakash to have the number of GPU shares be equal to the number of VMs or to the number of instances of the software application. A person of ordinary skill in the art would have recognized that multiplexing multiple GPU workloads onto a physical GPU using scheduling techniques and GPU utilization as motivated by Prakash (Paragraph 19) is a known method for managing GPU resources among multiple virtualized workloads, whose implementation would yield the predictable result of providing a respective GPU share for each VM/instance being multiplexed onto the physical GPU.
Claim 10 recites similar limitations as those of claim 3. Claim 10 is rejected for similar reasons as those of claim 3.
Claims 4 and 11 are rejected under 35 U.S.C. 103 as being unpatentable over Fong in view of Venkataraman, further in view of Gomi et al. (US 20200209929 A1) hereafter Gomi.
Regarding claim 4, Fong in view of Venkataraman teach the method of claim 1. Fong teaches:
implementing the at least one cloud computing service comprises instantiating a third number of virtual machines or a third number of instances of a software application (Paragraph 30; discloses a service portal provided by a cloud service provider through which a user requests a SmartNIC resource and a resource processing module that receives the user request for at least one NIC resource. This resource processing module identifies SmartNICs comprising the requested resources and generates a cluster according to the requirements. Paragraph 21 further discloses virtualized computing resource images comprise executable code capable of creating a VM and such images are deployed by the cloud service provider to run virtualized computing resource instances on the SmartNICs. Therefore, the user request is received in the cloud provider provisioning process that identifies and generates the requested computing resource cluster and deploys virtualized computing resource instances for workload execution, corresponding to instantiation of a number compute instances of an application for workload execution, applications further disclosed in Paragraph 21 as “Workloads 103 comprise, for example, applications running as single components or several components working together”.);
a central processing unit (CPU) (Paragraph 30; “users via a user interface on a user device 102, can choose from available resources, as well as available quality of service (QoS) options. For example, plans can include SmartNICs with a CPU (e.g., an advanced reduced instruction set computer (RISC) machine (ARM) CPU)”);
graphic processing unit (GPU) shares (Paragraph 30; “a GPU, a partition of a CPU, GPU computational time slices and GPU memory.”).
It would have been obvious to a person of ordinary skill in the art before the effective filing date of the claimed invention to have provided a set of CPU time slices and have a set of CPU shares comprise at least one CPU share among the entire set of CPU shares implemented at a CPU core. Fong teaches providing GPU computational time slices (Paragraph 48), and further discloses providing selectable computing resources motivated by allowing a user to select resources best suited to the user’s use case (Paragraph 30). The implementation of this methodology would yield the predictable result of allowing the user to select CPU processing time allocations appropriate for the user’s particular use case.
Fong in view of Venkataraman does not teach one or both of the first number of CPU shares and the second number of GPU shares is less than the third number of virtual machines or the third number of instances of the software application.
However, Gomi teaches:
one or both of the first number of CPU shares and the second number of GPU shares is less than the third number of virtual machines or the third number of instances of the software application (Paragraph 70; “The group-range control unit 29 compares the operable number of high-priority applications being executed in the CPU11 with the number of CPU cores of the high-priority group, and determines whether or not the operable number of CPU cores of the high-priority group is equal to or less than the number of high-priority applications (step B4). If the operable number of CPU cores in the high priority group is less than or equal to the number of high priority applications, each CPU core in the high priority group is allocated execution of at least one application”, where the CPU cores correspond to the CPU resource shares element of the “one or both of” list of elements. The number of cores in the high priority group is equal to or less than the number of high priority applications, corresponding to the number of instances of the software application.).
Fong, Venkataraman, and Gomi are considered to be analogous to the claimed invention because they are reasonably pertinent to resource scheduling. Therefore, it would have been obvious to a person of ordinary skill in the art before the effective filing date of the claimed invention to have combined the teachings of Fong, Venkataraman, and Gomi to have one or both of the first number of CPU shares and the second number of GPU shares be less than the third number of virtual machines or the third number of instances of the software application. A person of ordinary skill in the art would have recognized sharing processor resources among multiple virtualized workloads is a known technique for efficiently utilizing available processing resources, whose implementation would yield the predictable result of allowing a single CPU share to be allocated among multiple VMs or application instances, as motivated by Gomi “each CPU core in the high priority group is allocated execution of at least one application” (Paragraph 70).
Claim 11 recites similar limitations as those of claim 4. Claim 11 is rejected for similar reasons as those of claim 4.
Claims 5-6 and 12-13 are rejected under 35 U.S.C. 103 as being unpatentable over Fong in view of Venkataraman, further in view of Prakash, further in view of Gomi.
Regarding claim 5, Fong in view of Venkataraman teach the method of claim 1. Fong teaches:
implementing the at least one cloud computing service comprises instantiating a third number of virtual machines or a third number of instances of a software application (Paragraph 30; discloses a service portal provided by a cloud service provider through which a user requests a SmartNIC resource and a resource processing module that receives the user request for at least one NIC resource. This resource processing module identifies SmartNICs comprising the requested resources and generates a cluster according to the requirements. Paragraph 21 further discloses virtualized computing resource images comprise executable code capable of creating a VM and such images are deployed by the cloud service provider to run virtualized computing resource instances on the SmartNICs. Therefore, the user request is received in the cloud provider provisioning process that identifies and generates the requested computing resource cluster and deploys virtualized computing resource instances for workload execution, corresponding to instantiation of a number compute instances of an application for workload execution, applications further disclosed in Paragraph 21 as “Workloads 103 comprise, for example, applications running as single components or several components working together”.);
a central processing unit (CPU) (Paragraph 30; “users via a user interface on a user device 102, can choose from available resources, as well as available quality of service (QoS) options. For example, plans can include SmartNICs with a CPU (e.g., an advanced reduced instruction set computer (RISC) machine (ARM) CPU)”);
graphic processing unit (GPU) shares (Paragraph 30; “a GPU, a partition of a CPU, GPU computational time slices and GPU memory.”).
It would have been obvious to a person of ordinary skill in the art before the effective filing date of the claimed invention to have provided a set of CPU time slices and have a set of CPU shares comprise at least one CPU share among the entire set of CPU shares implemented at a CPU core. Fong teaches providing GPU computational time slices (Paragraph 48), and further discloses providing selectable computing resources motivated by allowing a user to select resources best suited to the user’s use case (Paragraph 30). The implementation of this methodology would yield the predictable result of allowing the user to select CPU processing time allocations appropriate for the user’s particular use case.
Fong in view of Venkataraman does not teach one of the first number of CPU shares and the second number of GPU shares is greater than or equal to the third number of virtual machines or the third number of instances of the software application; the other of the first number of CPU shares and the second number of GPU shares is less than the third number of virtual machines or the third number of instances of the software application.
However, Prakash teaches:
one of the first number of CPU shares and the second number of GPU shares is greater than or equal to the third number of virtual machines or the third number of instances of the software application (Paragraph 47; “For example, if the vGPU profile 137 for a GPU 121 is set to 2q, there will be eight time slices, one per vGPU 140. In equal-share scheduling algorithm, a GPU 121 is split into time slices equal to the number of virtual machines 126 that are allocated to the GPU 121 and turned on”, explicitly teaching a number of GPU time slices, corresponding to shares, equal to the number of virtual machines).
Fong, Venkataraman, and Prakash are considered to be analogous to the claimed invention because they are reasonably pertinent to resource scheduling. Therefore, it would have been obvious to a person of ordinary skill in the art before the effective filing date of the claimed invention to have combined the teachings of Fong, Venkataraman, and Prakash to have the number of GPU shares be equal to the number of VMs or to the number of instances of the software application. A person of ordinary skill in the art would have recognized that multiplexing multiple GPU workloads onto a physical GPU using scheduling techniques and GPU utilization as motivated by Prakash (Paragraph 19) is a known method for managing GPU resources among multiple virtualized workloads, whose implementation would yield the predictable result of providing a respective GPU share for each VM/instance being multiplexed onto the physical GPU. Fong in view of Venkataraman, further in view of Prakash does not teach the other of the first number of CPU shares and the second number of GPU shares is less than the third number of virtual machines or the third number of instances of the software application.
However, Gomi teaches:
the other of the first number of CPU shares and the second number of GPU shares is less than the third number of virtual machines or the third number of instances of the software application (Paragraph 70; “The group-range control unit 29 compares the operable number of high-priority applications being executed in the CPU11 with the number of CPU cores of the high-priority group, and determines whether or not the operable number of CPU cores of the high-priority group is equal to or less than the number of high-priority applications (step B4). If the operable number of CPU cores in the high priority group is less than or equal to the number of high priority applications, each CPU core in the high priority group is allocated execution of at least one application”, where the CPU cores correspond to the CPU resource shares element of the “one or both of” list of elements. The number of cores in the high priority group is equal to or less than the number of high priority applications, corresponding to the number of instances of the software application.).
Fong, Venkataraman, Prakash, and Gomi are considered to be analogous to the claimed invention because they are reasonably pertinent to resource scheduling. Therefore, it would have been obvious to a person of ordinary skill in the art before the effective filing date of the claimed invention to have combined the teachings of Fong, Venkataraman, Prakash, and Gomi to have the other of the first number of CPU shares and the second number of GPU shares be less than the third number of virtual machines or the third number of instances of the software application. A person of ordinary skill in the art would have recognized sharing processor resources among multiple virtualized workloads is a known technique for efficiently utilizing available processing resources, whose implementation would yield the predictable result of allowing a single CPU share to be allocated among multiple VMs or application instances, as motivated by Gomi “each CPU core in the high priority group is allocated execution of at least one application” (Paragraph 70).
Claim 12 recites similar limitations as those of claim 5. Claim 12 is rejected for similar reasons as those of claim 5.
Regarding claim 6, Fong in view of Venkataraman teach the method of claim 1. Fong teaches:
implementing the at least one cloud computing service comprises instantiating a third number of virtual machines or a third number of instances of a software application (Paragraph 30; discloses a service portal provided by a cloud service provider through which a user requests a SmartNIC resource and a resource processing module that receives the user request for at least one NIC resource. This resource processing module identifies SmartNICs comprising the requested resources and generates a cluster according to the requirements. Paragraph 21 further discloses virtualized computing resource images comprise executable code capable of creating a VM and such images are deployed by the cloud service provider to run virtualized computing resource instances on the SmartNICs. Therefore, the user request is received in the cloud provider provisioning process that identifies and generates the requested computing resource cluster and deploys virtualized computing resource instances for workload execution, corresponding to instantiation of a number compute instances of an application for workload execution, applications further disclosed in Paragraph 21 as “Workloads 103 comprise, for example, applications running as single components or several components working together”.);
a central processing unit (CPU) (Paragraph 30; “users via a user interface on a user device 102, can choose from available resources, as well as available quality of service (QoS) options. For example, plans can include SmartNICs with a CPU (e.g., an advanced reduced instruction set computer (RISC) machine (ARM) CPU)”);
graphic processing unit (GPU) shares (Paragraph 30; “a GPU, a partition of a CPU, GPU computational time slices and GPU memory.”).
It would have been obvious to a person of ordinary skill in the art before the effective filing date of the claimed invention to have provided a set of CPU time slices and have a set of CPU shares comprise at least one CPU share among the entire set of CPU shares implemented at a CPU core. Fong teaches providing GPU computational time slices (Paragraph 48), and further discloses providing selectable computing resources motivated by allowing a user to select resources best suited to the user’s use case (Paragraph 30). The implementation of this methodology would yield the predictable result of allowing the user to select CPU processing time allocations appropriate for the user’s particular use case.
Fong in view of Venkataraman does not teach one of the first number of CPU shares and the second number of GPU shares is greater than the third number of virtual machines or the third number of instances of the software application; the other of the first number of CPU shares and the second number of GPU shares is less than or equal to the third number of virtual machines or the third number of instances of the software application.
However, Prakash teaches:
the other of the first number of CPU shares and the second number of GPU shares is less than or equal to the third number of virtual machines or the third number of instances of the software application (Paragraph 47; “For example, if the vGPU profile 137 for a GPU 121 is set to 2q, there will be eight time slices, one per vGPU 140. In equal-share scheduling algorithm, a GPU 121 is split into time slices equal to the number of virtual machines 126 that are allocated to the GPU 121 and turned on”, explicitly teaching a number of GPU time slices, corresponding to shares, equal to the number of virtual machines).
Fong, Venkataraman, and Prakash are considered to be analogous to the claimed invention because they are reasonably pertinent to resource scheduling. Therefore, it would have been obvious to a person of ordinary skill in the art before the effective filing date of the claimed invention to have combined the teachings of Fong, Venkataraman, and Prakash to have the number of GPU shares be equal to the number of VMs or to the number of instances of the software application. A person of ordinary skill in the art would have recognized that multiplexing multiple GPU workloads onto a physical GPU using scheduling techniques and GPU utilization as motivated by Prakash (Paragraph 19) is a known method for managing GPU resources among multiple virtualized workloads, whose implementation would yield the predictable result of providing a respective GPU share for each VM/instance being multiplexed onto the physical GPU. Fong in view of Venkataraman, further in view of Prakash does not teach the other of the first number of CPU shares and the second number of GPU shares is less than the third number of virtual machines or the third number of instances of the software application.
Fong in view of Venkataraman, further in view of Prakash does not teach one of the first number of CPU shares and the second number of GPU shares is greater than the third number of virtual machines or the third number of instances of the software application.
However, Gomi teaches:
one of the first number of CPU shares and the second number of GPU shares is greater than the third number of virtual machines or the third number of instances of the software application (Paragraph 70; “On the other hand, when the operable number of CPU cores of the high priority group is larger than the number of high priority applications, the CPU cores of the high priority group include at least one CPU core to which execution of the application is not allocated.”, disclosing unassigned CPU cores, corresponding to CPU shares, as a result of the number of CPU cores being greater than the number of the applications, corresponding to the number of instances of the software application.).
Fong, Venkataraman, Prakash, and Gomi are considered to be analogous to the claimed invention because they are reasonably pertinent to resource scheduling. Therefore, it would have been obvious to a person of ordinary skill in the art before the effective filing date of the claimed invention to have combined the teachings of Fong, Venkataraman, Prakash, and Gomi to have one of the first number of CPU shares and the second number of GPU shares be greater than the third number of virtual machines or the third number of instances of the software application. A person of ordinary skill in the art would have recognized that the prior art teaches that having more CPU cores, corresponding to CPU shares, results in unallocated CPU resources (Gomi, Paragraph 70), but results in assurance that each application is provided with at least one CPU share to work with, whose implementation would yield the predictable result of providing CPU shares corresponding to the available CPU processing capacity greater than the number of VMs/instances of the software application.
Claim 13 recites similar limitations as those of claim 6. Claim 13 is rejected for similar reasons as those of claim 6.
Conclusion
The prior art made of record and not relied upon is considered pertinent to applicant's disclosure. Quinn et al. (US 10680969 B1) discusses dynamically allocating host resources (e.g., CPUs, GPUs, etc.) to virtual machines (VMs) on host devices in a provider network where the host devices may be provisioned with quantities of each resource type and customers may request different combinations and quantities of resources for their VMs (of note, Col. 11, lines 21-42).
Any inquiry concerning this communication or earlier communications from the examiner should be directed to KENNETH P TRAN whose telephone number is (571)272-6926. The examiner can normally be reached M-TH 4:30 a.m. - 12:30 p.m. PT, F 4:30 a.m. - 8:30 a.m. PT, or at Kenneth.Tran@uspto.gov.
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, April Blair can be reached at (571) 270-1014. 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.
/KENNETH P TRAN/Examiner, Art Unit 2196
/APRIL Y BLAIR/Supervisory Patent Examiner, Art Unit 2196