US20160224396A1 - Associating energy consumption with a virtual machine - Google Patents

Associating energy consumption with a virtual machine Download PDF

Info

Publication number
US20160224396A1
US20160224396A1 US15/095,939 US201615095939A US2016224396A1 US 20160224396 A1 US20160224396 A1 US 20160224396A1 US 201615095939 A US201615095939 A US 201615095939A US 2016224396 A1 US2016224396 A1 US 2016224396A1
Authority
US
United States
Prior art keywords
chiplet
energy consumption
task
memory
processor
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US15/095,939
Inventor
Bishop Brock
Tilman Gloekler
Charles R. Lefurgy
Karthick Rajamani
Gregory S. Still
Malcolm S. Allen-Ware
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to US15/095,939 priority Critical patent/US20160224396A1/en
Assigned to INTERNATIONAL BUSINESS MACHINES CORPORATION reassignment INTERNATIONAL BUSINESS MACHINES CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: Lefurgy, Charles R., GLOEKLER, TILMAN, ALLEN-WARE, MALCOLM S., BROCK, BISHOP, RAJAMANI, KARTHICK, STILL, GREGORY S.
Publication of US20160224396A1 publication Critical patent/US20160224396A1/en
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5094Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/301Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is a virtual computing platform, e.g. logically partitioned systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3013Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is an embedded system, i.e. a combination of hardware and software dedicated to perform a certain function in mobile devices, printers, automotive or aircraft systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3017Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is implementing multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3051Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3058Monitoring arrangements for monitoring environmental properties or parameters of the computing system or of the computing system component, e.g. monitoring of power, currents, temperature, humidity, position, vibrations
    • G06F11/3062Monitoring arrangements for monitoring environmental properties or parameters of the computing system or of the computing system component, e.g. monitoring of power, currents, temperature, humidity, position, vibrations where the monitored property is the power consumption
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3476Data logging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45591Monitoring or debugging support
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/815Virtual
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/86Event-based monitoring
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Definitions

  • Embodiments of the inventive subject matter generally relate to the field of computers, and, more particularly, to associating energy consumption of a virtual machine or other task running on a computer.
  • a significant portion of the operating cost for large data centers and cloud computing environments is related to the energy costs associated with the data center or cloud servers.
  • virtual machines may be assigned to run tasks on behalf of a user.
  • the virtual machines are typically assigned to run on one or more cores of a multicore system.
  • a data center or cloud operator may desire to bill a user for the energy consumed by a virtual machine when running on a processor core.
  • previous systems have used various models to estimate power consumption of a virtual machine.
  • such models typically use performance based values that do not necessarily correlate well with energy consumption.
  • Various embodiments are disclosed in which energy consumption for a task such as a virtual machine is determined.
  • Various events cause a trace record to be written to a trace buffer for a processor.
  • An identifier associated with a task using a processor core of the processor is read.
  • one or more values associated with an energy consumption of the processor core are read.
  • the one or more values associated with the energy consumption of the processor core and the identifier are written to the trace buffer memory.
  • FIG. 1 depicts a system for associating energy consumption with a task according to embodiments.
  • FIG. 2 depicts a chiplet according to embodiments.
  • FIG. 3 depicts a trace buffer record used in some embodiments
  • FIG. 4 is a flowchart illustrating a method for associated energy consumption with a virtual machine.
  • FIG. 5 is a flowchart illustrating a method for determining an energy consumption for a task such as a virtual machine.
  • FIG. 6 is a flowchart illustrating a method for adjusting an energy consumption value according to a scaling factor.
  • the embodiments provide a means for associating energy consumption of processor cores with tasks running on the processor cores, for example virtual machines.
  • Various sensor points detect or measure activity associated with energy consumption of processor cores that execute instructions and access memory on behalf of virtual machines running on a system.
  • An identifier for a virtual machine running on a processor core is provided to the core.
  • a variety of events may trigger a trace buffer record to be written to a memory, where the trace buffer includes data associated with the energy consumption of the core and the virtual machine that was running on the core at the time the trace buffer record was written.
  • the records in the trace buffer can be aggregated and analyzed to determine energy consumption associated with the virtual machines running on the system.
  • FIG. 1 depicts a system 100 for associating energy consumption with a task according to embodiments.
  • system 100 includes processor 102 , memory 130 , and hypervisor 140 and may optionally include energy management unit 150 .
  • Processor 102 is a multicore processor where the processor cores are provided in chiplets 104 . Although three chiplets (e.g., chiplets 104 A, 104 B and 104 C) are illustrated in FIG. 1 , those of skill in the art having the benefit of the disclosure will appreciate that a processor 102 may have more or fewer chiplets 104 . In addition to chiplets 104 , processor 102 includes trace memory 110 and power management unit 120 .
  • a chiplet 104 includes a processor core, memory (e.g., L2 and L3 cache) and supporting logic units for the processor core.
  • Chiplet 104 also includes a power proxy unit 106 (“power proxy 106 ”) and task identification (ID) register 108 .
  • Task ID register 108 is a special purpose register that stores an identifier for a task executing on the processor core of chiplet 104 .
  • Power proxy 106 collects and generates data associated with energy consumption of the processor core of chiplet 104 . Certain events such as timer expiration, voltage changes etc. cause power proxy 106 to write a trace buffer record 114 to a chiplet queue 112 associated with the chiplet in trace memory 110 of processor 102 .
  • Trace memory 110 contains a chiplet queue 112 for each chiplet on processor 102 .
  • Trace buffer record 114 includes various data elements related to energy consumption associated with the chiplet. Further details on the data elements of a trace buffer record 114 are provided below with reference to FIG. 3 .
  • chiplet queue 112 is a circular queue configured to store eight trace buffer records 114 .
  • the number of trace buffer records 114 that are maintained in a chiplet queue 112 may be a function of the size of trace memory 110 and the number of chiplets on processor 102 . It is desirable that the number of trace buffer records be large enough to avoid data being overwritten before it is processed by power management unit 120 .
  • Trace memory 110 may be part of processor 102 as illustrated in FIG. 1 . Those of skill in the art having the benefit of the disclosure will appreciate that trace memory 110 may be located on other components accessible to processor 102 .
  • Power management unit 120 periodically reads the trace records 114 from chiplet queues 112 and processes the data such that data from trace records 114 that are associated with the same task ID are aggregated together. In some embodiments, power management unit reads and processes trace records every 32 milliseconds. It is desirable to choose an interval that avoids data being overwritten in a trace record in queue 112 before power management unit 120 can process the trace record. As trace records are processed, power management unit increments a queue pointer for the queue to point to the next trace record. Power management unit 120 then adds the data aggregated by task ID to an energy array 132 in a memory 130 accessible by hypervisor 140 . Energy array 132 maintains energy consumption data for tasks and in some embodiments is indexed according to the task identifier.
  • energy array 132 may be indexed by a task ID comprising a virtual machine identifier.
  • Power management unit 120 accumulates energy consumption values by adding currently processed energy consumption values for tasks to values already stored in energy array 132 , using the task identifier as an index into the energy array.
  • Hypervisor 140 manages a virtualized operating environment and provides virtualized resources (e.g., virtualized hardware resources) for system 100 .
  • Hypervisor 140 manages virtual machines (also referred to as partitions) executing on various computers of system 100 .
  • a virtual machine runs an operating system and applications within the virtual machine. The operating system and applications running on one virtual machine may be completely different from the operating system and applications running on other virtual machines. For example, one virtual machine may be running an accounting system on the AIX operating system while another virtual machine may run file server applications on a Linux operating system. Alternatively, a virtual machine may run the same operating system and applications as another virtual machine and serve as a backup in case of a failure or overload in the other virtual machine. From the point of view of a virtual machine, the virtual machine appears to be an independent computer that controls the underlying hardware when in reality, each virtual machine is sharing hardware resource with other virtual machines.
  • hypervisor 140 when hypervisor 140 schedules a virtual machine to run on a processor core, hypervisor 140 writes the virtual machine identifier associated with the virtual machine to task ID register 108 of the chiplet 104 for the processor core that is to execute the virtual machine.
  • Power proxy 106 reads the virtual machine identifier from task ID register 108 and stores the virtual machine identifier in trace buffer records 114 as energy consumption values for the chiplet 104 are written to the chiplet queue 112 in trace memory 110 .
  • power management unit 120 is an on-chip controller that is provided on processor 102 .
  • power management unit 120 may be separate from processor 102 .
  • the functions provided by power management unit 120 related to processing trace records 114 in trace memory 110 may be performed by hypervisor 140 .
  • hypervisor 140 accesses trace memory 110 directly to process the records.
  • Energy management unit 150 provides energy management functions across a number of computing systems. For example, energy management unit 150 may provide energy management functions for a data center or for computing systems that support a cloud computing environment. An example of an energy management unit is the IBM Systems Director Active Energy Manager from IBM Corporation. In some embodiments, energy management unit 150 periodically queries hypervisor 140 to obtain energy consumption data associated with tasks (e.g., virtual machines) managed by the hypervisor.
  • tasks e.g., virtual machines
  • FIG. 2 provides further details regarding a chiplet 104 according to embodiments.
  • Chiplet 104 includes a processor core 202 , L2 cache memory 204 and L3 cache memory 206 .
  • Processor core 202 , L2 cache memory 204 and L3 cache memory 206 each include one or more activity sense points 208 , 210 and 212 .
  • An activity sense point detects events that may be correlated with energy consumption of a component.
  • activity sense points 208 may detect events associated with processor core functions such as load and store operations, instruction dispatch, fixed point operations, floating point operations and other processor core functions.
  • Activity sense points 210 and 212 may detect events associated with L2 and L3 cache reads and writes. Each of these events has an associated energy consumption value.
  • event counters 216 associated with the events may be incremented by power proxy 106 .
  • power proxy 106 may also weight the various activities detected at sense points 208 , 210 and 212 using activity weights 214 .
  • the activity weights 214 adjust the event counters 216 according to the energy consumption associated with a particular event relative to other events. For example, counters associated with floating point events may be weighted higher than counters associated with cache lookup events on the basis that floating point operations use more power than cache lookups.
  • Activity weights 214 may be configurable. For example, activity weights 214 may be maintained in memory or registers that may be written by hypervisor 140 or by a configuration utility.
  • event counters 216 and specific values for activity weights 214 may be determined by modeling differing workloads and regression testing to determine the combination of activities and weightings that provide the strongest correlation with actual energy consumption of the system being tested.
  • event counters may be associated with various combinations of one or more of instructions dispatched, instructions completed, execution register file accesses, execution pipeline issue types, instruction fetch unit events, load-store unit cache events, load-store unit D-ERAT (effective-to-real data address translation) events, load-store unit prefetch events, L2 cache reads/writes and L3 cache reads/writes.
  • a Vdd voltage domain includes events associated with a voltage rail feeding core and cache logic
  • a Vcs voltage domain includes events associated with a Vcs rail feeding the L2 and L3 cache.
  • VRMs Voltage Regulator Modules
  • Activity counters 220 represent a weighted sum of the events associated with a particular voltage domain. Thus for a Vdd voltage domain:
  • Vdd Activity Count event_counter1*event_weight1+ . . . +event_counter N *eventweight N
  • event counters included in the calculation are those events associated with a Vdd voltage. Similar activity counts may be calculated for events associated with other voltage domains, for example a Vcs voltage domain.
  • chiplet 104 includes a P-state (Power State) change register 218 .
  • P-state change register 218 provides a mechanism for hypervisor 140 to signal voltage change points. Such changes may cause power proxy 106 to write a new trace buffer record element 114 to the chiplet queue 112 associated with the chiplet in trace memory 110 .
  • FIG. 3 depicts an example data structure for a trace buffer record 114 .
  • the fields in trace buffer record 114 include an interval timer 302 , task ID 304 , idle state 306 , one or more activity counters 308 , memory activity counter 310 , average frequency count 312 , internal VRM (Voltage Regulator Module) voltage 314 , external VRM voltage 316 , event ID 318 , core temperature 320 and sequence number 322 .
  • VRM Voltage Regulator Module
  • Interval timer 302 stores a value that represents a time interval since the last write of a trace buffer record 114 by the power proxy.
  • Task ID 304 is the task ID of the task running on the core at the time the trace buffer record 114 is written. This value can be obtained from task ID register 108 .
  • Idle state 306 is a value representing the idle state of the processor core at the time the trace buffer record 114 is written.
  • the idle state 306 value indicates one of a non-idle state, a nap state, a sleep state, a “winkle” state (i.e., a deeper sleep), or a wakeup state for the processor core.
  • Activity counters 308 store values for one or more activity counters 220 maintained by a power proxy 106 . As described above, in some embodiments, counters associated with particular voltage domains may be summed into one element. The calculated and weighted sums for the various activity counters associated with the voltage domains may be written to activity counters 308 .
  • Memory activity counter 310 is a counter associated with memory reads and writes performed by a processor core.
  • Average frequency count 312 is a value representing the average frequency of the processor core over the time interval being measured. Both voltage and frequency can be changed by various components of the system. For example, a performance supervisor or a safety supervisor on chiplet 104 may request a voltage or frequency change. Additionally, hypervisor 140 can request a voltage or frequency change. Using the average frequency count can provide for a more accurate measure of energy consumption over the time interval when compared to the instantaneous or current frequency if the frequency has changed over the interval being measured.
  • Internal VRM (Voltage Regulator Module) voltage 314 is a voltage value for an internal VRM for the processor 102 .
  • An internal VRM controls voltage for components on a processor 102 .
  • External VRM voltage 316 is a voltage value for an external VRM.
  • An external VRM controls voltage supplied to a processor 102 .
  • Event ID 318 is a value representing the event that triggered the power proxy unit 106 to write the trace record 114 .
  • the events may include a timer expiration, a change in the value of the task ID register indicating that the task being executed by the processor core has changed, entering an idle state, exiting an idle state, changes in the internal or external voltage, or changes in an internal or external VRM status.
  • Those of skill in the art having the benefit of the disclosure will appreciate that other events can cause the power proxy unit 106 to write a new trace buffer record 114 to a chiplet queue 112 .
  • the trace record 114 will be written using the value before the change occurred.
  • Core temperature 320 is a value that represents the temperature provided by a temperature sensor for the processor core. Temperature correlates well with energy consumption of a processor and related components and can be used as an input to determine estimated power consumption.
  • Sequence number 322 is a value indicating the sequence number of the trace buffer record 114 and can be used by the power management unit to detect data loss or invalid records. In some embodiments, sequence number 322 includes a valid bit indicating whether the record in the queue contains valid data or is available for writing.
  • trace buffer record elements described above are examples of elements included in an example embodiment. Those of skill in the art having the benefit of the disclosure will appreciate that not all of the elements above will be present in every embodiment and that other elements may be included in the trace buffer record in alternative embodiments.
  • FIG. 4 is a flowchart illustrating a method 400 for associating energy consumption with a task such as a virtual machine.
  • the method begins at block 402 , where a system or component executing the method determines that an event has occurred.
  • the event can be any of a timer expiration, a change in the value of the task ID register indicating that the task being executed by the processor core has changed, entering an idle state, exiting an idle state, changes in the internal or external voltage, or changes in an internal or external VRM status.
  • Blocks 404 - 408 may be executed in response to detecting the event at block 402 .
  • the event may be a timer expiration, a change in the value of the task ID associated with a task running on a processor core thus indicating that the task being executed by the processor core has changed, entering an idle state, exiting an idle state, changes in the internal or external voltage, or changes in an internal or external VRM status.
  • a task identifier associated with a task executing on a processor core is read.
  • the task identifier is read from a register that is written by a hypervisor or operating system when a task is assigned to the processor core.
  • the task identifier may be a task specific identifier such as a virtual machine identifier or a process identifier.
  • the task identifier may be associated with a group of tasks that are to be grouped together for purposes of determining energy consumption.
  • energy usage values representing energy use since the last trace record written by the power proxy unit are determined.
  • such values may include activity counters representing energy consuming events, voltage values, and frequency values may also be determined.
  • the energy usage values determined at block 406 are written to a chiplet queue in a trace buffer.
  • a trace buffer record 114 ( FIGS. 1 and 3 ) is written.
  • a pointer for the chiplet queue in the trace buffer is advanced in anticipation of the next write to the chiplet queue.
  • Block 410 may be executed independently of blocks 402 - 408 . In some embodiments, block 410 may be executed at periodic intervals. For example, block 410 may be executed every 250 microseconds.
  • one or more records are read from the trace buffer.
  • each available record is processed to determine the total energy consumption represented by the record according to the data in the record. For example, an energy consumption for each of the activity counters associated with the particular voltage domains in the record may be summed to determine a total energy consumption associated with the record. The contributions of each voltage domain activity counter to the total energy consumption represented by the record may be adjusted based on voltage, temperature, and frequency values in the record. For example, in some embodiments, the trace record energy for a voltage domain Vdom may be determined according to:
  • Vdom_voltage is the measured voltage for the domain
  • Vdom_reference is a reference voltage determined during manufacturing testing performed on a reference chip
  • frequency is the average frequency from the trace record
  • temp record is the processor core temperature from the trace record
  • temp refrence is the temperature of a core of the reference chip measured during manufacturing testing of the chip at an operating voltage of Vdom_reference.
  • Pref is the leakage power measured from the reference chip during manufacturing testing. Pref may be measured when the chip is operating at Vdom_reference and temp reference .
  • Parameters a, b, c, d, e, and f are fitting parameters determined during regression testing the reference chip. The fitting parameters and reference values may be stored in a data area for the chip, for example a Vital Product Data (VPD) area.
  • VPD Vital Product Data
  • the calculation above may be performed for each of the voltage domains in the record (e.g., Vdd, Vcs voltages etc.)
  • the energy values for each domain as calculated according to the formula above may be summed to produce a total energy consumption associated with the record.
  • the formula above includes parameters that correlate with leakage power and clock power, and thus the energy consumption associated with leakage power and clock power may be included with the power consumption associated with a task.
  • the total energy consumption for the record represents the total energy consumption associated with the task associated with the record during the interval of time represented by the record. In some embodiments, a total value in millijoules is calculated. This computed total energy consumption may be accumulated in the energy array 132 value that is indexed by the task identifier in the record, thereby providing a running total of energy consumption for the task.
  • FIG. 5 is a flowchart illustrating a method 500 for determining an energy consumption for a task such as a virtual machine.
  • Method 500 begins at block 502 by determining memory energy consumption at an idle state. Determining memory energy consumption at an idle state allows for allocating energy use associated with memory to tasks even if the task is currently idle on the basis that a task such as a virtual machine occupies and uses memory even if the task is idle.
  • the operations performed by block 502 may be performed once when a system boots and not repeated until a later reboot or memory size change.
  • energy values associated with a task are received.
  • an energy array containing records of counter values associated with energy use of a task may be read using the task ID as an index into the array.
  • a task energy consumption is determined using the values determined at block 504 .
  • the energy consumption for the task may be determined by reading the current energy consumption for the task from energy array 132 .
  • idle memory energy consumption may be allocated to the task.
  • the amount of memory allocated to the task may be used to determine the energy consumed by the task related to memory.
  • FIG. 6 is a flowchart illustrating a method 600 for adjusting an energy consumption value according to a scaling factor. The method begins at block 602 by reading energy consumption counter, voltages and frequencies from an energy array.
  • an estimated energy consumption value across all tasks and processor cores of the processor is determined by summing or averaging the values across all of the tasks executing on the processor cores of a processor.
  • an actual energy consumption value for the processor is read.
  • the actual energy consumption value may be determined from sensors measuring energy delivered to the processor.
  • a scaling factor is determined according to the estimated energy consumption for the processor and the actual energy consumption value.
  • the scaling factor may be applied to future energy values determined according to methods 400 or 500 described above.
  • method 600 may be repeated at periodic intervals to adjust the scaling factor.
  • aspects of the present inventive subject matter may be embodied as a system, method or computer program product. Accordingly, aspects of the present inventive subject matter may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “circuit,” “module” or “system.” Furthermore, aspects of the present inventive subject matter may take the form of a computer program product embodied in one or more computer readable medium(s) having computer readable program code embodied thereon.
  • the computer readable medium may be a computer readable signal medium or a computer readable storage medium.
  • a computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing.
  • a computer readable storage medium may be any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device.
  • a computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof.
  • a computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device.
  • Program code embodied on a computer readable medium may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc., or any suitable combination of the foregoing.
  • Computer program code for carrying out operations for aspects of the present inventive subject matter may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++ or the like and conventional procedural programming languages, such as the “C” programming language or similar programming languages.
  • the program code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server.
  • the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).
  • LAN local area network
  • WAN wide area network
  • Internet Service Provider for example, AT&T, MCI, Sprint, EarthLink, MSN, GTE, etc.
  • These computer program instructions may also be stored in a computer readable medium that can direct a computer, other programmable data processing apparatus, or other devices to function in a particular manner, such that the instructions stored in the computer readable medium produce an article of manufacture including instructions which implement the function/act specified in the flowchart and/or block diagram block or blocks.
  • the computer program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatus or other devices to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Debugging And Monitoring (AREA)
  • Power Sources (AREA)

