DETAILED ACTION
The present application, filed on or after March 16, 2013, is being examined under the first inventor to file provisions of the AIA .
This office action is in response to claims filed 04/10/2024
Claims 1-20 are pending.
Drawings
The drawings are objected to because Fig 8 is not labeled 800 as it is in the specification. Furthermore, Figures 11, 12, 13, and 14 contain errors and are not stated clearly. Fig 11 states Cold Run Performance and Fig 12 states Warm Run Performance, but, in the specification Fig 11 refers to a cold and warm run performance, while Fig 12 shows 1102 but refers to charts 1200 and 1202 in the specification that are pointed to in Fig 13 and Fig 14 of the drawings. Corrected drawing sheets in compliance with 37 CFR 1.121(d) are required in reply to the Office action to avoid abandonment of the application. Any amended replacement drawing sheet should include all of the figures appearing on the immediate prior version of the sheet, even if only one figure is being amended. The figure or figure number of an amended drawing should not be labeled as “amended.” If a drawing figure is to be canceled, the appropriate figure must be removed from the replacement sheet, and where necessary, the remaining figures must be renumbered and appropriate changes made to the brief description of the several views of the drawings for consistency. Additional replacement sheets may be necessary to show the renumbering of the remaining figures. Each drawing sheet submitted after the filing date of an application must be labeled in the top margin as either “Replacement Sheet” or “New Sheet” pursuant to 37 CFR 1.121(d). If the changes are not accepted by the examiner, the applicant will be notified and informed of any required corrective action in the next Office action. The objection to the drawings will not be held in abeyance.
Specification
The abstract of the disclosure is objected to because it merely recites the method steps of claim 1. A corrected abstract of the disclosure is required and must be presented on a separate sheet, apart from any other text. See MPEP § 608.01(b).
The title of the invention is not descriptive enough. A new title is required that is clearly indicative of the invention to which the claims are directed.
The disclosure is objected to because of the following informalities: minor errors such as "distributing" should be "distribute" on pages 4 and 5. Additionally, the specification recites "persistent helper functions" where the drawings are labeled "persistent helper services". Examiner recommends reviewing the.
Appropriate correction is required.
Claim Objections
Claim 20 is objected to under 37 CFR 1.75 as being a substantial duplicate of claim 6. When two claims in an application are duplicates or else are so close in content that they both cover the same thing, despite a slight difference in wording, it is proper after allowing one claim to object to the other as being a substantial duplicate of the allowed claim. See MPEP § 608.01(m).
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, 3, 5, 17, and 18 are rejected under 35 U.S.C. 103 as being unpatentable over Kröhling et al. Pub. No. US 11050607 B2 (hereafter Kröhling) in view of Stojkovic et al Pub. No. US 2024/0134698 A1 (hereafter Stojkovic) and in further view of Wu et al. Us Pub. No. US 11915064 B2 (hereafter Wu).
With regards to claim 1, Kröhling teaches a method for improving performance of functions-as-a-service comprising: (FAAS is a category of cloud computing services that provides a platform allowing users to develop, run, and manage application functionalities without the complexity of building and maintaining the infrastructure typically associated with developing and launching an application. Col 2 lines 62-67)receiving at a function delivery network a first function call from a first user within a first time window, (proxy server 104 receives an initial request 602 sent by a client 102 to application 108 Col 8 lines 27-28)the first function call calling a first function and comprising a first argument; (FAAS provider 110 determines a function 604 to invoke for processing the initial request 602 and invokes the function 604 Col 8 lines 28-30)sending a first function call request to a cloud service responsive to the first and second function calls and comprising the first argument; (Proxy server 104 initiates the “request processing phase” by relaying request 204 to FAAS provider 110 Col 5 lines 28--29)performing at the cloud service a first function responsive to the first function call request producing a first function result; ( proxy server 104 sends request 204 to FAAS provider 110, which passes the request to function 208. Function 208 generates a processed request 204′ by inserting a header “Request-Id: abc123” into the request 204. Col 5 lines 54-58)receiving at the function delivery network the first function result; (FAAS provider 110 collects the one or more results of the one or more functions invoked for processing request 204…..FAAS provider 110 transmits the processed request 204′ to proxy server 104. Col 6 lines 63-64, Col 7 lines 1-2)Kröhling does not teach time windows, function arguments or second users/function calls.However, in analogous art, Stojkovic teaches receiving at a function delivery network a first function call from a first user within a first time window, the first function call calling a first function and comprising a first argument; receiving at the function delivery network a second function call from a second user calling the first function within the first time window, the second function call comprising the first argument; (dispatcher 220 can delay a remote procedure call (RPC) for a predetermined amount, for instance 5 milliseconds. If other remote procedure calls to the same function are detected in the meantime (with or without the same argument values), dispatcher 220 can coalesce all of these remote procedure calls into a single I/O transaction that requires executing all the function instances at the destination node. [0135])comprising a first argument; the second function call comprising the first argument; (dispatcher 220 maintains a table that records the set of {input values, output values} tuples observed in the past…When dispatcher 220 is about to call a pure function with certain input values, dispatcher 220 checks the table. If dispatcher 220 finds an entry with the same inputs, dispatcher 220 reads the outputs and skips the remote procedure call. [0135])It would have been obvious to a person have ordinary skill in the art prior to the effective filing date of the claimed invention to combine the function calls with the same arguments during a predetermined interval of Stojkovic with the proxy mediated FAAS architecture receiving client requests of Kröhling to provide a FAAS intermediary capable of consolidating matching functions calls received during a time window.
A person having ordinary skill in the art would have motivated to make this combination, with a reasonable expectation of success to reduce resource usage and perform more efficiently execution of functions by serverless computing system 202 as compared to currently available serverless computing systems. (in at least Stojkovic [0057])Kröhling and Stojkovic don’t specifically teach second users or transmitting the first result to the first and second user.However, in analogous art, Wu teaches from a second user (callers 110 1-n represent a series of calls to a particular API function having a particular set of input parameters. API wrapper 220 may only return a single API response to multiple callers if all of the callers requested the same functionality from the API (e.g., the same function with the same input parameters) Col 4 lines 52-57)responsive to the first and second function calls and comprising the first argument ( API executor 224 provides a single API call based on the call from caller 110 1 to API execution monitor 312, and API execution monitor 312 issues a corresponding single API call to API 120 at step 358. Col 5 lines 21-24)and transmitting from the function delivery network the first function result to each of the first user and the second user. (Once API executor 224 receives a response from API 120 to the single API call sent at step 230, API executor 224 returns the response to all of callers 110 at step 256 (e.g., via API queue 222) Col 4 lines 24-27)It would have been obvious to a person have ordinary skill in the art prior to the effective filing date of the claimed invention to combine providing a single underlying call on behalf of multiple related calls and returning the response to multiple callers of Wu with the function calls with the same arguments during a predetermined interval of Stojkovic with the proxy mediated FAAS architecture receiving client requests of Kröhling resulting in multiple same-function, same-input calls being satisfied by a single request and response.
A person having ordinary skill in the art would have motivated to make this combination, with a reasonable expectation of success to significantly reduce load on the underlying API and thereby improve the functioning of the computing devices involved and the responsiveness and scalability of the API. (in at least Wu Col 3 lines 23-25)
With regards to claim 2, Wu teaches further comprising storing the first function result at the function delivery network. (Some embodiments further comprise storing, by the API wrapper, the response from the API to the first call in a cache. Col 8 lines 56-58)
With regards to claim 3, Wu teaches further comprising: receiving at the function delivery network a third function call from a third user (Certain embodiments further comprise receiving, by the API wrapper, from a third caller, a third call to the function provided by the API and sending, by the API wrapper, the third call to the API. Col 8 lines 58-61) within a second time window, (Some embodiments further comprise determining, by the API wrapper, that a time period has elapsed without receiving a corresponding response from the API to the third call Col 8 lines 61-64)the third function call calling the first function and comprising the first argument; (API results cache 310 may store a current response value for each combination of input parameters for each function of API 120. Col 6 lines 9-11. With respect to callers 110 is performed separately for each group of calls to any given function having the same input parameters. Col 4 lines 58-60)and transmitting the first function result to the third user. (responding, by the API wrapper, based on the time period elapsing, to the third call from the third caller with the response from the API to the first call from the cache. Col 8 lines 64-67).
With regards to claim 5, Kröhling teaches receiving at the function delivery network a third function call from a third user (multiple clients may send multiple requests to one or more applications. Blocks 502-508 may be executed for each of these initial requests. For example, client 102 may send another request to application 108 or a second client may send a request to application 108 Col 8 lines 15-19)
performing at the cloud service a second function responsive to the second function call request producing a second function result; (FAAS provider 110 determines that a function 208 stored on server 116 and a function 210 stored on server 118 should be invoked for request 204. Accordingly, FAAS provider 110 may pass request 204 along to servers 116 and 118. Functions and 210 are offered as a “FAAS” by FAAS provider 110. Col 5 lines 35-40. FAAS provider 110 collects the one or more results of the one or more functions invoked for processing request 204 Col 6 lines 63-64)receiving at the function delivery network the second function result; (FAAS provider 110 returns response 402 to proxy server 104, which returns the response 402 to client 102. Col 7 lines 23-25)Kröhling does not teach time windows, function arguments or second users/function calls.
However, in analogous art, Stojkovic teaches within the first time window (dispatcher 220 can delay a remote procedure call (RPC) for a predetermined amount, for instance 5 milliseconds. If other remote procedure calls to the same function are detected in the meantime (with or without the same argument values), dispatcher 220 can coalesce all of these remote procedure calls into a single I/O transaction that requires executing all the function instances at the destination node. [0135])It would have been obvious to a person have ordinary skill in the art prior to the effective filing date of the claimed invention to combine the function calls with the same arguments during a predetermined interval of Stojkovic with the proxy mediated FAAS architecture receiving client requests of Kröhling to provide a FAAS intermediary capable of consolidating matching functions calls received during a time window.A person having ordinary skill in the art would have motivated to make this combination, with a reasonable expectation of success to reduce resource usage and perform more efficiently execution of functions by serverless computing system 202 as compared to currently available serverless computing systems. (in at least Stojkovic [0057])Kröhling and Stojkovic don’t specifically teach third call calling a second function with a second argument, sending and transmitting that call to the third user.
However, in analogous art, Wu teaches the third function call calling a second function (Some embodiments further comprise receiving, by the API wrapper, from an additional caller, an additional call to a different function provided by the API prior to receiving, by the API wrapper, the response from the API to the first call, and sending, by the API wrapper, the additional call to the API without waiting for the response from the API to the first call. Col 9 lines 28-34)
and comprising a second argument; (the additional call comprises input values to the function that are different than the common set of input values to the function Col 9 lines 23-25 )
and sending a second function call request to the cloud services responsive to the third function call; (sending, by the API wrapper, the additional call to the API without waiting for the response from the API to the first call. Col 9 lines 32-34 ).and transmitting from the function delivery network the second function result to the third user. (Once API executor 224 receives a response from API 120 to the single API call sent at step 230, API executor 224 returns the response to all of callers 110 at step 256 (e.g., via API queue 222) Col 4 lines 24-27 )
It would have been obvious to a person have ordinary skill in the art prior to the effective filing date of the claimed invention to combine providing a single underlying call on behalf of multiple related calls and returning the response to multiple callers of Wu with the function calls with the same arguments during a predetermined interval of Stojkovic with the proxy mediated FAAS architecture receiving client requests of Kröhling resulting in multiple same-function, same-input calls being satisfied by a single request and response.
A person having ordinary skill in the art would have motivated to make this combination, with a reasonable expectation of success to significantly reduce load on the underlying API and thereby improve the functioning of the computing devices involved and the responsiveness and scalability of the API. (in at least Wu Col 3 lines 23-25 )
With regards to claim 17, Kröhling teaches a method for improving performance of functions-as-a-service comprising: (FAAS is a category of cloud computing services that provides a platform allowing users to develop, run, and manage application functionalities without the complexity of building and maintaining the infrastructure typically associated with developing and launching an application. Col 2 lines 62-67)receiving at a function delivery network a first function call from a first user within a first time window, (proxy server 104 receives an initial request 602 sent by a client 102 to application 108 Col 8 lines 27-28)the first function call calling a first function and comprising a first argument; (FAAS provider 110 determines a function 604 to invoke for processing the initial request 602 and invokes the function 604 Col 8 lines 28-30)sending a first function call request to a cloud service responsive to the first and second function calls and comprising the first argument; (Proxy server 104 initiates the “request processing phase” by relaying request 204 to FAAS provider 110 Col 5 lines 28--29)performing at the cloud service a first function responsive to the first function call request producing a first function result; ( proxy server 104 sends request 204 to FAAS provider 110, which passes the request to function 208. Function 208 generates a processed request 204′ by inserting a header “Request-Id: abc123” into the request 204. Col 5 lines 54-58)receiving at the function delivery network the first function result; (FAAS provider 110 collects the one or more results of the one or more functions invoked for processing request 204…..FAAS provider 110 transmits the processed request 204′ to proxy server 104. Col 6 lines 63-64, Col 7 lines 1-2)sending a second function call request to a cloud service responsive to the third function call and comprising the second argument; performing at the cloud service a second function responsive to the second function call request producing a second function result; (FAAS provider 110 determines that a function 208 stored on server 116 and a function 210 stored on server 118 should be invoked for request 204. Accordingly, FAAS provider 110 may pass request 204 along to servers 116 and 118. Functions 208 and 210 are offered as a "FAAS" by FAAS provider 110. Col 5 lines 35-40)receiving at the function delivery network each of the first function result and the second function result (FAAS provider 110 collects the one or more results of the one or more functions invoked for processing request 204. FAAS provider 110 processes these results and generates processed request 204′ based on the one or more results. Processed request 204′ may include one or more modifications by the one or more invoked functions. FAAS provider 110 transmits the processed request 204′ to proxy server 104. Col 6 lines 63-67 Col 7 lines 1-2)Kröhling does not teach multiple function calls within the same time window.However, in analogous art, Stojkovic teaches receiving at a function delivery network a first function call from a first user within a first time window, the first function call calling a first function and comprising a first argument; receiving at the function delivery network a second function call from a second user calling the first function within the first time window, the second function call comprising the first argument; (dispatcher 220 can delay a remote procedure call (RPC) for a predetermined amount, for instance 5 milliseconds. If other remote procedure calls to the same function are detected in the meantime (with or without the same argument values), dispatcher 220 can coalesce all of these remote procedure calls into a single I/O transaction that requires executing all the function instances at the destination node. [0135])comprising a first argument; the second function call comprising the first argument; (dispatcher 220 maintains a table that records the set of {input values, output values} tuples observed in the past…When dispatcher 220 is about to call a pure function with certain input values, dispatcher 220 checks the table. If dispatcher 220 finds an entry with the same inputs, dispatcher 220 reads the outputs and skips the remote procedure call. [0135])It would have been obvious to a person have ordinary skill in the art prior to the effective filing date of the claimed invention to combine the function calls with the same arguments during a predetermined interval of Stojkovic with the proxy mediated FAAS architecture receiving client requests of Kröhling to provide a FAAS intermediary capable of consolidating matching functions calls received during a time window.
A person having ordinary skill in the art would have motivated to make this combination, with a reasonable expectation of success to reduce resource usage and perform more efficiently execution of functions by serverless computing system 202 as compared to currently available serverless computing systems. (in at least Stojkovic [0057]Kröhling and Stojkovic don’t specifically teach consolidating matching calls into a request/response, a different function and argument, storing or returning the shared result to both callers. However, in analogous art, Wu teaches from a second user (callers 110 1-n represent a series of calls to a particular API function having a particular set of input parameters. API wrapper 220 may only return a single API response to multiple callers if all of the callers requested the same functionality from the API (e.g., the same function with the same input parameters) Col 4 lines 52-57)responsive to the first and second function calls and comprising the first argument ( API executor 224 provides a single API call based on the call from caller 110 1 to API execution monitor 312, and API execution monitor 312 issues a corresponding single API call to API 120 at step 358. Col 5 lines 21-24)receiving at the function delivery network a third function call from a third user calling a second function within the first time window, the third function call comprising a second argument; (Some embodiments further comprise receiving, by the API wrapper, from an additional caller, an additional call to a different function provided by the API prior to receiving, by the API wrapper, the response from the API to the first call, and sending, by the API wrapper, the additional call to the API without waiting for the response from the API to the first call. Col 9 lines 28-34. Certain embodiments further comprise receiving, by the API wrapper, from an additional caller, an additional call to the function provided by the API prior to receiving, by the API wrapper, the response from the API to the first call, wherein the additional call comprises input values to the function that are different than the common set of input values to the function Col 9 lines 19-25)and storing each of the first function result and the second function result at the function delivery network; (API results cache 310 may store a current response value for each combination of input parameters for each function of API 120. Col 6 lines 9-11)and transmitting from the function delivery network the first function result to each of the first user and the second user. (Once API executor 224 receives a response from API 120 to the single API call sent at step 230, API executor 224 returns the response to all of callers 110 at step 256 (e.g., via API queue 222) Col 4 lines 24-27)It would have been obvious to a person have ordinary skill in the art prior to the effective filing date of the claimed invention to combine different function/input processing, storing, and shared-result response of Wu with the time window function call of Stojkovic and the proxy mediated FAAS system of Kröhling resulting in consolidating matching function calls during a time window and storing results for different function/input combinations to reduce the number of requests to the cloud service.
A person having ordinary skill in the art would have motivated to make this combination, with a reasonable expectation of success to significantly reduce load on the underlying API and thereby improve the functioning of the computing devices involved and the responsiveness and scalability of the API. Furthermore, by utilizing a cache, certain embodiments of the present disclosure provide improved response times and ensured data availability even in cases where an underlying API is slow to respond. (in at least Wu Col 3 lines 23-29)
With regards to claim 18, Wu teaches further comprising: receiving at the function delivery network a fourth function call from a fourth user (Certain embodiments further comprise receiving, by the API wrapper, from a fourth caller, a fourth call to the function provided by the API Col 9 lines 1-3)within a second time window, (determining, by the API wrapper, that the time period has elapsed since receiving the fourth call without receiving the corresponding response from the API to the third call Col 9 lines 5-8)the fourth function call calling the first function and comprising the first argument; (API results cache 310 may store a current response value for each combination of input parameters for each function of API 120. Col 6 lines 9-11. With respect to callers 110 is performed separately for each group of calls to any given function having the same input parameters. Col 4 lines 58-60)and transmitting the first function result to the fourth user. (responding, by the API wrapper, based on the time period elapsing since receiving the fourth call, to the fourth call from the fourth caller with the response from the API to the first call from the cache. Col 9 lines 8-11)
Claims 4 and 19 are rejected under 35 U.S.C. 103 as being unpatentable over Kröhling et al. Pub. No. US 11050607 B2(hereafter Kröhling) in view of Stojkovic et al Pub. No. US 2024/0134698 A1 (hereafter Stojkovic) and in further view of Wu et al. Us Pub. No. US 11915064 B2(hereafter Wu) as applied to claims 1, 2, 3, 5, 17, and 18 above and in further view of Hostetter et al. Pub. No. US 10621163 B2(hereafter Hostetter).
With regards to claim 4, Hostetter teaches further comprising determining the first function result has not changed over one or more time windows other than first and second time windows. (At block 424, process 400 can iterate through the results obtained at block 422, checking each against a corresponding result produced by that source data in the execution of f(P) corresponding to item m.... However, if all of these results are the same as they were in the execution for item m, since the source data has not changed, the value from item m is valid for version t, and process 400 continues to block 426. At block 426, process 400 can update the linked list for the f(P) node to have a stored result with the m result and a timeframe defined by the intersection of the timeframes obtained at block 422. Col 12 lines 3-21)It would have been obvious to a person have ordinary skill in the art prior to the effective filing date of the claimed invention to combine the storing of a result with a corresponding time frame of Hostetter with the FAAS architecture of Kröhling, the time window and group requests of Stojkovic and concurrent calls from multiple users of Wu resulting in a service where the result of a function can be stored so that when the function is invoked with the same arguments as a previous execution of the function, the stored results can be used instead of re-executing the function.
A person having ordinary skill in the art would have motivated to make this combination, with a reasonable expectation of success in order to provide significant improvements over prior art systems in both processing speed and network bandwidth utilization (in at least Hostetter Col 5 lines 35-38).
With regards to claim 19, Hostetter teaches further comprising determining the first function result has not changed over one or more time windows other than first and second time windows. (At block 424, process 400 can iterate through the results obtained at block 422, checking each against a corresponding result produced by that source data in the execution of f(P) corresponding to item m.... However, if all of these results are the same as they were in the execution for item m, since the source data has not changed, the value from item m is valid for version t, and process 400 continues to block 426. At block 426, process 400 can update the linked list for the f(P) node to have a stored result with the m result and a timeframe defined by the intersection of the timeframes obtained at block 422. Col 12 lines 3-21)It would have been obvious to a person have ordinary skill in the art prior to the effective filing date of the claimed invention to combine the storing of a result with a corresponding time frame of Hostetter with the FAAS architecture of Kröhling, the time window and group requests of Stojkovic and concurrent calls from multiple users of Wu resulting in a service where the result of a function can be stored so that when the function is invoked with the same arguments as a previous execution of the function, the stored results can be used instead of re-executing the function.A person having ordinary skill in the art would have motivated to make this combination, with a reasonable expectation of success in order to provide significant improvements over prior art systems in both processing speed and network bandwidth utilization (in at least Hostetter Col 5 lines 35-38).
Claims 6-16 and 20 are rejected under 35 U.S.C. 103 as being unpatentable over Kröhling et al. Pub. No. US 11050607 B2(hereafter Kröhling) in view of Stojkovic et al Pub. No. US 2024/0134698 A1 (hereafter Stojkovic) and in further view of Wu et al. Us Pub. No. US 11915064 B2(hereafter Wu) as applied to claims 1, 2, 3, 5, 17, and 18 above and in further view of Madisetti et al. Pub. No. US 10983768 B2 (hereafter Madisetti).
With regards to claim 6, Madisetti teaches further comprising: generating at the cloud service a first precomputation argument that differs from the first argument responsive to the first function call; (The method 1500 may continue at step 1506 with generating a first precomputation argument that differs from the first argument responsive to the first function call Col 11 lines 26-29)executing at the cloud service a first persistent function responsive to the first precomputation argument, the first persistent function comprising performing at least one precomputation operation, the at least one precomputation operation comprising performing the first function responsive to the first precomputation argument, producing a first precomputation result; ( at step 1508 with executing a first persistent function responsive to the first precomputation argument, the first persistent function comprising performing at least one precomputation operation, the at least one precomputation operation comprising performing the first function responsive to the first precomputation argument, producing a first precomputation result Col 11 lines 29-35)storing at the cloud service the first precomputation result; (The first precomputation result generated at step 1508 may be stored at step 1510.Col 11 lines 35-37)identifying at the cloud service one or more operations comprised by the first function that are persisted, defining persisted operations; identifying at the cloud service one or more operations comprised by the first function that are not persisted, defining non-persisted operations; determining at the cloud service a total resource availability; (The method 1500 may continue at 1512 with identifying one or more operations comprised by the first function that are persisted, defining persisted operations. The method 1500 may continue at 1514 with identifying one or more operations comprised by the first function that are not persisted, defining non-persisted operations, at step 1516 with determining a total resource availability, Col 11 lines 37-43)determining at the cloud service a performance enhancement value for each non-persisted operation by comparing a time to perform the non-persisted operation with a time to perform the non-persisted operation if it were persisted; assigning at the cloud service a resource cost to each performance enhancement value; (The speedup from using persistent helpers can then be computed by determining a performance enhancement value for each non-persisted operation by comparing the time to perform the non-persisted operation with the time to perform the non-persisted operation if it were persisted and assigning a resource cost to each performance enhancement value, the resource cost being the resource utilization incurred by persisting the non-persisted operation Col 9 lines 48-56)recursively reassigning at the cloud service the non-persisted operations as persisted operations in order of the performance enhancement values, defining reassigned operations, until a sum of the resource costs for the reassigned operations would exceed the total resource availability; (Upon determining the performance enhancement value and resource cost for each non-persisted operation, the non-persisted operations may be recursively reassigned as persisted operations in order of their performance enhancement values, defining reassigned operations, until the sum of the resource costs for the reassigned operations would exceed the total resource availability. Col 9 lines 61-67)receiving at the function delivery network a third function call from a third user comprising a second argument; sending a second function call request to the cloud service responsive to the third function call and comprising the second argument; comparing at the cloud service the second argument to the first precomputation argument; (The method 1500 may continue at 1524 with receiving a second function call comprising a second argument, at 1526 with comparing the second argument to the first precomputation argument Col 11 lines 57-60)and upon determining the second argument is identical to the first precomputation argument, transmitting to the function delivery network the first precomputation result; and transmitting from the function delivery network the first precomputation. (and finish at 1528 with, upon determining the second argument is identical to the first precomputation argument, transmitting the first precomputation result from a source of the second function call. Col 11 lines 61-64)It would have been obvious to a person have ordinary skill in the art prior to the effective filing date of the claimed invention to combine the teachings of Madisetti adding additional functionality such as generating a first argument different than the previous argument, storing the result at the cloud service and assigning a resource cost to the FAAS service of Kröhling, the time window and group requests of Stojkovic and concurrent calls from multiple users of Wu in order to allow the FAAS system to aggregate redundant requests, execute fewer cloud-function calls, precompute and persist results, and return shared results to multiple users.
A person having ordinary skill in the art would have motivated to make this combination, with a reasonable expectation of success to make function calls faster and also reduces load since common computation is shared by the cloud provider across millions of calls that can share the common precomputed values in at least (Col 3 lines 44-47)
With regards to claim 7, Madisetti teaches further comprising storing the first precomputation result in memory at the cloud service. (The result executing a function on the precomputation argument, producing a precomputation result, may be stored as described above, similar to storage of results from executing functions responsive to a function call, in memory or in a database Col 8 lines 66-67 Col 9 lines 1-3)
With regards to claim 8, Madisetti teaches further comprising storing the first precomputation result in a result database at the cloud service. (The result executing a function on the precomputation argument, producing a precomputation result, may be stored as described above, similar to storage of results from executing functions responsive to a function call, in memory or in a database Col 8 lines 66-67 Col 9 lines 1-3)
With regards to claim 9, Madisetti teaches wherein the first persistent function is stateful. (A key differentiating factor of persistent helper functions from existing FaaS offerings is that the persistent helper functions can be stateful Col 2 lines 47-49)
With regards to claim 10, Madisetti teaches further comprising retrieving the first precomputation result using remote direct memory access. (persistent helper functions may benefit from RDMA by the retrieval of the results of persistent helper functions, defined as persistent results, using RDMA. Col 7 lines 64-67)
With regards to claim 11, Madisetti teaches wherein the total resource availability is at least one of a total memory availability, a total read/write availability, and a storage availability; (the algorithm may further determine a total resource availability, the resource being at least one of memory used, database read/write capacity used or database size. Col 9 lines 45-48)and the resource cost is at least one of memory used in persisting the non-persisted operation, read/write utilization in persisting the non-persisted operation, and storage utilized in persisting the non-persisted operation. (assigning a resource cost to each performance enhancement value, the resource cost being the resource utilization incurred by persisting the non-persisted operation. Col 9 lines 54-56)
With regards to claim 12, Madisetti teaches wherein the non-persisted operations are reassigned as persisted operations responsive to having the largest performance enhancement value. (the non-persisted operations may be reassigned as persisted operations responsive to having the largest performance enhancement value. Col 10 lines 1-3)
With regards to claim 13, Madisetti teaches wherein the non-persisted operations are reassigned as persisted operations responsive to having a largest ratio of performance enhancement value to the resource cost. (the non-persisted operations may be reassigned as persisted operations responsive to having the largest ratio of performance enhancement value to resource cost. Col 10 lines 3-6)
With regards to claim 14, Madisetti teaches comprising caching at the cloud service an image of the first function; (When a server runs a function for the first time, it caches the function image and starts a hot container. Col 7 lines 45-47)creating at the cloud service a first container consisting of the first function; storing at the cloud service the first container in a function container pool; (The RaaS server includes a resource manager 202 which launches and manages a container pool 218 for execution of functions. Col 7 lines 30-32)caching at the cloud service an image of the first persistent function; creating at the cloud service a first persistent container consisting of the first persistent function; and storing at the cloud service the first persistent container in a persistent function container pool. (The server maintains a pool of containers for persistent helper functions 224, which are independent of the containers which execute the functions Col 7 lines 48-51. The method may further comprise caching an image of the first function, creating a first container consisting of the first function, storing the first container in a function container pool, caching an image of the first persistent function, creating a first persistent container consisting of the first persistent function, and storing the first persistent container in a persistent function container pool. Col 5 lines 4-11)
With regards to claim 15, Madisetti teaches wherein executing the first persistent function comprises executing the first persistent container. (executing the first persistent function may comprise executing the first persistent container. Col 5 lines 12-14)
With regards to claim 16, Madisetti teaches further comprising retrieving the first persistent result using remote direct memory access. (persistent helper functions may benefit from RDMA by the retrieval of the results of persistent helper functions, defined as persistent results, using RDMA. Col 7 lines 64-67)
With regards to claim 20, Madisetti teaches further comprising: generating at the cloud service a first precomputation argument that differs from the first argument responsive to the first function call; (The method 1500 may continue at step 1506 with generating a first precomputation argument that differs from the first argument responsive to the first function call Col 11 lines 26-29)executing at the cloud service a first persistent function responsive to the first precomputation argument, the first persistent function comprising performing at least one precomputation operation, the at least one precomputation operation comprising performing the first function responsive to the first precomputation argument, producing a first precomputation result; ( at step 1508 with executing a first persistent function responsive to the first precomputation argument, the first persistent function comprising performing at least one precomputation operation, the at least one precomputation operation comprising performing the first function responsive to the first precomputation argument, producing a first precomputation result Col 11 lines 29-35)storing at the cloud service the first precomputation result; (The first precomputation result generated at step 1508 may be stored at step 1510.Col 11 lines 35-37)identifying at the cloud service one or more operations comprised by the first function that are persisted, defining persisted operations; identifying at the cloud service one or more operations comprised by the first function that are not persisted, defining non-persisted operations; determining at the cloud service a total resource availability; (The method 1500 may continue at 1512 with identifying one or more operations comprised by the first function that are persisted, defining persisted operations. The method 1500 may continue at 1514 with identifying one or more operations comprised by the first function that are not persisted, defining non-persisted operations, at step 1516 with determining a total resource availability, Col 11 lines 37-43)determining at the cloud service a performance enhancement value for each non-persisted operation by comparing a time to perform the non-persisted operation with a time to perform the non-persisted operation if it were persisted; assigning at the cloud service a resource cost to each performance enhancement value; (The speedup from using persistent helpers can then be computed by determining a performance enhancement value for each non-persisted operation by comparing the time to perform the non-persisted operation with the time to perform the non-persisted operation if it were persisted and assigning a resource cost to each performance enhancement value, the resource cost being the resource utilization incurred by persisting the non-persisted operation Col 9 lines 48-56)recursively reassigning at the cloud service the non-persisted operations as persisted operations in order of the performance enhancement values, defining reassigned operations, until a sum of the resource costs for the reassigned operations would exceed the total resource availability; (Upon determining the performance enhancement value and resource cost for each non-persisted operation, the non-persisted operations may be recursively reassigned as persisted operations in order of their performance enhancement values, defining reassigned operations, until the sum of the resource costs for the reassigned operations would exceed the total resource availability. Col 9 lines 61-67)receiving at the function delivery network a third function call from a third user comprising a second argument; sending a second function call request to the cloud service responsive to the third function call and comprising the second argument; comparing at the cloud service the second argument to the first precomputation argument; (The method 1500 may continue at 1524 with receiving a second function call comprising a second argument, at 1526 with comparing the second argument to the first precomputation argument Col 11 lines 57-60)and upon determining the second argument is identical to the first precomputation argument, transmitting to the function delivery network the first precomputation result; and transmitting from the function delivery network the first precomputation. (and finish at 1528 with, upon determining the second argument is identical to the first precomputation argument, transmitting the first precomputation result from a source of the second function call. Col 11 lines 61-64)It would have been obvious to a person have ordinary skill in the art prior to the effective filing date of the claimed invention to combine the teachings of Madisetti adding additional functionality such as generating a first argument different than the previous argument, storing the result at the cloud service and assigning a resource cost to the FAAS service of Kröhling, the time window and group requests of Stojkovic and concurrent calls from multiple users of Wu in order to allow the FAAS system to aggregate redundant requests, execute fewer cloud-function calls, precompute and persist results, and return shared results to multiple users.
A person having ordinary skill in the art would have motivated to make this combination, with a reasonable expectation of success to make function calls faster and also reduces load since common computation is shared by the cloud provider across millions of calls that can share the common precomputed values in at least (Col 3 lines 44-47)
Conclusion
Any inquiry concerning this communication or earlier communications from the examiner should be directed to Todd Jeffrey Johnson whose telephone number is (571)270-0929. The examiner can normally be reached M-F, 7:30am to 5pm ET.
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, Bradley Teets can be reached at (571) 272-3338. 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.
/T.J.J./Examiner, Art Unit 2197
/BRADLEY A TEETS/Supervisory Patent Examiner, Art Unit 2197