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 has been examined. Claims 1-20 are pending.
The Group and/or Art Unit location of your application in the PTO has changed. To aid in correlating any papers for this application, all further correspondence regarding this application should be directed to Group Art Unit 2175.
Specification
The title of the invention is not descriptive. A new title is required that is clearly indicative of the invention to which the claims are directed.
Double Patenting
4. The nonstatutory double patenting rejection is based on a judicially created doctrine grounded in public policy (a policy reflected in the statute) so as to prevent the unjustified or improper timewise extension of the “right to exclude” granted by a patent and to prevent possible harassment by multiple assignees. A nonstatutory double patenting rejection is appropriate where the conflicting claims are not identical, but at least one examined application claim is not patentably distinct from the reference claim(s) because the examined application claim is either anticipated by, or would have been obvious over, the reference claim(s). See, e.g., In re Berg, 140 F.3d 1428, 46 USPQ2d 1226 (Fed. Cir. 1998); In re Goodman, 11 F.3d 1046, 29 USPQ2d 2010 (Fed. Cir. 1993); In re Longi, 759 F.2d 887, 225 USPQ 645 (Fed. Cir. 1985); In re Van Ornum, 686 F.2d 937, 214 USPQ 761 (CCPA 1982); In re Vogel, 422 F.2d 438, 164 USPQ 619 (CCPA 1970); In re Thorington, 418 F.2d 528, 163 USPQ 644 (CCPA 1969).
A timely filed terminal disclaimer in compliance with 37 CFR 1.321(c) or 1.321(d) may be used to overcome an actual or provisional rejection based on nonstatutory double patenting provided the reference application or patent either is shown to be commonly owned with the examined application, or claims an invention made as a result of activities undertaken within the scope of a joint research agreement. See MPEP § 717.02 for applications subject to examination under the first inventor to file provisions of the AIA as explained in MPEP § 2159. See MPEP §§ 706.02(l)(1) - 706.02(l)(3) for applications not subject to examination under the first inventor to file provisions of the AIA . A terminal disclaimer must be signed in compliance with 37 CFR 1.321(b).
The USPTO Internet website contains terminal disclaimer forms which may be used. Please visit www.uspto.gov/patent/patents-forms. The filing date of the application in which the form is filed determines what form (e.g., PTO/SB/25, PTO/SB/26, PTO/AIA /25, or PTO/AIA /26) should be used. A web-based eTerminal Disclaimer may be filled out completely online using web-screens. An eTerminal Disclaimer that meets all requirements is auto-processed and approved immediately upon submission. For more information about eTerminal Disclaimers, refer to www.uspto.gov/patents/process/file/efs/guidance/eTD-info-I.jsp.
5. Claims 1-3 are rejected under the judicially created doctrine of obviousness-type double patenting as being unpatentable over claims 1, 10 in Patent No. 12,135,603 respectively. Although the conflicting claims are not identical, they are not patentably distinct from each other because claims 1 and 10 of the US Patent No. 12,135,603 are similar in scope to claims 1-3 of the present application with only obvious wording variations.
6. Claims 4-10 are rejected under the judicially created doctrine of obviousness-type double patenting as being unpatentable over claims 11, 2, 3, 7, 8, 9, 5 in Patent No. 12,135,603 respectively. Although the conflicting claims are not identical, they are not patentably distinct from each other because claims 11, 2, 3, 7, 8, 9, 5 of the US Patent No. 12,135,603 are similar in scope to claims 4-10 of the present application with only obvious wording variations.
7. Claims 11-13 are rejected under the judicially created doctrine of obviousness-type double patenting as being unpatentable over claims 12, 18 in Patent No. 12,135,603 respectively. Although the conflicting claims are not identical, they are not patentably distinct from each other because claims 12 and 18 of the US Patent No. 12,135,603 are similar in scope to claims 11-13 of the present application with only obvious wording variations.
8. Claims 14-16 are rejected under the judicially created doctrine of obviousness-type double patenting as being unpatentable over claims 13, 2, 3 in Patent No. 12,135,603 respectively. Although the conflicting claims are not identical, they are not patentably distinct from each other because claims 13, 2, 3 of the US Patent No. 12,135,603 are similar in scope to claims 14-16 of the present application with only obvious wording variations.
9. Claim 17 is rejected under the judicially created doctrine of obviousness-type double patenting as being unpatentable over claims 15-17 in Patent No. 6,314,480 combinedly. Although the conflicting claims are not identical, they are not patentably distinct from each other because claims 15-17 of the US Patent No. are similar in scope to claim 17 of the present application with only obvious wording variations.
10. Claims 18-20 are rejected under the judicially created doctrine of obviousness-type double patenting as being unpatentable over claims 14, 6, 20 in Patent No. 6,314,480 respectively. Although the conflicting claims are not identical, they are not patentably distinct from each other because claims 14, 6, 20 of the US Patent No. 12,135,603 are similar in scope to claims 18-20 of the present application with only obvious wording variations.
Present Application
Pat No. 12,135,603
A non-transitory computer-readable medium comprising program code that is executable by one or more processors for causing the one or more processors to:
receive tracing information that attributes usage of a software service to a plurality of users of a distributed computing system;
determine, based on the tracing information, a portion of the usage to attribute to a user of the plurality of users;
determine an energy consumption amount associated with the software service; and determine an energy consumption estimate for the user based on the portion of the usage associated with the user and the energy consumption amount associated with the software service.
2. The non-transitory computer-readable medium of claim 1, further comprising program code that is executable by the one or more processors for causing the one or more processors to: access a predefined mapping that correlates a plurality of software services to a plurality of energy consumption amounts, each software service of the plurality of software services being correlated in the predefined mapping to a respective energy consumption amount of the plurality of energy consumption amounts; and determine the energy consumption amount associated with the software service using the predefined mapping.
3. The non-transitory computer-readable medium of claim 1, wherein the energy consumption amount corresponds to a particular operation among a plurality of operations that are executable by the software service, wherein the tracing information indicates that the particular operation was performed by the software service for the user, and further comprising program code that is executable by the one or more processors for causing the one or more processors to: access a predefined mapping that correlates the plurality of operations to a plurality of energy consumption amounts, each operation of the plurality of operations being correlated in the predefined mapping to a respective energy consumption amount of the plurality of energy consumption amounts; and determine the energy consumption amount associated with the operation using the predefined mapping.
4. The non-transitory computer-readable medium of claim 1, further comprising program code that is executable by the one or more processors for causing the one or more processors to: analyze the tracing information to select a plurality of trace entries that are associated with the software service and that correspond to a predesignated time window; determine a total number of trace entries in the plurality of trace entries; determine a number of trace entries that correspond to the user in the plurality of trace entries; and determine the portion of the usage to attribute to the user based on the number of trace entries corresponding to the user and the total number of trace entries.
5. The non-transitory computer-readable medium of claim 1, wherein the energy consumption amount is a total amount of energy consumed by the software service during a predefined time window, and further comprising program code that is executable by the one or more processors for causing the one or more processors to: determine the energy consumption estimate for the user by multiplying the portion of the usage associated with the user by the energy consumption amount.
6. The non-transitory computer-readable medium of claim 1, wherein the tracing information includes a plurality of tracing entries, each tracing entry of the plurality of tracing entries including a respective request identifier that uniquely identifies a request that triggered execution of the software service, and each tracing entry of the plurality of tracing entries including a respective user identifier that uniquely identifies a particular user associated with the request from among the plurality of users.
7. The non-transitory computer-readable medium of claim 1, further comprising program code that is executable by the one or more processors for causing the one or more processors to: determine that the energy consumption estimate for the user exceeds a predefined threshold; and based on determining that the energy consumption estimate for the user exceeds the predefined threshold, automatically adjust an account tier associated with the user to increase an energy consumption limit associated with the user.
8. The non-transitory computer-readable medium of claim 1, further comprising program code that is executable by the one or more processors for causing the one or more processors to: determine that the energy consumption estimate for the user exceeds a predefined threshold; and based on determining that the energy consumption estimate for the user exceeds the predefined threshold, transmit an alert notification to a recipient device.
9. The non-transitory computer-readable medium of claim 1, further comprising program code that is executable by the one or more processors for causing the one or more processors to: determine that the energy consumption estimate for the user exceeds a predefined threshold; and based on determining that the energy consumption estimate for the user exceeds the predefined threshold, automatically throttle an ability of the user to use the software service to limit energy consumption by the user.
10. The non-transitory computer-readable medium of claim 1, further comprising program code that is executable by the one or more processors for causing the one or more processors to: execute tracing software to track the usage of a plurality of software services and generate the tracing information, wherein the plurality of software services include the software service, and wherein the tracing information attributes the usage of the plurality of software services to the plurality of users; and generate the energy consumption estimate for the user by, for each respective software service of the plurality of software services: analyzing the tracing information to determine a respective portion of the usage of the respective software service to attribute to the user; determining a respective energy consumption amount associated with the respective software service; determining a respective portion of the respective energy consumption amount to attribute to the user, based on the respective portion of the usage attributed to the user; and incorporating the respective portion into the energy consumption estimate for the user.
11. A method comprising: receiving, by one or more processors, tracing information that attributes usage of a software service to a plurality of users of a distributed computing system;
determining, by the one or more processors and based on the tracing information, a portion of the usage to attribute to a user of the plurality of users; determining, by the one or more processors, an energy consumption amount associated with the software service; and determining, by the one or more processors, an energy consumption estimate for the user based on the portion of the usage associated with the user and the energy consumption amount associated with the software service.
12. The method of claim 11, further comprising: accessing a predefined mapping that correlates a plurality of software services to a plurality of energy consumption amounts, each software service of the plurality of software services being correlated in the predefined mapping to a respective energy consumption amount of the plurality of energy consumption amounts; and determining the energy consumption amount associated with the software service using the predefined mapping.
13. The method of claim 11, wherein the energy consumption amount corresponds to a particular operation among a plurality of operations that are executable by the software service, wherein the tracing information indicates that the particular operation was performed by the software service for the user, and further comprising: accessing a predefined mapping that correlates the plurality of operations to a plurality of energy consumption amounts, each operation of the plurality of operations being correlated in the predefined mapping to a respective energy consumption amount of the plurality of energy consumption amounts; and determining the energy consumption amount associated with the operation using the predefined mapping.
14. The method of claim 11, further comprising: analyzing the tracing information to select a plurality of trace entries that are associated with the software service and that correspond to a predesignated time window; determining a total number of trace entries in the plurality of trace entries; determining a number of trace entries that correspond to the user in the plurality of trace entries; and determining the portion of the usage to attribute to the user based on the number of trace entries corresponding to the user and the total number of trace entries.
15. The method of claim 11, wherein the energy consumption amount is a total amount of energy consumed by the software service during a predefined time window, and further comprising: determining the energy consumption estimate for the user by multiplying the portion of the usage associated with the user by the energy consumption amount.
16. The method of claim 11, wherein the tracing information includes a plurality of tracing entries, each tracing entry of the plurality of tracing entries including a respective request identifier that uniquely identifies a request that triggered execution of the software service, and each tracing entry of the plurality of tracing entries including a respective user identifier that uniquely identifies a particular user associated with the request from among the plurality of users.
17. The method of claim 11, further comprising: determining that the energy consumption estimate for the user exceeds a predefined threshold; and based on determining that the energy consumption estimate for the user exceeds the predefined threshold: automatically adjusting an account tier associated with the user to increase an energy consumption limit associated with the user; automatically transmitting an alert notification to a recipient device; or automatically throttling an ability of the user to use the software service to limit energy consumption by the user.
18. The method of claim 11, further comprising: executing tracing software to track the usage of a plurality of software services and generate the tracing information, wherein the plurality of software services include the software service, and wherein the tracing information attributes the usage of the plurality of software services to the plurality of users; and generating the energy consumption estimate for the user by, for each respective software service of the plurality of software services: analyzing the tracing information to determine a respective portion of the usage of the respective software service to attribute to the user; determining a respective energy consumption amount associated with the respective software service; determining a respective portion of the respective energy consumption amount to attribute to the user, based on the respective portion of the usage attributed to the user; and incorporating the respective portion into the energy consumption estimate for the user.
19. The method of claim 18, wherein the tracing software is separate from the software service.
20. A system comprising: one or more processors; and a memory that includes instructions executable by the one or more processors for causing the one or more processors to: receive tracing information that attributes usage of a software service to a plurality of users of a distributed computing system; determine, based on the tracing information, a portion of the usage to attribute to a user of the plurality of users; determine an energy consumption amount associated with the software service; and determine an energy consumption estimate for the user based on the portion of the usage associated with the user and the energy consumption amount associated with the software service.
1. A non-transitory computer-readable medium comprising program code that is executable by one or more processors for causing the one or more processors to:
execute tracing software configured to track usage of a software service in a distributed computing system and generate tracing information that attributes the usage of the software service to a plurality of users of the distributed computing system;
analyze the tracing information to determine a portion of the usage to attribute to a user of the plurality of users;
determine an energy consumption estimate for the user based on the portion of the usage associated with the user and an energy consumption amount associated with the software service;
Claim 10
10. The non-transitory computer-readable medium of claim 1, wherein the energy consumption amount corresponds to a particular operation among a plurality of operations that are executable by the software service, wherein the tracing information indicates that the particular operation was performed by the software service for the user, and further comprising program code that is executable by the one or more processors for causing the one or more processors to: access a predefined mapping that correlates the plurality of operations to a plurality of energy consumption amounts, each operation of the plurality of operations being correlated in the predefined mapping to a respective energy consumption amount of the plurality of energy consumption amounts; and determine the energy consumption amount associated with the operation using the predefined mapping.
11. The non-transitory computer-readable medium of claim 1, further comprising program code that is executable by the one or more processors for causing the one or more processors to: analyze the tracing information to select a plurality of trace entries that are associated with the software service and that correspond to a predesignated time window; determine a total number of trace entries in the plurality of trace entries; determine a number of trace entries that correspond to the user in the plurality of trace entries; and determine the portion of the usage to attribute to the user based on the number of trace entries corresponding to the user and the total number of trace entries.
2. The non-transitory computer-readable medium of claim 1, wherein the energy consumption amount is a total amount of energy consumed by the software service during a predefined time window, and further comprising program code that is executable by the one or more processors for causing the one or more processors to: determine the energy consumption estimate for the user by multiplying the portion of the usage associated with the user by the energy consumption amount.
3. The non-transitory computer-readable medium of claim 1, wherein the tracing information includes a plurality of tracing entries, each tracing entry of the plurality of tracing entries including a respective request identifier that uniquely identifies a request that triggered execution of the software service, and each tracing entry of the plurality of tracing entries including a respective user identifier that uniquely identifies a particular user associated with the request from among the plurality of users.
7. The non-transitory computer-readable medium of claim 1, further comprising program code that is executable by the one or more processors for causing the one or more processors to: determine that the energy consumption estimate for the user exceeds a predefined threshold; and based on determining that the energy consumption estimate for the user exceeds the predefined threshold, automatically adjust an account tier associated with the user to increase an energy consumption limit associated with the user.
8. The non-transitory computer-readable medium of claim 1, further comprising program code that is executable by the one or more processors for causing the one or more processors to: determine that the energy consumption estimate for the user exceeds a predefined threshold; and based on determining that the energy consumption estimate for the user exceeds the predefined threshold, transmit an alert notification to a recipient device.
9. The non-transitory computer-readable medium of claim 1, further comprising program code that is executable by the one or more processors for causing the one or more processors to: determine that the energy consumption estimate for the user exceeds a predefined threshold; and based on determining that the energy consumption estimate for the user exceeds the predefined threshold, automatically throttle an ability of the user to use the software service to limit energy consumption by the user.
5. The non-transitory computer-readable medium of claim 1, further comprising program code that is executable by the one or more processors for causing the one or more processors to: execute the tracing software to track the usage of a plurality of software services and generate the tracing information, wherein the plurality of software services include the software service, and wherein the tracing information attributes the usage of the plurality of software services to the plurality of users; and generate the energy consumption estimate for the user by, for each respective software service of the plurality of software services: analyzing the tracing information to determine a respective portion of the usage of the respective software service to attribute to the user; determining a respective energy consumption amount associated with the respective software service; determining a respective portion of the respective energy consumption amount to attribute to the user, based on the respective portion of the usage attributed to the user; and incorporating the respective portion into the energy consumption estimate for the user.
12. A method comprising: executing, by one or more processors, tracing software configured to track usage of a software service in a distributed computing system and generate tracing information that attributes the usage of the software service to a plurality of users of the distributed computing system;
analyzing, by the one or more processors, the tracing information to determine a portion of the usage to attribute to a user of the plurality of users;
determining, by the one or more processors, an energy consumption estimate for the user based on the portion of the usage associated with the user and an energy consumption amount associated with the software service; and
Claim 18
18. The method of claim 12, wherein the energy consumption amount corresponds to a particular operation among a plurality of operations that are executable by the software service, wherein the tracing information indicates that the particular operation was performed by the software service for the user, and further comprising: accessing a predefined mapping that correlates the plurality of operations to a plurality of energy consumption amounts, each operation of the plurality of operations being correlated in the predefined mapping to a respective energy consumption amount of the plurality of energy consumption amounts; and determining the energy consumption amount associated with the operation using the predefined mapping.
13. The method of claim 12, further comprising: for each respective user of the plurality of users: analyzing the tracing information to determine a respective portion of the usage of the software service to attribute to the respective user; and determining a respective energy consumption estimate for the respective user, the respective energy consumption estimate being determined based on the respective portion of the usage attributed to the respective user and the energy consumption amount associated with the software service; and generating the graphical user interface to include the respective energy consumption estimate associated with each respective user of the plurality of users.
Claim 2
Claim 3
Claims 15-17:
15. The method of claim 12, further comprising: determining that the energy consumption estimate for the user exceeds a predefined threshold; and based on determining that the energy consumption estimate for the user exceeds the predefined threshold, automatically adjusting an account tier associated with the user to increase an energy consumption limit associated with the user.
16. The method of claim 12, further comprising: determining that the energy consumption estimate for the user exceeds a predefined threshold; and based on determining that the energy consumption estimate for the user exceeds the predefined threshold, transmitting an alert notification to a recipient device.
17. The method of claim 12, further comprising: determining that the energy consumption estimate for the user exceeds a predefined threshold; and based on determining that the energy consumption estimate for the user exceeds the predefined threshold, automatically throttling an ability of the user to use the software service to limit energy consumption by the user.
14. The method of claim 12, further comprising: executing the tracing software to track the usage of a plurality of software services and generate the tracing information, wherein the plurality of software services include the software service, and wherein the tracing information attributes the usage of the plurality of software services to the plurality of users; and generating the energy consumption estimate for the user by, for each respective software service of the plurality of software services: analyzing the tracing information to determine a respective portion of the usage of the respective software service to attribute to the user; determining a respective energy consumption amount associated with the respective software service; determining a respective portion of the respective energy consumption amount to attribute to the user, based on the respective portion of the usage attributed to the user; and incorporating the respective portion into the energy consumption estimate for the user.
Claim 6
20. A system comprising: one or more processors; and a memory that includes instructions executable by the one or more processors for causing the one or more processors to: execute tracing software configured to track usage of a software service in a distributed computing system and generate tracing information that attributes the usage of the software service to a plurality of users of the distributed computing system; analyze the tracing information to determine a portion of the usage to attribute to a user of the plurality of users; determine an energy consumption estimate for the user based on the portion of the usage associated with the user and an energy consumption amount associated with the software service; and generate a graphical user interface indicating the energy consumption estimate for the user.
In re Karlson, 136 USPQ 189 (ccPA 1963).
Claim Rejections - 35 USC § 102
The following is a quotation of the appropriate paragraphs of 35 U.S.C. 102 that form the basis for the rejections under this section made in this Office action:
A person shall be entitled to a patent unless –
(a)(1) the claimed invention was patented, described in a printed publication, or in public use, on sale or otherwise available to the public before the effective filing date of the claimed invention.
(a)(2) the claimed invention was described in a patent issued under section 151, or in an application for patent published or deemed published under section 122(b), in which the patent or application, as the case may be, names another inventor and was effectively filed before the effective filing date of the claimed invention.
11. Claims 1-20 are rejected under 35 U.S.C. § 102(a)(1) as being anticipated by Mogul et al. (US Pub No. 2006/0069786).
In regard to claim 1, Mogul et al. disclose a non-transitory computer-readable medium (see ¶ 9, claim 26) comprising program code that is executable by one or more processors for causing the one or more processors to:
receive tracing information that attributes usage of a software service to a plurality of users of a distributed computing system (as shown in Fig. 1, which is reproduced below for ease of reference and convenience, Mogul discloses logic for ascribing resource usage 103 is implemented to receive one or more causal paths, such as causal path 1 (101a) and causal path 2 (101b) in FIG. 1. Logic 103 further receives one or more resource usage traces, such as resource A usage trace 102a and resource B usage trace 102b in FIG. 1. For instance, resource A may be energy consumed by a given node, and resource B may be CPU usage of a given node. See ¶ 23);
PNG
media_image1.png
283
566
media_image1.png
Greyscale
determine, based on the tracing information, a portion of the usage to attribute to a user of the plurality of users; determine an energy consumption amount associated with the software service (in Mogul, various quantified resources may be measured and allocated […]. Logic 103 processes the received causal paths and resource usage traces to ascribe resource usage of a node to the causal paths 101 that include such node, thus generating output 104. […], logic 103 may be implemented as software code, hardware, firmware, middleware, or any combination thereof. Logic 103 implements certain algorithms described further herein to correlate resource consumption with causality within a distributed computing environment. See ¶ 23-25, 38-39); and determine an energy consumption estimate for the user based on the portion of the usage associated with the user and the energy consumption amount associated with the software service (in Mogul, […] a resource usage trace for consumption (or "usage") of a single resource by Node B (e.g., energy consumption, etc.), a plurality of different resource usage traces for a given node may be received by logic 103, and usage each of the resources may be allocated to causal path patterns […]. Logic 103 allocates the resource usage of Node B (as reflected by trace 302) to the various different causal path patterns that include Node B, thus generating output 304. […], logic 103 allocates a portion of the resource usage of Node B to the causal path pattern of causal paths 1 (301a) and 3 (305c) and a portion of the resource usage of Node B to the causal path pattern of causal path 2 (305b). While two different causal path patterns that include Node B are shown in this example for simplicity, any number of different causal path patterns that include a given node of interest may exist. See ¶ 39-41).
In regard to claim 2-3, 12-13, Mogul et al. disclose wherein the energy consumption amount corresponds to a particular operation among a plurality of operations that are executable by the software service, wherein the tracing information indicates that the particular operation was performed by the software service for the user, and further comprising program code that is executable by the one or more processors for causing the one or more processors to: access a predefined mapping that correlates the plurality of operations to a plurality of energy consumption amounts, each operation of the plurality of operations being correlated in the predefined mapping to a respective energy consumption amount of the plurality of energy consumption amounts (in Mogul, [d]epending on what is deemed more useful to the user, the results may be further aggregated so that for all causal paths that have the same causal path pattern, for each interval in said pattern, the resource allocations for the corresponding interval in each of these causal paths can be summed, averaged, used to create a histogram, etc. See ¶ 57); and determine the energy consumption amount associated with the operation using the predefined mapping (in Mogul, [d]epending on what is deemed more useful to the user, the results may be further aggregated so that for all causal paths that have the same causal path pattern, for each interval in said pattern, the resource allocations for the corresponding interval in each of these causal paths can be summed, averaged, used to create a histogram, etc. See ¶ 57).
In regard to claims 4, 14, Mogul et al. disclose further program code that is executable by the one or more processors for causing the one or more processors to: analyze the tracing information to select a plurality of trace entries that are associated with the software service and that correspond to a predesignated time window (in Mogul, logic 103 identifies the points in the intermediate traces for the given node where there are changes in the number of causal paths active at such node. This creates a sequence of sub-intervals. For instance, logic 103 may iterate through the intervals described by the intermediate traces and create a sequence of sub-intervals that reflect the points in time when there are changes in the number of causal path instances simultaneously active at any given node. Thus, this determines for each point in time how many causal path instances are simultaneously active at a given node, and which causal path patterns to which these instances correspond. See ¶ 50-51); determine a total number of trace entries in the plurality of trace entries; determine a number of trace entries that correspond to the user in the plurality of trace entries (in Mogul, logic 103 identifies the points in the intermediate traces for the given node where there are changes in the number of causal paths active at such node. This creates a sequence of sub-intervals. For instance, logic 103 may iterate through the intervals described by the intermediate traces and create a sequence of sub-intervals that reflect the points in time when there are changes in the number of causal path instances simultaneously active at any given node. Thus, this determines for each point in time how many causal path instances are simultaneously active at a given node, and which causal path patterns to which these instances correspond. See ¶ 50-51); and determine the portion of the usage to attribute to the user based on the number of trace entries corresponding to the user and the total number of trace entries (in Mogul, logic 103 identifies the points in the intermediate traces for the given node where there are changes in the number of causal paths active at such node. This creates a sequence of sub-intervals. For instance, logic 103 may iterate through the intervals described by the intermediate traces and create a sequence of sub-intervals that reflect the points in time when there are changes in the number of causal path instances simultaneously active at any given node. Thus, this determines for each point in time how many causal path instances are simultaneously active at a given node, and which causal path patterns to which these instances correspond. See ¶ 50-51).
In regard to claims 5, 15, Mogul et al. disclose wherein the energy consumption amount is a total amount of energy consumed by the software service during a predefined time window, and further comprising program code that is executable by the one or more processors for causing the one or more processors to: determine the energy consumption estimate for the user by multiplying the portion of the usage associated with the user by the energy consumption amount (in Mogul, the resource usage is allocated among all active causal paths. […] the active causal paths may have the same or different causal path patterns. Irrespective of their respective patterns, if more than one causal path is active at a given point in time, logic 103 ascribes a portion of the resource usage at the given point in time to each of the active causal paths. […] performing this allocation among all active causal paths is to assume that resource consumption is additive. Therefore, when N causal paths are active at a node, each is allocated 1/N of the resource trace value. Another type of allocation that may be used in this instance is to allocate the entire value to each of the N active causal path instances at the node. See ¶ 55-56).
In regard to claims 6, 16, Mogul et al. disclose wherein the tracing information includes a plurality of tracing entries, each tracing entry of the plurality of tracing entries including a respective request identifier that uniquely identifies a request that triggered execution of the software service, and each tracing entry of the plurality of tracing entries including a respective user identifier that uniquely identifies a particular user associated with the request from among the plurality of users (in Mogul, logic 103 analyzes the identified causal paths […] to determine intervals in which the at least one node under analysis (e.g., Node B) was active. Logic 103 determines one or more causal paths in which a node under analysis is active for a time period of interest. […], causal paths 1 and 2 are identified as causal paths in which Node B is active. Such causal paths occur within the time period T=0 and T=7, and thus if this is the time period that is of interest and Node B is a node that is under analysis, such causal paths 1 and 2 will be determined […] as causal paths to use in the analysis. Such determined causal paths may all have the same causal path pattern or may have different causal path patterns. See ¶ 69-73).
In regard to claim 7, Mogul et al. disclose further program code that is executable by the one or more processors for causing the one or more processors to: determine that the energy consumption estimate for the user exceeds a predefined threshold (in Mogule, […] N causal paths are active at a node, each is allocated 1/N of the resource trace value. Another type of allocation that may be used in this instance is to allocate the entire value to each of the N active causal path instances at the node (this provides a conservative estimate or upper threshold of the maximum consumption of each active causal path). See ¶ 55, 57); and based on determining that the energy consumption estimate for the user exceeds the predefined threshold, automatically adjust an account tier associated with the user to increase an energy consumption limit associated with the user (in Mogul, logic 103 may use information from the trace about how the resource usage at a node varies as a function of the number of active causal path instances, and then normalize the per-path allocation based on that result. Thus, a defined function may be implemented for use by logic 103 in allocating resource usage among a plurality of causal paths in which a node is simultaneously active. See ¶ 55).
In regard to claim 8, Mogul et al. disclose further program code that is executable by the one or more processors for causing the one or more processors to: determine that the energy consumption estimate for the user exceeds a predefined threshold (in Mogule, […] N causal paths are active at a node, each is allocated 1/N of the resource trace value. Another type of allocation that may be used in this instance is to allocate the entire value to each of the N active causal path instances at the node (this provides a conservative estimate or upper threshold of the maximum consumption of each active causal path). See ¶ 55, 57); and based on determining that the energy consumption estimate for the user exceeds the predefined threshold, transmit an alert notification to a recipient device (in Mogul, [d]epending on what is deemed more useful to the user, the results may be further aggregated so that for all causal paths that have the same causal path pattern, for each interval in said pattern, the resource allocations for the corresponding interval in each of these causal paths can be summed, averaged, used to create a histogram, etc. See ¶ 57).
In regard to claim 9, Mogul et al. disclose further comprising program code that is executable by the one or more processors for causing the one or more processors to: determine that the energy consumption estimate for the user exceeds a predefined threshold (in Mogule, […] N causal paths are active at a node, each is allocated 1/N of the resource trace value. Another type of allocation that may be used in this instance is to allocate the entire value to each of the N active causal path instances at the node (this provides a conservative estimate or upper threshold of the maximum consumption of each active causal path). See ¶ 55, 57); and based on determining that the energy consumption estimate for the user exceeds the predefined threshold, automatically throttle an ability of the user to use the software service to limit energy consumption by the user (in Mogul, [d]epending on what is deemed more useful to the user, the results may be further aggregated so that for all causal paths that have the same causal path pattern, for each interval in said pattern, the resource allocations for the corresponding interval in each of these causal paths can be summed, averaged, used to create a histogram, etc. See ¶ 57).
In regard to claims 10, 18, Mogul et al. disclose further program code that is executable by the one or more processors for causing the one or more processors to: execute the tracing software to track the usage of a plurality of software services and generate the tracing information, wherein the plurality of software services include the software service, and wherein the tracing information attributes the usage of the plurality of software services to the plurality of users (in Mogul, [t]echniques are also known for measuring energy consumption by software components, such as the technique described in "Energy-driven Statistical Profiling: Detecting Software Hotspots" by Fay Chang, Keith Farkas, and Parthasarathy Ranganathan, Lecture Notes in Computer Science, special issue on power management, 2002. Thus, assuming further that Node B is a software process, its energy consumption may likewise be obtained. See ¶ 53, 76); and generate the energy consumption estimate for the user by, for each respective software service of the plurality of software services: analyzing the tracing information to determine a respective portion of the usage of the respective software service to attribute to the user (in Mogul, […] resource usage trace may be received by logic 103 at a different point of the flow (e.g., immediately before, immediately after, or concurrent with receipt of the causal paths in block 41). See ¶ 52); determining a respective energy consumption amount associated with the respective software service (in Mogul, various quantified resources may be measured and allocated […]. Logic 103 processes the received causal paths and resource usage traces to ascribe resource usage of a node to the causal paths 101 that include such node, thus generating output 104. […], logic 103 may be implemented as software code, hardware, firmware, middleware, or any combination thereof. Logic 103 implements certain algorithms described further herein to correlate resource consumption with causality within a distributed computing environment. See ¶ 23-25, 38-39); determining a respective portion of the respective energy consumption amount to attribute to the user, based on the respective portion of the usage attributed to the user (in Mogul, a resource trace representing some other time-varying quantifiable resource, such as CPU usage, network bandwidth, network packet rates, cache misses, address translation buffer misses, page faults, memory allocations, lock contention, etc. […] a "quantifiable resource" can be any resource whose consumption by a given node can be measured, inferred, estimated, or otherwise quantified. See ¶ 52, 55); and incorporating the respective portion into the energy consumption estimate for the user (in Mogul, a resource trace representing some other time-varying quantifiable resource, such as CPU usage, network bandwidth, network packet rates, cache misses, address translation buffer misses, page faults, memory allocations, lock contention, etc. […] a "quantifiable resource" can be any resource whose consumption by a given node can be measured, inferred, estimated, or otherwise quantified. See ¶ 52, 55).
In regard to claim 11, Mogul et al. disclose a method comprising: receiving, by one or more processors, tracing software configured to track usage of a software service in a distributed computing system and generate tracing information that attributes the usage of the software service to a plurality of users of the distributed computing system (as shown in Fig. 1, which is reproduced below for ease of reference and convenience, Mogul discloses logic for ascribing resource usage 103 is implemented to receive one or more causal paths, such as causal path 1 (101a) and causal path 2 (101b) in FIG. 1. Logic 103 further receives one or more resource usage traces, such as resource A usage trace 102a and resource B usage trace 102b in FIG. 1. For instance, resource A may be energy consumed by a given node, and resource B may be CPU usage of a given node. See ¶ 23);
PNG
media_image2.png
298
596
media_image2.png
Greyscale
determining, by the one or more processors, the tracing information to determine a portion of the usage to attribute to a user of the plurality of users (in Mogul, various quantified resources may be measured and allocated […]. Logic 103 processes the received causal paths and resource usage traces to ascribe resource usage of a node to the causal paths 101 that include such node, thus generating output 104. […], logic 103 may be implemented as software code, hardware, firmware, middleware, or any combination thereof. Logic 103 implements certain algorithms described further herein to correlate resource consumption with causality within a distributed computing environment. See ¶ 23-25, 38-39); determining, by the one or more processors, an energy consumption estimate for the user based on the portion of the usage associated with the user and an energy consumption amount associated with the software service (in Mogul, […] a resource usage trace for consumption (or "usage") of a single resource by Node B (e.g., energy consumption, etc.), a plurality of different resource usage traces for a given node may be received by logic 103, and usage each of the resources may be allocated to causal path patterns […]. Logic 103 allocates the resource usage of Node B (as reflected by trace 302) to the various different causal path patterns that include Node B, thus generating output 304. […], logic 103 allocates a portion of the resource usage of Node B to the causal path pattern of causal paths 1 (301a) and 3 (305c) and a portion of the resource usage of Node B to the causal path pattern of causal path 2 (305b). While two different causal path patterns that include Node B are shown in this example for simplicity, any number of different causal path patterns that include a given node of interest may exist. See ¶ 39-41).
In regard to claim 17, Mogul et al. further disclose: determine that the energy consumption estimate for the user exceeds a predefined threshold (in Mogule, […] N causal paths are active at a node, each is allocated 1/N of the resource trace value. Another type of allocation that may be used in this instance is to allocate the entire value to each of the N active causal path instances at the node (this provides a conservative estimate or upper threshold of the maximum consumption of each active causal path). See ¶ 55, 57); and based on determining that the energy consumption estimate for the user exceeds the predefined threshold, automatically adjust an account tier associated with the user to increase an energy consumption limit associated with the user (in Mogul, logic 103 may use information from the trace about how the resource usage at a node varies as a function of the number of active causal path instances, and then normalize the per-path allocation based on that result. Thus, a defined function may be implemented for use by logic 103 in allocating resource usage among a plurality of causal paths in which a node is simultaneously active. See ¶ 55); and based on determining that the energy consumption estimate for the user exceeds the predefined threshold, transmit an alert notification to a recipient device (in Mogul, [d]epending on what is deemed more useful to the user, the results may be further aggregated so that for all causal paths that have the same causal path pattern, for each interval in said pattern, the resource allocations for the corresponding interval in each of these causal paths can be summed, averaged, used to create a histogram, etc. See ¶ 57).
In regard to claim 19, Mogul et al. disclose wherein the tracing software is separate from the software service (in Mogule, resource consumption ascribing logic 103 described above may be implemented via computer-executable software code. See ¶ 76).
In regard to claim 20, Mogul et al. disclose a system comprising: one or more processors; and a memory that includes instructions executable by the one or more processors for causing the one or more processors to: receive tracing software configured to track usage of a software service in a distributed computing system and generate tracing information that attributes the usage of the software service to a plurality of users of the distributed computing system (as shown in Fig. 1, which is reproduced below for ease of reference and convenience, Mogul discloses logic for ascribing resource usage 103 is implemented to receive one or more causal paths, such as causal path 1 (101a) and causal path 2 (101b) in FIG. 1. Logic 103 further receives one or more resource usage traces, such as resource A usage trace 102a and resource B usage trace 102b in FIG. 1. For instance, resource A may be energy consumed by a given node, and resource B may be CPU usage of a given node. See ¶ 23);
PNG
media_image2.png
298
596
media_image2.png
Greyscale
determine the tracing information to determine a portion of the usage to attribute to a user of the plurality of users (in Mogul, various quantified resources may be measured and allocated […]. Logic 103 processes the received causal paths and resource usage traces to ascribe resource usage of a node to the causal paths 101 that include such node, thus generating output 104. […], logic 103 may be implemented as software code, hardware, firmware, middleware, or any combination thereof. Logic 103 implements certain algorithms described further herein to correlate resource consumption with causality within a distributed computing environment. See ¶ 23-25, 38-39); determine an energy consumption estimate for the user based on the portion of the usage associated with the user and an energy consumption amount associated with the software service (in Mogul, […] a resource usage trace for consumption (or "usage") of a single resource by Node B (e.g., energy consumption, etc.), a plurality of different resource usage traces for a given node may be received by logic 103, and usage each of the resources may be allocated to causal path patterns […]. Logic 103 allocates the resource usage of Node B (as reflected by trace 302) to the various different causal path patterns that include Node B, thus generating output 304. […], logic 103 allocates a portion of the resource usage of Node B to the causal path pattern of causal paths 1 (301a) and 3 (305c) and a portion of the resource usage of Node B to the causal path pattern of causal path 2 (305b). While two different causal path patterns that include Node B are shown in this example for simplicity, any number of different causal path patterns that include a given node of interest may exist. See ¶ 39-41).
Examiner's note:
Examiner has cited particular columns and line numbers in the references applied to the claims above for the convenience of the Applicant. Although the specified citations are representative of the teachings of the art and are applied to specific limitations within the individual claim, other passages and figures may apply as well. It is respectfully requested from the Applicant in preparing responses, to fully consider the references in entirety as potentially teaching all or part of the claimed invention, as well as the context of the passages as taught by the prior art or disclosed by the Examiner.
Conclusion
12. All claims are rejected.
13. Any inquiry concerning this communication or earlier communications from the examiner should be directed to examiner Raymond Phan, whose telephone number is (571) 272-3630. The examiner can normally be reached on Monday-Friday from 6:30AM- 3:00PM. The Group Fax No. (571) 273-8300.
Communications via Internet e-mail regarding this application, other than those under 35 U.S.C. 132 or which otherwise require a signature, may be used by the applicant and should be addressed to [raymond.phan@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, Andrew Jung can be reached at (571) 270-3779. The fax phone number for the organization where this application or proceeding is assigned is 571-273-8300.
All Internet e-mail communications will be made of record in the application file. PTO employees do not engage in Internet communications where there exists a possibility that sensitive information could be identified or exchanged unless the record includes a properly signed express waiver of the confidentiality requirements of 35 U.S.C. 122. This is more clearly set forth in the Interim Internet Usage Policy published in the Official Gazette of the Patent and Trademark on February 25, 1997 at 1195 OG 89.
Information regarding the status of an application may be obtained from the Patent Application Information Retrieval (PAIR) system. Status information for published applications may be obtained from either Private PAIR or Public PAIR. Status information for unpublished applications is available through Private PAIR only. For more information about the PAIR system, see hop://pair-direct.uspto.gov. Should you have questions on access to the Private PAIR system, contact the Electronic Business Center (EBC) at 866-217-9197 (toll-free).
Any inquiry of a general nature or relating to the status of this application should be directed to the TC 2100 central telephone number is (571) 272-2100.
/RAYMOND N PHAN/
Primary Examiner, Art Unit 2175