Abstract

Associating processor and processor core energy consumption with a task such as a virtual machine is disclosed. Various events cause a trace record to be written to a trace buffer for a processor. An identifier associated with a task using a processor core of the processor is read. In addition, one or more values associated with an energy consumption of the processor core are read. In response to the event, the one or more values associated with the energy consumption of the processor core and the identifier are written to the trace buffer memory.

Description

    RELATED APPLICATIONS
  • This application is a Continuation of, and claims the priority benefit of, U.S. application Ser. No. 13/686,415 filed Nov. 27, 2012. This application is related to U.S. application Ser. No. 13/772,673 filed Feb. 21, 2013.
  • BACKGROUND
  • Embodiments of the inventive subject matter generally relate to the field of computers, and, more particularly, to associating energy consumption of a virtual machine or other task running on a computer.
  • A significant portion of the operating cost for large data centers and cloud computing environments is related to the energy costs associated with the data center or cloud servers. In such environments, virtual machines may be assigned to run tasks on behalf of a user. The virtual machines are typically assigned to run on one or more cores of a multicore system. A data center or cloud operator may desire to bill a user for the energy consumed by a virtual machine when running on a processor core. However, there is currently no way to directly measure the energy consumed by a processor core. As a result, previous systems have used various models to estimate power consumption of a virtual machine. However, such models typically use performance based values that do not necessarily correlate well with energy consumption.
  • SUMMARY
  • Various embodiments are disclosed in which energy consumption for a task such as a virtual machine is determined. Various events cause a trace record to be written to a trace buffer for a processor. An identifier associated with a task using a processor core of the processor is read. In addition, one or more values associated with an energy consumption of the processor core are read. In response to the event, the one or more values associated with the energy consumption of the processor core and the identifier are written to the trace buffer memory.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • The present embodiments may be better understood, and numerous objects, features, and advantages made apparent to those skilled in the art by referencing the accompanying drawings.
  • FIG. 1 depicts a system for associating energy consumption with a task according to embodiments.
  • FIG. 2 depicts a chiplet according to embodiments.
  • FIG. 3 depicts a trace buffer record used in some embodiments
  • FIG. 4 is a flowchart illustrating a method for associated energy consumption with a virtual machine.
  • FIG. 5 is a flowchart illustrating a method for determining an energy consumption for a task such as a virtual machine.
  • FIG. 6 is a flowchart illustrating a method for adjusting an energy consumption value according to a scaling factor.
  • DESCRIPTION OF EMBODIMENT(S)
  • The description that follows includes exemplary systems, methods, techniques, instruction sequences and computer program products that embody techniques of the present inventive subject matter. However, it is understood that the described embodiments may be practiced without these specific details. For instance, although examples refer to associating energy consumption of processor cores with virtual machines, energy consumption of processor cores may be associated with other tasks or groups of tasks. In other instances, well-known instruction instances, protocols, structures and techniques have not been shown in detail in order not to obfuscate the description.
  • In general, the embodiments provide a means for associating energy consumption of processor cores with tasks running on the processor cores, for example virtual machines. Various sensor points detect or measure activity associated with energy consumption of processor cores that execute instructions and access memory on behalf of virtual machines running on a system. An identifier for a virtual machine running on a processor core is provided to the core. A variety of events may trigger a trace buffer record to be written to a memory, where the trace buffer includes data associated with the energy consumption of the core and the virtual machine that was running on the core at the time the trace buffer record was written. The records in the trace buffer can be aggregated and analyzed to determine energy consumption associated with the virtual machines running on the system.
  • FIG. 1 depicts a system 100 for associating energy consumption with a task according to embodiments. In some embodiments, system 100 includes processor 102, memory 130, and hypervisor 140 and may optionally include energy management unit 150.
  • Processor 102 is a multicore processor where the processor cores are provided in chiplets 104. Although three chiplets (e.g., chiplets 104A, 104B and 104C) are illustrated in FIG. 1, those of skill in the art having the benefit of the disclosure will appreciate that a processor 102 may have more or fewer chiplets 104. In addition to chiplets 104, processor 102 includes trace memory 110 and power management unit 120.
  • A chiplet 104 includes a processor core, memory (e.g., L2 and L3 cache) and supporting logic units for the processor core. Chiplet 104 also includes a power proxy unit 106 (“power proxy 106”) and task identification (ID) register 108. Task ID register 108 is a special purpose register that stores an identifier for a task executing on the processor core of chiplet 104. Power proxy 106 collects and generates data associated with energy consumption of the processor core of chiplet 104. Certain events such as timer expiration, voltage changes etc. cause power proxy 106 to write a trace buffer record 114 to a chiplet queue 112 associated with the chiplet in trace memory 110 of processor 102. Trace memory 110 contains a chiplet queue 112 for each chiplet on processor 102. Trace buffer record 114 includes various data elements related to energy consumption associated with the chiplet. Further details on the data elements of a trace buffer record 114 are provided below with reference to FIG. 3. In some embodiments, chiplet queue 112 is a circular queue configured to store eight trace buffer records 114. The number of trace buffer records 114 that are maintained in a chiplet queue 112 may be a function of the size of trace memory 110 and the number of chiplets on processor 102. It is desirable that the number of trace buffer records be large enough to avoid data being overwritten before it is processed by power management unit 120. Trace memory 110 may be part of processor 102 as illustrated in FIG. 1. Those of skill in the art having the benefit of the disclosure will appreciate that trace memory 110 may be located on other components accessible to processor 102.
  • Power management unit 120 periodically reads the trace records 114 from chiplet queues 112 and processes the data such that data from trace records 114 that are associated with the same task ID are aggregated together. In some embodiments, power management unit reads and processes trace records every 32 milliseconds. It is desirable to choose an interval that avoids data being overwritten in a trace record in queue 112 before power management unit 120 can process the trace record. As trace records are processed, power management unit increments a queue pointer for the queue to point to the next trace record. Power management unit 120 then adds the data aggregated by task ID to an energy array 132 in a memory 130 accessible by hypervisor 140. Energy array 132 maintains energy consumption data for tasks and in some embodiments is indexed according to the task identifier. For example, in some embodiments, energy array 132 may be indexed by a task ID comprising a virtual machine identifier. Power management unit 120 accumulates energy consumption values by adding currently processed energy consumption values for tasks to values already stored in energy array 132, using the task identifier as an index into the energy array.
  • Hypervisor 140 manages a virtualized operating environment and provides virtualized resources (e.g., virtualized hardware resources) for system 100. Hypervisor 140 manages virtual machines (also referred to as partitions) executing on various computers of system 100. A virtual machine runs an operating system and applications within the virtual machine. The operating system and applications running on one virtual machine may be completely different from the operating system and applications running on other virtual machines. For example, one virtual machine may be running an accounting system on the AIX operating system while another virtual machine may run file server applications on a Linux operating system. Alternatively, a virtual machine may run the same operating system and applications as another virtual machine and serve as a backup in case of a failure or overload in the other virtual machine. From the point of view of a virtual machine, the virtual machine appears to be an independent computer that controls the underlying hardware when in reality, each virtual machine is sharing hardware resource with other virtual machines.
  • In some implementations, when hypervisor 140 schedules a virtual machine to run on a processor core, hypervisor 140 writes the virtual machine identifier associated with the virtual machine to task ID register 108 of the chiplet 104 for the processor core that is to execute the virtual machine. Power proxy 106 reads the virtual machine identifier from task ID register 108 and stores the virtual machine identifier in trace buffer records 114 as energy consumption values for the chiplet 104 are written to the chiplet queue 112 in trace memory 110.
  • As illustrated in FIG. 1, in some embodiments, power management unit 120 is an on-chip controller that is provided on processor 102. In alternative embodiments, power management unit 120 may be separate from processor 102. In further alternative embodiments, the functions provided by power management unit 120 related to processing trace records 114 in trace memory 110 may be performed by hypervisor 140. In such embodiments, hypervisor 140 accesses trace memory 110 directly to process the records.
  • Energy management unit 150 provides energy management functions across a number of computing systems. For example, energy management unit 150 may provide energy management functions for a data center or for computing systems that support a cloud computing environment. An example of an energy management unit is the IBM Systems Director Active Energy Manager from IBM Corporation. In some embodiments, energy management unit 150 periodically queries hypervisor 140 to obtain energy consumption data associated with tasks (e.g., virtual machines) managed by the hypervisor.
  • FIG. 2 provides further details regarding a chiplet 104 according to embodiments. Chiplet 104 includes a processor core 202, L2 cache memory 204 and L3 cache memory 206. Processor core 202, L2 cache memory 204 and L3 cache memory 206 each include one or more activity sense points 208, 210 and 212. An activity sense point detects events that may be correlated with energy consumption of a component. For example, activity sense points 208 may detect events associated with processor core functions such as load and store operations, instruction dispatch, fixed point operations, floating point operations and other processor core functions. Activity sense points 210 and 212 may detect events associated with L2 and L3 cache reads and writes. Each of these events has an associated energy consumption value. As events are detected at the activity sense points 208, 210 and 212, event counters 216 associated with the events may be incremented by power proxy 106. In some embodiments, power proxy 106 may also weight the various activities detected at sense points 208, 210 and 212 using activity weights 214. The activity weights 214 adjust the event counters 216 according to the energy consumption associated with a particular event relative to other events. For example, counters associated with floating point events may be weighted higher than counters associated with cache lookup events on the basis that floating point operations use more power than cache lookups.
  • Activity weights 214 may be configurable. For example, activity weights 214 may be maintained in memory or registers that may be written by hypervisor 140 or by a configuration utility.
  • Generally speaking, the events that are counted in event counters 216 and specific values for activity weights 214 may be determined by modeling differing workloads and regression testing to determine the combination of activities and weightings that provide the strongest correlation with actual energy consumption of the system being tested. In some embodiments, event counters may be associated with various combinations of one or more of instructions dispatched, instructions completed, execution register file accesses, execution pipeline issue types, instruction fetch unit events, load-store unit cache events, load-store unit D-ERAT (effective-to-real data address translation) events, load-store unit prefetch events, L2 cache reads/writes and L3 cache reads/writes. Those of skill in the art having the benefit of the disclosure will appreciate that other events could be counted.
  • The above-described events may be associated with various voltage domains depending on a voltage source. For example, in some embodiments, a Vdd voltage domain includes events associated with a voltage rail feeding core and cache logic, while a Vcs voltage domain includes events associated with a Vcs rail feeding the L2 and L3 cache. Both the Vdd and Vcs voltage may be controlled by VRMs (Voltage Regulator Modules) and may vary over time. Those of skill in the art having the benefit of the disclosure will appreciate that the number and types of voltage domains present may vary and may be implementation specific.
  • Activity counters 220 represent a weighted sum of the events associated with a particular voltage domain. Thus for a Vdd voltage domain:

  • Vdd Activity Count=event_counter1*event_weight1+ . . . +event_counterN*eventweightN
  • where the event counters included in the calculation are those events associated with a Vdd voltage. Similar activity counts may be calculated for events associated with other voltage domains, for example a Vcs voltage domain.
  • In some embodiments, chiplet 104 includes a P-state (Power State) change register 218. P-state change register 218 provides a mechanism for hypervisor 140 to signal voltage change points. Such changes may cause power proxy 106 to write a new trace buffer record element 114 to the chiplet queue 112 associated with the chiplet in trace memory 110.
  • FIG. 3 depicts an example data structure for a trace buffer record 114. In some embodiments, the fields in trace buffer record 114 include an interval timer 302, task ID 304, idle state 306, one or more activity counters 308, memory activity counter 310, average frequency count 312, internal VRM (Voltage Regulator Module) voltage 314, external VRM voltage 316, event ID 318, core temperature 320 and sequence number 322.
  • Interval timer 302 stores a value that represents a time interval since the last write of a trace buffer record 114 by the power proxy.
  • Task ID 304 is the task ID of the task running on the core at the time the trace buffer record 114 is written. This value can be obtained from task ID register 108.
  • Idle state 306 is a value representing the idle state of the processor core at the time the trace buffer record 114 is written. In some embodiments, the idle state 306 value indicates one of a non-idle state, a nap state, a sleep state, a “winkle” state (i.e., a deeper sleep), or a wakeup state for the processor core.
  • Activity counters 308 store values for one or more activity counters 220 maintained by a power proxy 106. As described above, in some embodiments, counters associated with particular voltage domains may be summed into one element. The calculated and weighted sums for the various activity counters associated with the voltage domains may be written to activity counters 308. Memory activity counter 310 is a counter associated with memory reads and writes performed by a processor core.
  • Average frequency count 312 is a value representing the average frequency of the processor core over the time interval being measured. Both voltage and frequency can be changed by various components of the system. For example, a performance supervisor or a safety supervisor on chiplet 104 may request a voltage or frequency change. Additionally, hypervisor 140 can request a voltage or frequency change. Using the average frequency count can provide for a more accurate measure of energy consumption over the time interval when compared to the instantaneous or current frequency if the frequency has changed over the interval being measured.
  • Internal VRM (Voltage Regulator Module) voltage 314 is a voltage value for an internal VRM for the processor 102. An internal VRM controls voltage for components on a processor 102.
  • External VRM voltage 316 is a voltage value for an external VRM. An external VRM controls voltage supplied to a processor 102.
  • Event ID 318 is a value representing the event that triggered the power proxy unit 106 to write the trace record 114. In some embodiments, the events may include a timer expiration, a change in the value of the task ID register indicating that the task being executed by the processor core has changed, entering an idle state, exiting an idle state, changes in the internal or external voltage, or changes in an internal or external VRM status. Those of skill in the art having the benefit of the disclosure will appreciate that other events can cause the power proxy unit 106 to write a new trace buffer record 114 to a chiplet queue 112. In cases where the event indicates a value has changed (e.g., task ID change, voltage change, etc.), the trace record 114 will be written using the value before the change occurred.
  • Core temperature 320 is a value that represents the temperature provided by a temperature sensor for the processor core. Temperature correlates well with energy consumption of a processor and related components and can be used as an input to determine estimated power consumption.
  • Sequence number 322 is a value indicating the sequence number of the trace buffer record 114 and can be used by the power management unit to detect data loss or invalid records. In some embodiments, sequence number 322 includes a valid bit indicating whether the record in the queue contains valid data or is available for writing.
  • The trace buffer record elements described above are examples of elements included in an example embodiment. Those of skill in the art having the benefit of the disclosure will appreciate that not all of the elements above will be present in every embodiment and that other elements may be included in the trace buffer record in alternative embodiments.
  • FIG. 4 is a flowchart illustrating a method 400 for associating energy consumption with a task such as a virtual machine. The method begins at block 402, where a system or component executing the method determines that an event has occurred. As noted above, the event can be any of a timer expiration, a change in the value of the task ID register indicating that the task being executed by the processor core has changed, entering an idle state, exiting an idle state, changes in the internal or external voltage, or changes in an internal or external VRM status.
  • Blocks 404-408 may be executed in response to detecting the event at block 402. The event may be a timer expiration, a change in the value of the task ID associated with a task running on a processor core thus indicating that the task being executed by the processor core has changed, entering an idle state, exiting an idle state, changes in the internal or external voltage, or changes in an internal or external VRM status. Those of skill in the art having the benefit of the disclosure will appreciate that other may be detected.
  • At block 404, a task identifier associated with a task executing on a processor core is read. In some embodiments, the task identifier is read from a register that is written by a hypervisor or operating system when a task is assigned to the processor core. The task identifier may be a task specific identifier such as a virtual machine identifier or a process identifier. Alternatively, the task identifier may be associated with a group of tasks that are to be grouped together for purposes of determining energy consumption.
  • At block 406 energy usage values representing energy use since the last trace record written by the power proxy unit are determined. As discussed above, such values may include activity counters representing energy consuming events, voltage values, and frequency values may also be determined.
  • At block 408, the energy usage values determined at block 406 are written to a chiplet queue in a trace buffer. In some embodiments, a trace buffer record 114 (FIGS. 1 and 3) is written. A pointer for the chiplet queue in the trace buffer is advanced in anticipation of the next write to the chiplet queue.
  • Block 410 may be executed independently of blocks 402-408. In some embodiments, block 410 may be executed at periodic intervals. For example, block 410 may be executed every 250 microseconds. At block 410, one or more records are read from the trace buffer. In some embodiments, each available record is processed to determine the total energy consumption represented by the record according to the data in the record. For example, an energy consumption for each of the activity counters associated with the particular voltage domains in the record may be summed to determine a total energy consumption associated with the record. The contributions of each voltage domain activity counter to the total energy consumption represented by the record may be adjusted based on voltage, temperature, and frequency values in the record. For example, in some embodiments, the trace record energy for a voltage domain Vdom may be determined according to:
  • Energy Vdom = a * Vdom Activity Counter * ( Vdom_voltage Vdom_reference ) b + c * frequency * ( Vdom_voltage Vdom_reference ) d + Pref * ( 1 + e * ( temp reference - temp record ) * ( Vdom_voltage Vdom_reference ) f
  • where Vdom_voltage is the measured voltage for the domain, Vdom_reference is a reference voltage determined during manufacturing testing performed on a reference chip, frequency is the average frequency from the trace record, temprecord is the processor core temperature from the trace record, temprefrence is the temperature of a core of the reference chip measured during manufacturing testing of the chip at an operating voltage of Vdom_reference. Pref is the leakage power measured from the reference chip during manufacturing testing. Pref may be measured when the chip is operating at Vdom_reference and tempreference. Parameters a, b, c, d, e, and f are fitting parameters determined during regression testing the reference chip. The fitting parameters and reference values may be stored in a data area for the chip, for example a Vital Product Data (VPD) area. The calculation above may be performed for each of the voltage domains in the record (e.g., Vdd, Vcs voltages etc.) The energy values for each domain as calculated according to the formula above may be summed to produce a total energy consumption associated with the record.
  • The formula above includes parameters that correlate with leakage power and clock power, and thus the energy consumption associated with leakage power and clock power may be included with the power consumption associated with a task. Those of skill in the art having the benefit of the disclosure will appreciate that other means of accounting for leakage power and clock power may be used and are within the scope of the inventive subject matter.
  • The total energy consumption for the record represents the total energy consumption associated with the task associated with the record during the interval of time represented by the record. In some embodiments, a total value in millijoules is calculated. This computed total energy consumption may be accumulated in the energy array 132 value that is indexed by the task identifier in the record, thereby providing a running total of energy consumption for the task.
  • FIG. 5 is a flowchart illustrating a method 500 for determining an energy consumption for a task such as a virtual machine. Method 500 begins at block 502 by determining memory energy consumption at an idle state. Determining memory energy consumption at an idle state allows for allocating energy use associated with memory to tasks even if the task is currently idle on the basis that a task such as a virtual machine occupies and uses memory even if the task is idle. The operations performed by block 502 may be performed once when a system boots and not repeated until a later reboot or memory size change.
  • At block 504, energy values associated with a task are received. In some embodiments, an energy array containing records of counter values associated with energy use of a task may be read using the task ID as an index into the array.
  • At block 506, a task energy consumption is determined using the values determined at block 504. The energy consumption for the task may be determined by reading the current energy consumption for the task from energy array 132. In addition, idle memory energy consumption may be allocated to the task. In addition, the amount of memory allocated to the task may be used to determine the energy consumed by the task related to memory.
  • FIG. 6 is a flowchart illustrating a method 600 for adjusting an energy consumption value according to a scaling factor. The method begins at block 602 by reading energy consumption counter, voltages and frequencies from an energy array.
  • At block 604, an estimated energy consumption value across all tasks and processor cores of the processor is determined by summing or averaging the values across all of the tasks executing on the processor cores of a processor.
  • At block 606, an actual energy consumption value for the processor is read. The actual energy consumption value may be determined from sensors measuring energy delivered to the processor.
  • At block 608, a scaling factor is determined according to the estimated energy consumption for the processor and the actual energy consumption value.
  • At block 610, the scaling factor may be applied to future energy values determined according to methods 400 or 500 described above. In some embodiments, method 600 may be repeated at periodic intervals to adjust the scaling factor.
  • As will be appreciated by one skilled in the art, aspects of the present inventive subject matter may be embodied as a system, method or computer program product. Accordingly, aspects of the present inventive subject matter may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “circuit,” “module” or “system.” Furthermore, aspects of the present inventive subject matter may take the form of a computer program product embodied in one or more computer readable medium(s) having computer readable program code embodied thereon.
  • Any combination of one or more computer readable medium(s) may be utilized. The computer readable medium may be a computer readable signal medium or a computer readable storage medium. A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer readable storage medium would include the following: an electrical connection having one or more wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer readable storage medium may be any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device.
  • A computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof. A computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device.
  • Program code embodied on a computer readable medium may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc., or any suitable combination of the foregoing.
  • Computer program code for carrying out operations for aspects of the present inventive subject matter may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++ or the like and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The program code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).
  • Aspects of the present inventive subject matter are described with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the inventive subject matter. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
  • These computer program instructions may also be stored in a computer readable medium that can direct a computer, other programmable data processing apparatus, or other devices to function in a particular manner, such that the instructions stored in the computer readable medium produce an article of manufacture including instructions which implement the function/act specified in the flowchart and/or block diagram block or blocks.
  • The computer program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatus or other devices to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
  • While the embodiments are described with reference to various implementations and exploitations, it will be understood that these embodiments are illustrative and that the scope of the inventive subject matter is not limited to them. In general, techniques for associating energy consumption of a processor core with a task such as a virtual machine as described herein may be implemented with facilities consistent with any hardware system or hardware systems. Many variations, modifications, additions, and improvements are possible.
  • Plural instances may be provided for components, operations or structures described herein as a single instance. Finally, boundaries between various components, operations and data stores are somewhat arbitrary, and particular operations are illustrated in the context of specific illustrative configurations. Other allocations of functionality are envisioned and may fall within the scope of the inventive subject matter. In general, structures and functionality presented as separate components in the exemplary configurations may be implemented as a combined structure or component. Similarly, structures and functionality presented as a single component may be implemented as separate components. These and other variations, modifications, additions, and improvements may fall within the scope of the inventive subject matter.

Claims (19)

What is claimed is:
1. A method for execution on a processor having a plurality of chiplets, the method comprising:
in response to detecting, by an activity sense point of a chiplet, a first event:
determining data associated with energy consumption of the chiplet,
reading a task identifier from a first register of the chiplet, and
writing the data associated with the energy consumption of the chiplet and the task identifier to the first memory; and
in response to detection of a second event:
reading the data associated with energy consumption and associated task identifiers from the first memory,
for each task identifier read from the first memory, writing the data associated with the energy consumption of the chiplet and the task identifier to a second memory.
2. The method of claim 1, wherein the task identifier comprises an identifier associated with a task to be executed on a processor core of the chiplet, wherein the method further comprises receiving, into the first register from a hypervisor, the task identifier.
3. The method of claim 1, further comprising:
aggregating data associate with energy consumption of the chiplets according to the task identifiers;
wherein writing the data associated with the energy consumption of the chiplet and the task identifier to the second memory comprises writing the aggregated data to the second memory.
4. The method of claim 1, wherein each task identifier identifies a virtual machine, wherein the second memory is accessible by a hypervisor.
5. The method of claim 1, wherein the second event is selected from a group consisting of: one or more of an expiration of a timer, a change in internal or external voltage for at least one of the plurality of processor cores, a change in frequency for at least one of the plurality of processor cores, a change in a voltage regulator module, a change in a power state for at least one of the plurality of processor cores, or a change in the task identifier indicated in the first register of at least one of the plurality of processor cores.
6. The method of claim 1, wherein the data associated with energy consumption of the chiplet is further associated with at least one of a plurality of voltage domains of the chiplet.
7. The method of claim 1, wherein the first event is selected from a group consisting of: at least one of load and store operations, instruction dispatch, fixed point operations, floating point operations, cache reads, and cache writes.
8. A computer program product for associating energy consumption with a task, the computer program product comprising:
a computer readable storage medium having computer usable program code embodied therewith, the computer usable program code comprising a computer usable program code configured to:
in response to detection of a first event by an activity sense point of a chiplet of a plurality of chiplets:
determine data associated with energy consumption of the chiplet,
read a task identifier from a first register of the chiplet, and
write the data associated with the energy consumption of the chiplet and the task identifier to the first memory; and
in response to detection of a second event:
read the data associated with energy consumption and associated task identifiers from the first memory,
for each task identifier read from the first memory, write the data associated with the energy consumption of the chiplet and the task identifier to a second memory.
9. The computer program product of claim 8, wherein the task identifier comprises an identifier associated with a task to be executed on a processor core of the chiplet, and wherein the computer usable program code further includes computer usable program code configured to receive, into the first register from a hypervisor, the task identifier.
10. The computer program product of claim 8, wherein the computer usable program code further includes computer usable program code configured to:
aggregate data associate with energy consumption of the plurality of chiplets according to the task identifiers;
wherein computer usable program code configured to write the data associated with the energy consumption of the chiplet and the task identifier to the second memory comprises computer usable program code configured to write the aggregated data to the second memory.
11. The computer program product of claim 8, wherein the second event is selected from a group consisting of: one or more of an expiration of a timer, a change in internal or external voltage for at least one of the plurality of processor cores, a change in frequency for at least one of the plurality of processor cores, a change in a voltage regulator module, a change in a power state for at least one of the plurality of processor cores, or a change in the task identifier indicated in the first register of at least one of the plurality of processor cores.
12. The computer program product of claim 8, wherein the data associated with energy consumption of the chiplet is further associated with at least one of a plurality of voltage domains of the chiplet.
13. The computer program product of claim 8, wherein the first event is selected from a group consisting of: at least one of load and store operations, instruction dispatch, fixed point operations, floating point operations, cache reads, and cache writes.
14. A processor comprising:
a first memory; and
a plurality of chiplets, wherein each chiplet comprises:
a processor core;
a first register to store a task identifier;
a plurality of activity sense points;
wherein each chiplet is configured to:
in response to a first event:
determine data associated with energy consumption of the chiplet,
read the task identifier from the first register, and
write the data associated with energy consumption of the chiplet and the task identifier to the first memory; and
wherein the processor is configured to:
in response to detection of a second event:
read the data associated with energy consumption of the chiplet and associated identifiers from the first memory,
for each identifier read from the first memory, write the data associated with the energy consumption and the task identifier to a second memory.
15. The processor of claim 14, wherein the second event comprises at least one of a change in an identifier in the first register or a change in power state indicated in a second register.
16. The processor of claim 14, wherein the first event is selected from a group consisting of: an expiration of a timer, a change in internal or external voltage of the chiplet, a change in frequency of the chiplet, a change in a power state of the chiplet, or a change in an identifier indicated in the first register, or a change in a voltage regulator module.
17. The processor of claim 14, wherein each chiplet further includes:
one or more activity counters updated in response to detection of the first event; and
one or more activity weight registers to store weightings associated with the one or more activity counters;
wherein the processor is further configured to apply the weightings to values of the one or more activity counters associated with an energy consumption of the processor core.
18. The processor of claim 17, further comprising:
a plurality of activity sense points, the plurality of activity sense points configured to maintain the one or more activity counters.
19. The processor of claim 14, wherein the processor is further configured to aggregate the data associated with energy consumption according to the task identifiers.
US15/095,939 2012-11-27 2016-04-11 Associating energy consumption with a virtual machine Abandoned US20160224396A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US15/095,939 US20160224396A1 (en) 2012-11-27 2016-04-11 Associating energy consumption with a virtual machine

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/686,415 US9311209B2 (en) 2012-11-27 2012-11-27 Associating energy consumption with a virtual machine
US15/095,939 US20160224396A1 (en) 2012-11-27 2016-04-11 Associating energy consumption with a virtual machine

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US13/686,415 Continuation US9311209B2 (en) 2012-11-27 2012-11-27 Associating energy consumption with a virtual machine

Publications (1)

Publication Number Publication Date
US20160224396A1 true US20160224396A1 (en) 2016-08-04

Family

ID=50774383

Family Applications (3)

Application Number Title Priority Date Filing Date
US13/686,415 Expired - Fee Related US9311209B2 (en) 2012-11-27 2012-11-27 Associating energy consumption with a virtual machine
US13/772,673 Expired - Fee Related US9304886B2 (en) 2012-11-27 2013-02-21 Associating energy consumption with a virtual machine
US15/095,939 Abandoned US20160224396A1 (en) 2012-11-27 2016-04-11 Associating energy consumption with a virtual machine

Family Applications Before (2)

Application Number Title Priority Date Filing Date
US13/686,415 Expired - Fee Related US9311209B2 (en) 2012-11-27 2012-11-27 Associating energy consumption with a virtual machine
US13/772,673 Expired - Fee Related US9304886B2 (en) 2012-11-27 2013-02-21 Associating energy consumption with a virtual machine

Country Status (3)

Country Link
US (3) US9311209B2 (en)
CN (1) CN103838668B (en)
TW (1) TW201423597A (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11714688B1 (en) * 2022-11-17 2023-08-01 Accenture Global Solutions Limited Sustainability-based computing resource allocation
WO2024147979A1 (en) * 2023-01-03 2024-07-11 Advanced Micro Devices, Inc. Chiplet interconnect power state management

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9311209B2 (en) 2012-11-27 2016-04-12 International Business Machines Corporation Associating energy consumption with a virtual machine
US9170631B2 (en) * 2013-02-05 2015-10-27 Advanced Micro Devices, Inc. Adaptive temperature and power calculation for integrated circuits
US9135126B2 (en) * 2013-02-07 2015-09-15 International Business Machines Corporation Multi-core re-initialization failure control system
WO2015009288A1 (en) * 2013-07-16 2015-01-22 Empire Technology Development, Llc Processor identification for virtual machines
KR101842016B1 (en) * 2013-12-10 2018-03-28 한국전자통신연구원 Method for dynamically controlling power in multicore environment
CN106415498B (en) * 2014-06-24 2020-09-29 英特尔公司 Virtual machine power management
KR102269271B1 (en) * 2014-09-12 2021-06-28 삼성전자주식회사 Apparatus and method for executing an application based on an open computing language
US9823723B2 (en) * 2014-09-16 2017-11-21 Apple Inc. Low-overhead process energy accounting
US9910475B2 (en) * 2014-12-23 2018-03-06 Intel Corporation Processor core power event tracing
US20160187395A1 (en) * 2014-12-24 2016-06-30 Intel Corporation Forecast for demand of energy
US10216526B2 (en) * 2015-01-14 2019-02-26 Mediatek Inc. Controlling method for optimizing a processor and controlling system
JP6214056B2 (en) * 2015-03-30 2017-10-18 日本電気株式会社 Multi-core processor, information processing method, program
US9942631B2 (en) 2015-09-25 2018-04-10 Intel Corporation Out-of-band platform tuning and configuration
US10613606B2 (en) 2016-03-17 2020-04-07 Intel Corporation Wireless component state based power management
CN108228322B (en) * 2016-12-12 2022-03-25 阿里巴巴集团控股有限公司 Distributed link tracking and analyzing method, server and global scheduler
CN108228432A (en) * 2016-12-12 2018-06-29 阿里巴巴集团控股有限公司 A kind of distributed link tracking, analysis method and server, global scheduler
US10423209B2 (en) * 2017-02-13 2019-09-24 Apple Inc. Systems and methods for coherent power management
US11669426B2 (en) * 2017-06-30 2023-06-06 International Business Machines Corporation Kernel-based power consumption and isolation and defense against emerging power attacks
CN108369526B (en) * 2017-08-07 2022-03-11 深圳前海达闼云端智能科技有限公司 Virtual machine starting method and device and intelligent terminal
US11886224B2 (en) * 2020-06-26 2024-01-30 Advanced Micro Devices, Inc. Core selection based on usage policy and core constraints
US11493975B2 (en) * 2020-09-24 2022-11-08 Intel Corporation System, apparatus and method for providing power monitoring isolation in a processor
JP2023021662A (en) * 2021-08-02 2023-02-14 富士通株式会社 Program and management method

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090259345A1 (en) * 2008-04-09 2009-10-15 Takeshi Kato Operations management methods and devices thereof in information-processing systems
US20090307396A1 (en) * 2008-06-09 2009-12-10 International Business Machines Corporation Hypervisor to I/O Stack Conduit in Virtual Real Memory
US20100268975A1 (en) * 2009-04-15 2010-10-21 International Business Machines Corporation On-Chip Power Proxy Based Architecture
US20110055831A1 (en) * 2009-08-31 2011-03-03 International Business Machines Corporation Program execution with improved power efficiency
US20110161627A1 (en) * 2009-12-28 2011-06-30 Song Justin J Mechanisms to avoid inefficient core hopping and provide hardware assisted low-power state selection
US20110239015A1 (en) * 2010-03-25 2011-09-29 International Business Machines Corporation Allocating Computing System Power Levels Responsive to Service Level Agreements
US20130024705A1 (en) * 2011-02-04 2013-01-24 Takuya Kondoh Virtual computer system, device sharing control method, computer-readable recording medium, and integrated circuit
US20130086395A1 (en) * 2011-09-30 2013-04-04 Qualcomm Incorporated Multi-Core Microprocessor Reliability Optimization
US20130155073A1 (en) * 2011-12-14 2013-06-20 Advanced Micro Devices, Inc. Method and apparatus for power management of a processor in a virtual environment
US20130346766A1 (en) * 2011-02-28 2013-12-26 Panasonic Corporation Power control device and power control method
US20140019743A1 (en) * 2012-07-11 2014-01-16 Michael Joseph DeLuca Computing devices and methods for resetting inactivity timers on computing devices
US9348391B1 (en) * 2012-06-28 2016-05-24 Amazon Technologies, Inc. Managing resource power states in shared environments
US9829951B2 (en) * 2011-12-13 2017-11-28 Intel Corporation Enhanced system sleep state support in servers using non-volatile random access memory

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6738864B2 (en) * 2000-08-21 2004-05-18 Texas Instruments Incorporated Level 2 cache architecture for multiprocessor with task—ID and resource—ID
US20030167460A1 (en) * 2002-02-26 2003-09-04 Desai Vipul Anil Processor instruction set simulation power estimation method
US7243243B2 (en) * 2002-08-29 2007-07-10 Intel Corporatio Apparatus and method for measuring and controlling power consumption of a computer system
JP4559794B2 (en) * 2004-06-24 2010-10-13 株式会社東芝 Microprocessor
US7698541B1 (en) * 2006-10-31 2010-04-13 Netapp, Inc. System and method for isochronous task switching via hardware scheduling
US8341604B2 (en) * 2006-11-15 2012-12-25 Qualcomm Incorporated Embedded trace macrocell for enhanced digital signal processor debugging operations
US20080301473A1 (en) 2007-05-29 2008-12-04 International Business Machines Corporation Method and system for hypervisor based power management
US8069354B2 (en) * 2007-08-14 2011-11-29 Mips Technologies, Inc. Power management for system having one or more integrated circuits
JP5326374B2 (en) * 2008-06-19 2013-10-30 富士通セミコンダクター株式会社 Processor, performance profiling apparatus, performance profiling program, and performance profiling method
CN102460400B (en) * 2009-06-29 2014-09-24 惠普开发有限公司 Hypervisor-based management of local and remote virtual memory pages
US8862914B2 (en) * 2010-02-26 2014-10-14 Microsoft Corporation Virtual machine power consumption measurement and management
US20120239323A1 (en) 2011-03-16 2012-09-20 Microsoft Corporation Virtual Machine Power Usage Estimations
US8635483B2 (en) 2011-04-05 2014-01-21 International Business Machines Corporation Dynamically tune power proxy architectures
US8683160B2 (en) 2011-06-22 2014-03-25 International Business Machines Corporation Method and apparatus for supporting memory usage accounting
US8966305B2 (en) * 2011-06-30 2015-02-24 Advanced Micro Devices, Inc. Managing processor-state transitions
US9311209B2 (en) 2012-11-27 2016-04-12 International Business Machines Corporation Associating energy consumption with a virtual machine

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090259345A1 (en) * 2008-04-09 2009-10-15 Takeshi Kato Operations management methods and devices thereof in information-processing systems
US20090307396A1 (en) * 2008-06-09 2009-12-10 International Business Machines Corporation Hypervisor to I/O Stack Conduit in Virtual Real Memory
US20100268975A1 (en) * 2009-04-15 2010-10-21 International Business Machines Corporation On-Chip Power Proxy Based Architecture
US20110055831A1 (en) * 2009-08-31 2011-03-03 International Business Machines Corporation Program execution with improved power efficiency
US20110161627A1 (en) * 2009-12-28 2011-06-30 Song Justin J Mechanisms to avoid inefficient core hopping and provide hardware assisted low-power state selection
US20110239015A1 (en) * 2010-03-25 2011-09-29 International Business Machines Corporation Allocating Computing System Power Levels Responsive to Service Level Agreements
US20130024705A1 (en) * 2011-02-04 2013-01-24 Takuya Kondoh Virtual computer system, device sharing control method, computer-readable recording medium, and integrated circuit
US20130346766A1 (en) * 2011-02-28 2013-12-26 Panasonic Corporation Power control device and power control method
US20130086395A1 (en) * 2011-09-30 2013-04-04 Qualcomm Incorporated Multi-Core Microprocessor Reliability Optimization
US9829951B2 (en) * 2011-12-13 2017-11-28 Intel Corporation Enhanced system sleep state support in servers using non-volatile random access memory
US20130155073A1 (en) * 2011-12-14 2013-06-20 Advanced Micro Devices, Inc. Method and apparatus for power management of a processor in a virtual environment
US9348391B1 (en) * 2012-06-28 2016-05-24 Amazon Technologies, Inc. Managing resource power states in shared environments
US20140019743A1 (en) * 2012-07-11 2014-01-16 Michael Joseph DeLuca Computing devices and methods for resetting inactivity timers on computing devices

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11714688B1 (en) * 2022-11-17 2023-08-01 Accenture Global Solutions Limited Sustainability-based computing resource allocation
WO2024147979A1 (en) * 2023-01-03 2024-07-11 Advanced Micro Devices, Inc. Chiplet interconnect power state management

Also Published As

Publication number Publication date
US9311209B2 (en) 2016-04-12
US9304886B2 (en) 2016-04-05
US20140149779A1 (en) 2014-05-29
CN103838668A (en) 2014-06-04
CN103838668B (en) 2018-02-02
US20140149752A1 (en) 2014-05-29
TW201423597A (en) 2014-06-16

Similar Documents

Publication Publication Date Title
US9311209B2 (en) Associating energy consumption with a virtual machine
Möbius et al. Power consumption estimation models for processors, virtual machines, and servers
US8612984B2 (en) Energy-aware job scheduling for cluster environments
US20090007108A1 (en) Arrangements for hardware and software resource monitoring
Noureddine et al. A review of energy measurement approaches
US10552761B2 (en) Non-intrusive fine-grained power monitoring of datacenters
US7272517B1 (en) Method and system for providing performance estimations for a specified power budget
US8104036B2 (en) Measuring processor use in a hardware multithreading processor environment
Lin et al. A cloud server energy consumption measurement system for heterogeneous cloud environments
Huang et al. Accurate fine-grained processor power proxies
US20140351613A1 (en) Virtual machine power consumption measurement and management
US8683160B2 (en) Method and apparatus for supporting memory usage accounting
US9672577B2 (en) Estimating component power usage from aggregate power usage
JP6683920B2 (en) Parallel processing device, power coefficient calculation program, and power coefficient calculation method
US9329670B2 (en) Predicting energy savings
Tang et al. Zero-cost, fine-grained power monitoring of datacenters using non-intrusive power disaggregation
Goel et al. Techniques to measure, model, and manage power
US20120330586A1 (en) Estimating component power usage from aggregate power usage
US20130211752A1 (en) Software power analysis
US8650367B2 (en) Method and apparatus for supporting memory usage throttling
US9002668B2 (en) Discovering an equipment power connection relationship
Liu et al. Sensible energy accounting with abstract metering for multicore systems
Goel Per-core power estimation and power aware scheduling strategies for CMPs
Minartz et al. Eeclust: energy-efficient cluster computing
Efros et al. FRESCO: A framework to estimate the energy consumption of computers

Legal Events

Date Code Title Description
AS Assignment

Owner name: INTERNATIONAL BUSINESS MACHINES CORPORATION, NEW Y

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:BROCK, BISHOP;GLOEKLER, TILMAN;LEFURGY, CHARLES R.;AND OTHERS;SIGNING DATES FROM 20121127 TO 20121130;REEL/FRAME:038247/0541

STPP Information on status: patent application and granting procedure in general

Free format text: NON FINAL ACTION MAILED

STPP Information on status: patent application and granting procedure in general

Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER

STPP Information on status: patent application and granting procedure in general

Free format text: FINAL REJECTION MAILED

STPP Information on status: patent application and granting procedure in general

Free format text: RESPONSE AFTER FINAL ACTION FORWARDED TO EXAMINER

STPP Information on status: patent application and granting procedure in general

Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION

STPP Information on status: patent application and granting procedure in general

Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER

STPP Information on status: patent application and granting procedure in general

Free format text: RESPONSE AFTER FINAL ACTION FORWARDED TO EXAMINER

STPP Information on status: patent application and granting procedure in general

Free format text: ADVISORY ACTION MAILED

STPP Information on status: patent application and granting procedure in general

Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION

STPP Information on status: patent application and granting procedure in general

Free format text: NON FINAL ACTION MAILED

STPP Information on status: patent application and granting procedure in general

Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER

STPP Information on status: patent application and granting procedure in general

Free format text: FINAL REJECTION MAILED

STPP Information on status: patent application and granting procedure in general

Free format text: RESPONSE AFTER FINAL ACTION FORWARDED TO EXAMINER

STPP Information on status: patent application and granting procedure in general

Free format text: ADVISORY ACTION MAILED

STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION