Technologies for out-of-band power-based task scheduling for data centers
Claim Score by NHIP
Abstract
Technologies for data center power management include a number of computing nodes in communication over a network. Each computing node establishes a firmware environment that monitors power consumption of the computing node and if the power consumption exceeds an optimal level broadcasts a request to offload tasks to the other nodes. The firmware environment of a receiving computing node traps the request and determines power requirements and/or compute requirements for the tasks based on the request. The firmware environment determines whether to accept the offloaded task based on the requirements and available resources of the computing node. If accepted, the requesting computing node offloads one or more tasks to the receiving nodes. The firmware environment may be established by a manageability engine of the computing node. Power consumption may be monitored on a per-component basis. Compute requirements may include processor requirements or other requirements. Other embodiments are described and claimed.

Term
Projected expiry 4 February 2035.
- Priority and filed
- Published
- Today
- Projected expiry
24 claims: 4 independent, 20 dependent
- 1A computing device for data center power management, the computing device comprising:a power management module to (i) determine, in a firmware environment of the computing device, a power consumption value of the computing device and (ii) determine, in the firmware environment, whether the power consumption value of the computing device has a predefined relationship to a threshold power consumption value;an offload request module to (i) broadcast, by the firmware environment using an out-of-band communication facility, an offload task request in response to a determination that the power consumption value has the predefined relationship to the threshold power consumption value and (ii) receive, by the firmware environment, a response from a remote computing device in response to a broadcast of the offload task request, wherein the response indicates that the remote computing device has capacity for an offloaded task;and a task offload module to offload the offloaded task to the remote computing device, wherein the offloaded task is to be executed by the remote computing device.
- 9One or more computer-readable storage media comprising a plurality of instructions that in response to being executed cause a computing device to:determine, by a firmware environment of the computing device, a power consumption value of the computing device;determine, by the firmware environment, whether the power consumption value of the computing device has a predefined relationship to a threshold power consumption value;broadcast, by the firmware environment using an out-of-band communication facility, an offload task request in response to determining the power consumption value has the predefined relationship to the threshold power consumption value;receive, by the firmware environment, a response from a remote computing device in response to broadcasting the offload task request, wherein the response indicates that the remote computing device has capacity for an offloaded task;and offload the offloaded task to the remote computing device, wherein the offloaded task is to be executed by the remote computing device.
- 15A computing device for data center power management, the computing device comprising:an offload accept module to: receive, by a firmware environment of the computing device via an out-of-band communication facility, an offload task request broadcast from a remote computing device;determine, by the firmware environment, a power requirement of the offload task request;determine, by the firmware environment, whether to accept the offload task request based on the power requirement of the offload task request and available resources of the computing device;transmit, by the firmware environment, an offload task acceptance to the remote computing device in response to a determination to accept the offload task request;and receive, by the firmware environment, an offloaded task from the remote computing device in response to transmission of the offload task acceptance;and a task offload module to execute the offloaded task in response to receipt of the offloaded task.
- 21Broadest claimClaim Score 50, average(NHIP)One or more computer-readable storage media comprising a plurality of instructions that in response to being executed cause a computing device to:receive, by a firmware environment of the computing device via an out-of-band communication facility, an offload task request broadcast from a remote computing device;determine, by the firmware environment, a power requirement of the offload task request;determine, by the firmware environment, whether to accept the offload task request based on the power requirement of the offload task request and available resources of the computing device;transmit, by the firmware environment, an offload task acceptance to the remote computing device in response to determining to accept the offload task request;receive, by the firmware environment, an offloaded task from the remote computing device in response to transmitting the offload task acceptance;and execute the offloaded task in response to receiving the offloaded task.
Independent claims4
122 paragraphs in 4 sections, as filed
BACKGROUND
0001For data centers, power consumption and thermal efficiency are major contributors to overall utilization and efficiency. In typical data centers, scheduling of computational work is performed along two major axes: power and compute. Power-based management is typically performed on a chassis/enclosure/rack level. Power considerations are typically made in advance, for example during build-out of the data center. Power is typically managed on a per-host level indirectly using hardware and/or firmware features (e.g., frequency scaling, sleep states, etc.) In contrast, processor, memory, storage, I/O, or other compute resource scheduling is typically performed on the system or data center level, sometimes using a centralized batch/grid/cloud scheduler entity. Compute-resource scheduling may be performed dynamically, for example using operating system metrics. Certain third party products may provide centralized monitoring of operating-system-level usage metrics for a data center.
BRIEF DESCRIPTION OF THE DRAWINGS
0002The concepts described herein are illustrated by way of example and not by way of limitation in the accompanying figures. For simplicity and clarity of illustration, elements illustrated in the figures are not necessarily drawn to scale. Where considered appropriate, reference labels have been repeated among the figures to indicate corresponding or analogous elements.
0003<figref idref="DRAWINGS">FIG. 1</figref> is a simplified block diagram of at least one embodiment of a system for power-based task scheduling;
0004<figref idref="DRAWINGS">FIG. 2</figref> is a simplified block diagram of at least one embodiment of an environment that may be established by a computing node of <figref idref="DRAWINGS">FIG. 1</figref>;
0005<figref idref="DRAWINGS">FIG. 3</figref> is a simplified flow diagram of at least one embodiment of a method for power-based task scheduling that may be executed by the computing node of <figref idref="DRAWINGS">FIGS. 1 and 2</figref>;
0006<figref idref="DRAWINGS">FIG. 4</figref> is a simplified flow diagram of at least one embodiment of a method for offloading tasks that may be executed by the computing node of <figref idref="DRAWINGS">FIGS. 1 and 2</figref>; and
0007<figref idref="DRAWINGS">FIG. 5</figref> is a simplified flow diagram of at least one embodiment of a method for accepting offloaded tasks that may be executed by the computing node of <figref idref="DRAWINGS">FIGS. 1 and 2</figref>.
DETAILED DESCRIPTION OF THE DRAWINGS
0008While the concepts of the present disclosure are susceptible to various modifications and alternative forms, specific embodiments thereof have been shown by way of example in the drawings and will be described herein in detail. It should be understood, however, that there is no intent to limit the concepts of the present disclosure to the particular forms disclosed, but on the contrary, the intention is to cover all modifications, equivalents, and alternatives consistent with the present disclosure and the appended claims.
0009References in the specification to “one embodiment,” “an embodiment,” “an illustrative embodiment,” etc., indicate that the embodiment described may include a particular feature, structure, or characteristic, but every embodiment may or may not necessarily include that particular feature, structure, or characteristic. Moreover, such phrases are not necessarily referring to the same embodiment. Further, when a particular feature, structure, or characteristic is described in connection with an embodiment, it is submitted that it is within the knowledge of one skilled in the art to effect such feature, structure, or characteristic in connection with other embodiments whether or not explicitly described. Additionally, it should be appreciated that items included in a list in the form of “at least one of A, B, and C” can mean (A); (B); (C): (A and B); (A and C); (B and C); or (A, B, and C). Similarly, items listed in the form of “at least one of A, B, or C” can mean (A); (B); (C): (A and B); (A and C); (B and C); or (A, B, and C).
0010The disclosed embodiments may be implemented, in some cases, in hardware, firmware, software, or any combination thereof. The disclosed embodiments may also be implemented as instructions carried by or stored on one or more transitory or non-transitory machine-readable (e.g., computer-readable) storage media, which may be read and executed by one or more processors. A machine-readable storage medium may be embodied as any storage device, mechanism, or other physical structure for storing or transmitting information in a form readable by a machine (e.g., a volatile or non-volatile memory, a media disc, or other media device).
0011In the drawings, some structural or method features may be shown in specific arrangements and/or orderings. However, it should be appreciated that such specific arrangements and/or orderings may not be required. Rather, in some embodiments, such features may be arranged in a different manner and/or order than shown in the illustrative figures. Additionally, the inclusion of a structural or method feature in a particular figure is not meant to imply that such feature is required in all embodiments and, in some embodiments, may not be included or may be combined with other features.
0012Referring now to <figref idref="DRAWINGS">FIG. 1</figref>, in an illustrative embodiment, a system <b>100</b> for power-based task scheduling includes two or more computing nodes <b>102</b> in communication over a network <b>104</b>. In use, as discussed in more detail below, each computing node <b>102</b> may execute one or more tasks, such as applications, scripts, jobs, or other workloads. A firmware environment of each computing node <b>102</b> monitors power consumption of the corresponding computing node <b>102</b> and, if the power consumption exceeds an optimal level, may broadcast a request to offload a task to other, remote computing nodes <b>102</b> in the system <b>100</b> via the network <b>104</b>. The offload task request may include, for example, the power requirements for the offloaded task as well as one or more compute requirements (such as processor requirements, memory requirements storage requirements, and/or I/O requirements). The firmware environment of the remote computing nodes <b>102</b> may trap the offload task request and determine whether to accept the offloaded task based on the requirements of the request and the available power and compute resources of the corresponding remote computing node <b>102</b>. Thus, the tasks may be distributed among the computing nodes <b>102</b> of the system <b>100</b> based on real-time power consumption data and on computational utilization metrics, using firmware capabilities of the computing nodes <b>102</b>. The system <b>100</b> may improve power efficiency and/or utilization of a data center by scheduling tasks based on both power consumption and computational utilization across the data center. Additionally, the system <b>100</b> may perform task scheduling using native hardware and firmware resources of the computing nodes <b>102</b>, without requiring specialized operating system tools or third-party tools. Thus task scheduling may not be restricted to computing nodes <b>102</b> produced by any specific vendor. Additionally or alternatively, although illustrated as performing decentralized scheduling among multiple computing nodes <b>102</b>, in some embodiments the system <b>100</b> may include a centralized manager to similarly schedule tasks among the computing nodes <b>102</b>.
0013Each computing node <b>102</b> may be embodied as any type of computation or computer device capable of performing the functions described herein, including, without limitation, a computer, a multiprocessor system, a server, a rack-mounted server, a blade server, a laptop computer, a notebook computer, a network appliance, a web appliance, a distributed computing system, a processor-based system, and/or a consumer electronic device. As shown in <figref idref="DRAWINGS">FIG. 1</figref>, each computing node <b>102</b> illustratively includes a processor <b>120</b>, an input/output subsystem <b>122</b>, a memory <b>124</b>, a data storage device <b>126</b>, and communication circuitry <b>128</b>. Of course, the computing node <b>102</b> may include other or additional components, such as those commonly found in a server device (e.g., various input/output devices), in other embodiments. Additionally, in some embodiments, one or more of the illustrative components may be incorporated in, or otherwise form a portion of, another component. For example, the memory <b>124</b>, or portions thereof, may be incorporated in one or more processor <b>120</b> in some embodiments.
0014The processor <b>120</b> may be embodied as any type of processor capable of performing the functions described herein. For example, the processor <b>120</b> may be embodied as a single or multi-core processor(s), digital signal processor, microcontroller, or other processor or processing/controlling circuit. Similarly, the memory <b>124</b> may be embodied as any type of volatile or non-volatile memory or data storage capable of performing the functions described herein. In operation, the memory <b>124</b> may store various data and software used during operation of the computing node <b>102</b> such as operating systems, applications, programs, libraries, and drivers. The memory <b>124</b> is communicatively coupled to the processor <b>120</b> via the I/O subsystem <b>122</b>, which may be embodied as circuitry and/or components to facilitate input/output operations with the processor <b>120</b>, the memory <b>124</b>, and other components of the computing node <b>102</b>. For example, the I/O subsystem <b>122</b> may be embodied as, or otherwise include, memory controller hubs, input/output control hubs, firmware devices, communication links (i.e., point-to-point links, bus links, wires, cables, light guides, printed circuit board traces, etc.) and/or other components and subsystems to facilitate the input/output operations. In some embodiments, the I/O subsystem <b>122</b> may form a portion of a system-on-a-chip (SoC) and be incorporated, along with the processors <b>120</b>, the memory <b>124</b>, and other components of the computing node <b>102</b>, on a single integrated circuit chip.
0015The data storage device <b>126</b> may be embodied as any type of device or devices configured for short-term or long-term storage of data such as, for example, memory devices and circuits, memory cards, hard disk drives, solid-state drives, or other data storage devices. The data storage device <b>126</b> may store operating system or application data used to execute one or more tasks on the computing node <b>102</b>. Additionally, in some embodiments, the data storage device <b>126</b> may include a firmware volume or other storage location including or establishing a firmware environment, such as a UEFI firmware partition.
0016The communication circuitry <b>128</b> of the computing node <b>102</b> may be embodied as any communication circuit, device, or collection thereof, capable of enabling communications between the computing nodes <b>102</b> and/or other remote devices over the network <b>104</b>. The communication circuitry <b>128</b> may be configured to use any one or more communication technology (e.g., wired or wireless communications) and associated protocols (e.g., InfiniBand®, Ethernet, Bluetooth®, Wi-Fi®, WiMAX, etc.) to effect such communication. The communication circuitry <b>128</b> may include one or more network adapters and/or network ports that may be used concurrently to transfer data over the network <b>104</b>.
0017In some embodiments, the computing node <b>102</b> may include a manageability engine <b>130</b>. The manageability engine <b>130</b> is embodied as a device that provides remote configuration, control, and/or management of the computing node <b>102</b>. The manageability engine <b>130</b> may include an out-of-band processor, which may be embodied as a processor, microcontroller, or other control circuit separate and distinct from the main processor <b>120</b> of the computing node <b>102</b>. As such, the manageability engine <b>130</b> is capable of operating independently of the state of the rest of the computing node <b>102</b>. That is, the manageability engine <b>130</b> is capable of operating regardless of the operating state of the processor <b>120</b>, including when the computing node <b>102</b> is powered off, when the computing node <b>102</b> is executing a pre-boot firmware environment, when an operating system of the computing node <b>102</b> is active, and when the operating system is crashed or otherwise inactive. The manageability engine <b>130</b> may establish a firmware environment that is separate and distinct from the software environment established by the processor <b>120</b>. The manageability engine <b>130</b> is also capable of communicating using the communication circuitry <b>128</b> independently of the state of the computing node <b>102</b>, also known as “out-of-band” communication. In some embodiments, the manageability engine <b>130</b> may include a dedicated network adaptor for such out-of-band communication, in addition to, or instead of, connecting via the communication circuitry <b>128</b>. In some embodiments, the manageability engine <b>130</b> may be incorporated into or otherwise form a part of the I/O subsystem <b>122</b>.
0018As discussed in more detail below, the computing nodes <b>102</b> may be configured to transmit and receive data with each other and/or other devices of the system <b>100</b> over the network <b>104</b>. The network <b>104</b> may be embodied as any number of various wired and/or wireless networks. For example, the network <b>104</b> may be embodied as, or otherwise include, a switched fabric network, a wired or wireless local area network (LAN), a wired or wireless wide area network (WAN), a cellular network, and/or a publicly-accessible, global network such as the Internet. As such, the network <b>104</b> may include any number of additional devices, such as additional computers, routers, and switches, to facilitate communications among the devices of the system <b>100</b>.
0019Referring now to <figref idref="DRAWINGS">FIG. 2</figref>, in an illustrative embodiment, each computing node <b>102</b> may establish an environment <b>200</b> during operation. The illustrative environment <b>200</b> includes an operating system <b>202</b> and a firmware environment <b>208</b>. The operating system <b>202</b> establishes a task execution module <b>204</b> and a task offload module <b>206</b>, and the firmware environment <b>208</b> establishes a power management module <b>210</b>, an offload request module <b>212</b>, an offload accept module <b>214</b>, and an out-of-band (<b>00</b>B) communications module <b>216</b>. The various modules of the environment <b>200</b> may be embodied as hardware, firmware, software, or a combination thereof. For example, each of the modules, logic, and other components of the environment <b>200</b> may form a portion of, or otherwise be established by, the processor <b>120</b>, the manageability engine <b>130</b>, or other hardware components of the computing node <b>102</b>. As such, in some embodiments, one or more of the modules of the environment <b>200</b> may be embodied as a circuit or collection of electrical devices (e.g., a task execution circuit, a task offload circuit, a power management circuit, etc.).
0020The operating system <b>202</b> may be embodied as any operating system, virtual machine monitor, hypervisor, or other control structure of the computing node <b>102</b>. For example, the operating system <b>202</b> may be embodied as Microsoft® Windows™ or Linux®. The operating system <b>202</b> may execute and otherwise manage applications, processes, and other compute jobs on the computing node <b>102</b>. The operating system <b>202</b> may also provide dynamic usage information of the computing node <b>102</b>, such as processor usage, memory usage, storage usage, or I/O usage. The usage information may be provided for the computing node <b>102</b> as a whole, on a per-task or per-job basis, or in any other manner. As described above, the operating system <b>202</b> may establish the task execution module <b>204</b> and the task offload module <b>206</b>.
0021The task execution module <b>204</b> is configured to execute one or more tasks within the operating system <b>202</b>. Each task may be embodied as any application, script, job, or other workload to be executed by the computing node <b>102</b>. The task execution module <b>204</b> may establish a queue or other structure to store and organize the tasks prior to executing them.
0022The task offload module <b>206</b> is configured to offload one or more tasks to a remote computing node <b>102</b> to be executed, and to execute offloaded tasks accepted from a remote computing device <b>102</b>. For example, the computing node <b>102</b> may coordinate with the task execution module <b>204</b> to add and/or remove tasks to be executed by the computing node <b>102</b>, and may transmit and/or receive tasks with remote computing nodes <b>102</b>. The task offload module <b>206</b> may offload and/or receive tasks in response to commands received from the firmware environment <b>208</b>, for example from the offload request module <b>212</b> and/or the offload accept module <b>214</b>, as further described below.
0023The firmware environment <b>208</b> may be embodied as any execution environment of the computing node <b>102</b> that is independent of the operating system <b>202</b>. For example, the firmware environment <b>208</b> may be established by the manageability engine <b>130</b> and/or by the processor <b>120</b>. The firmware environment <b>208</b> is typically at a lower level of abstraction or otherwise has closer access to hardware of the computing node <b>102</b>, compared to the operating system <b>202</b>. The operating system <b>202</b> may interact with the firmware environment <b>208</b> through one or more operating system drivers. For example, the operating system <b>202</b> may use an operating system driver to interact with a UEFI BIOS of the computing node <b>102</b>. The UEFI BIOS may establish the firmware environment <b>208</b> and/or may communicate with the firmware environment <b>208</b> established by the manageability engine <b>130</b>. As the firmware environment <b>208</b> is independent of the operating system <b>202</b>, some or all operations performed by modules of the firmware environment <b>208</b> may be performed without involvement of the operating system <b>202</b>.
0024The power management module <b>210</b> is configured to determine the current power consumption of the computing node <b>102</b> and determine whether the power consumption exceeds an optimal level. For example, the power management module <b>210</b> may compare the current power consumption of the computing node <b>102</b> to a threshold power consumption level. The power management module <b>210</b> may monitor the current power consumption of individual components of the computing node <b>102</b>, such as the processor <b>120</b>, the memory <b>124</b>, the data storage device <b>126</b>, and/or the communication circuitry <b>128</b>.
0025The offload request module <b>212</b> is configured to broadcast, using an out-of-band communication facility, an offload task request to a defined network environment after determining that the current power consumption of the computing node <b>102</b> exceeds the optimal level. The offload request module <b>212</b> is also configured to determine a power requirement for a task to be offloaded when the power consumption of the computing node <b>102</b> exceeds the optimal level. The offload request module <b>212</b> may also determine one or more compute requirements for the task to be offloaded in addition to the power requirements, for example using operating system <b>202</b> metrics associated with the task. The offload task requirements are included in the offload task request broadcast to the remote computing nodes <b>102</b>. The offload request module <b>212</b> may cause the operating system <b>202</b> to offload a task in response to receiving a task acceptance from a remote computing device <b>102</b>. For example, the offload request module <b>212</b> may transmit a command from the firmware environment <b>208</b> to the operating system <b>202</b>. The offload task request may be broadcast to one or more remote computing nodes <b>102</b> that each also include the offload accept module <b>214</b>.
0026The offload accept module <b>214</b> is configured to receive an offload task request from a remote computing node <b>102</b> and determine a power requirement and any compute requirements associated with the offload task request. The offload accept module <b>214</b> is configured to determine whether to accept the offload task request based on the requirements of offload task request and on available resources of the computing node <b>102</b> (including power resources and/or compute resources). The offload accept module <b>214</b> is configured to transmit an offload task acceptance to the remote computing node <b>102</b> and to receive an offloaded task from the remote computing node <b>102</b> in return.
0027The OOB communications module <b>216</b> is configured to transmit and receive data using an out-of-band communication facility, such as an out-of-band network capability of the manageability engine <b>130</b>. The OOB communications module <b>216</b> may transmit and/or receive task offload requests, task offload acceptances, offloaded tasks, and/or other data with one or more remote computing nodes <b>102</b>.
0028Referring now to <figref idref="DRAWINGS">FIG. 3</figref>, in use, each computing node <b>102</b> may execute a method <b>300</b> for power-based task scheduling. The method <b>300</b> begins with block <b>302</b>, in which the computing node <b>102</b> receives a list of tasks to be executed. Each task may be embodied as any application, script, job, or other workload to be executed by the computing node <b>102</b>. The list of tasks may be generated or otherwise submitted by a data center manager, cloud operating system, system administrator, or any other source. It should be noted that in some embodiments, the list of tasks may be submitted to any computing node <b>102</b> in a data center, and during execution the tasks may be distributed within the data center as described below.
0029In block <b>304</b>, the computing node <b>102</b> begins executing the tasks previously received. The computing node <b>102</b> may execute the tasks, for example, by executing one or more applications, processes, scripts, jobs, or other programs within the operating system <b>202</b>. After starting to execute the tasks, the method <b>300</b> proceeds concurrently to block <b>306</b>, <b>308</b>. While executing blocks <b>306</b>, <b>308</b>, the computing node <b>102</b> may continue to execute one or more of the tasks.
0030In block <b>306</b>, the computing node <b>102</b> monitors power consumption of the computing node <b>102</b> using the firmware environment <b>208</b> and may offload one or more tasks to remote computing nodes <b>102</b>. The computing node <b>102</b> may offload tasks, for example, if the current power consumption of the computing node <b>102</b> exceeds a predefined threshold. The power consumption monitoring and task offloading performed by the firmware environment <b>208</b> may be transparent to the operating system <b>202</b> and/or to the tasks executed by the operating system <b>202</b>. One embodiment of a method for monitoring power consumption and offloading tasks is described below in connection with <figref idref="DRAWINGS">FIG. 4</figref>.
0031In block <b>308</b>, the computing node <b>102</b> monitors for task offload requests received from remote computing nodes <b>102</b> using the firmware environment <b>208</b>. The computing node <b>102</b> may evaluate the offload requests to determine if power resources and/or compute resources are available to execute the offloaded task. If so, the computing node <b>102</b> may accept the offloaded task for execution. One embodiment of a method for accepting offloaded tasks is described below in connection with <figref idref="DRAWINGS">FIG. 5</figref>.
0032After executing blocks <b>306</b>, <b>308</b>, the method <b>300</b> loops back to block <b>304</b> to continue executing tasks. The computing node <b>102</b> may start executing offloaded tasks received from remote computing nodes <b>102</b>, and may stop executing tasks that have been offloaded to remote computing nodes <b>102</b>. Additionally, although illustrated as performing the blocks <b>306</b>, <b>308</b> concurrently and then looping back to block <b>304</b>, it should be understood that in some embodiments the computing node <b>102</b> may perform those operations in any order including concurrently, sequentially, continually, periodically, or in an interleaved manner. For example, the blocks <b>306</b>, <b>308</b> may be executed by the manageability engine <b>130</b> concurrently with the block <b>304</b> executed by the processor <b>120</b>.
0033Referring now to <figref idref="DRAWINGS">FIG. 4</figref>, in use, each computing node <b>102</b> may execute a method <b>400</b> for monitoring power consumption and offloading tasks. The method <b>400</b> is executed by the firmware environment <b>208</b>; for example by the processor <b>120</b> in a UEFI BIOS firmware environment, by the manageability engine <b>130</b>, or by any other firmware component of the computing node <b>102</b>. The method <b>400</b> begins with block <b>402</b>, in which the computing node <b>102</b> monitors power consumption of the computing node <b>102</b>. The computing node <b>102</b> may monitor, for example, electrical power consumed (e.g., amps of current or electrical wattage), temperature, cooling capacity used, or any other quantity indicative of the power consumed by the computing node <b>102</b>. In some embodiments, in block <b>404</b>, the computing node <b>102</b> may determine the per-component power consumption of one or more components of the computing node <b>102</b>. For example, the computing node <b>102</b> may determine the power consumption of the processor <b>120</b>, the I/O subsystem <b>122</b>, the memory <b>124</b>, the data storage device <b>126</b>, the communication circuitry <b>128</b>, and/or other components such as a system power supply.
0034In block <b>406</b>, the computing node <b>102</b> determines whether the power consumption of the computing node <b>102</b> is above an optimal level. The computing node <b>102</b> may use any appropriate technique to determine whether the current power consumption exceeds the optimal level. The computing node <b>102</b> may determine, for example, whether the power consumption exceeds a predetermined threshold. If not above the optimal level, the method <b>400</b> loops back to block <b>402</b> to continue monitoring power consumption. If the power consumption is above the optimal level, the method <b>400</b> advances to block <b>408</b>.
0035In block <b>408</b>, the computing node <b>102</b> determines a power requirement associated with a task that may be offloaded to a remote computing node <b>102</b>. The power requirement may indicate the amount of power required to execute the offloaded task. For example, the power requirement may specify a particular wattage or a relative power requirement (e.g., high, low, or other relative value). In some embodiments, in block <b>410</b> the computing node <b>102</b> may determine one or more additional compute requirements of the offloaded task. The compute requirements may be embodied as, for example, processor utilization requirements, memory requirements, storage requirements, I/O requirements, and/or any other compute resource required by the offloaded task. The firmware environment <b>208</b> of the computing node <b>102</b> may determine one or more of the compute requirements by communicating with the operating system <b>202</b>. For example, the firmware environment <b>208</b> may communicate with the operating system <b>202</b> to determine processor utilization, memory utilization, storage utilization, I/O utilization, or other requirements of the offloaded task.
0036In block <b>412</b>, the computing node <b>102</b> broadcasts an offload task request using an out-of-band communication facility of the computing node <b>102</b>. For example, the computing node <b>102</b> may broadcast the offload task request using an out-of-band network capability of the manageability engine <b>130</b>. The offload task request may include the power requirements of the offloaded task as well as one or more compute requirements (e.g., processor requirements, memory requirements, storage requirements, or I/O requirements). The offload task request may be broadcast to all remote computing nodes <b>102</b> in a defined environment such as a data center. The offload task request may be broadcast, for example, to all remote computing nodes <b>102</b> in a particular network or subnetwork, to a predefined collection of remote computing nodes <b>102</b>, or to any other defined environment. In the illustrative embodiment, the offload task request is broadcast using the simple network management protocol (SNMP). However, any appropriate network protocol providing for transport of the offload task request including a payload (e.g. the power requirements and compute requirements) may be used.
0037In block <b>414</b>, the computing node <b>102</b> receives an offload task acceptance from one or more remote computing nodes <b>102</b>. The offload task acceptance indicates that the sending remote computing node <b>102</b> has capacity to receive the offloaded task. For example, the remote computing node <b>102</b> may have power capacity or thermal capacity to execute the offloaded task. In some embodiments, the remote computing node <b>102</b> may also have compute capacity for the compute requirements (e.g., processor capacity, memory capacity, storage capacity, or I/O capacity). If offload task acceptances are received from more than one remote computing node <b>102</b>, the computing node <b>102</b> may use any appropriate algorithm to identify a remote computing node <b>102</b> to receive the offloaded task. For example, in some embodiments, the computing node <b>102</b> may select the first remote computing node <b>102</b> to respond with an offload task acceptance. Additionally or alternatively, in some embodiments, the computing node <b>102</b> may evaluate one or more metrics supplied by the remote computing nodes <b>102</b>. For example, the computing node <b>102</b> may select the remote computing node <b>102</b> having the most available power capacity and/or compute capacity.
0038In block <b>416</b>, the computing node <b>102</b> commands the operating system <b>202</b> to offload the task to the remote computing node <b>102</b> identified in block <b>414</b>. The firmware environment <b>208</b> may transmit or otherwise communicate the command to offload the task to the operating system <b>202</b>. In some embodiments, in block <b>418</b>, the computing node <b>102</b> may issue the command using a local console of the manageability engine <b>130</b>.
0039In block <b>420</b>, the computing node <b>102</b> offloads the task to the remote computing node <b>102</b>. The operating system <b>202</b> may offload the task, for example by removing the task from a task queue and transmitting the task to the remote computing node <b>102</b>. In some embodiments, in block <b>422</b> the computing node <b>102</b> may offload the task by sending a task command string to the remote computing node <b>102</b>. For example, the computing node <b>102</b> may send a command string to a remote console of the manageability engine <b>130</b> of the remote computing node <b>102</b>. After offloading the task, the method <b>400</b> loops back to block <b>402</b> to continue monitoring power consumption.
0040Referring now to <figref idref="DRAWINGS">FIG. 5</figref>, in use, each computing node <b>102</b> may execute a method <b>500</b> for accepting offloaded tasks. The method <b>500</b> is executed by the firmware environment <b>208</b>; for example by the processor <b>120</b> in a UEFI BIOS firmware environment, by the manageability engine <b>130</b>, or by any other firmware component of the computing node <b>102</b>. The method <b>500</b> begins with block <b>502</b>, in which the computing node <b>102</b> monitors for offload task requests broadcast from a remote computing node <b>102</b>. The computing node <b>102</b> may establish a network listener and attempt to trap any offload task requests broadcast over the network <b>104</b>. As described above in connection with <figref idref="DRAWINGS">FIG. 4</figref>, the offload task request may be broadcast by the remote computing node <b>102</b> in response to the power consumption of the remote computing node <b>102</b> exceeding an optimal level. The offload task request may include a power requirement for the task to be offloaded, and in some embodiments may include one or more additional compute requirements (e.g., processor requirements, memory requirements, storage requirements, or I/O requirements). The offload task request may be broadcast using the simple network management protocol (SNMP) or any other appropriate network protocol.
0041In block <b>504</b>, the computing node <b>102</b> determines whether an offload task request has been trapped. If not, the method <b>500</b> loops back to block <b>502</b> to continue monitoring for offload task requests. If an offload task request has been trapped, the method <b>500</b> advances to block <b>506</b>.
0042In block <b>506</b>, the computing node <b>102</b> calculates one or more requirements of the offloaded task. The offloaded task requirements may describe any computing resources, compatible hardware, compatible hardware features, compatible software environments, or other prerequisites required for the computing node <b>102</b> to execute the offloaded task. In some embodiments, in block <b>508</b> the computing node <b>102</b> may calculate power requirements of the offloaded task. For example, the computing node <b>102</b> may calculate, predict, or otherwise determine an amount of electrical power required to execute the offloaded task. Similarly, the computing node <b>102</b> may calculate the thermal load, cooling requirements, or any other measure indicative of the amount of power used by executing the offloaded task. In some embodiments, in block <b>510</b>, the computing node <b>102</b> may calculate one or more compute requirements of the offloaded task. For example, the computing node <b>102</b> may calculate or otherwise predict processor requirements, memory requirements, storage requirements, or I/O requirements of the computing node <b>102</b>.
0043In block <b>512</b>, the computing node <b>102</b> determines whether to accept the offloaded task based on the offload task requirements and on the available resources of the computing node <b>102</b>. For example, the computing node <b>102</b> may determine whether power capacity exists for the power requirements of the offloaded task. As another example, the computing node <b>102</b> may also consider whether computational capacity exists for one or more compute requirements. For example, in additional to considering power capacity, the computing node <b>102</b> may determine if processor capacity exists for the processor requirements of the offloaded task. The computing node <b>102</b> may determine not to accept an offload task request if power capacity is available but sufficient processor capacity is not available for the offloaded task. Instead, the computing node <b>102</b> may accept an offload task request for a storage-bound task, an I/O-bound task, or another task with lower processor requirements. The computing node <b>102</b> may make similar determinations for any other requirements of the offloaded task. In block <b>514</b>, the computing node <b>102</b> determines whether the offloaded task will be accepted. If not, the method <b>500</b> loops back to block <b>502</b> to continue monitoring for offload requests. If the offloaded task will be accepted, the method <b>500</b> advances to block <b>516</b>.
0044In block <b>516</b>, the computing node <b>102</b> transmits an offloaded task acceptance to the remote computing node <b>102</b>. The offloaded task acceptance indicates that the computing node <b>102</b> has capacity to execute the offloaded task based on the offloaded task requirements. The offloaded task acceptance may be transmitted using an out-of-band networking capability of the computing node <b>102</b>, such as an out-of-band networking capability of the manageability engine <b>130</b>. In some embodiments, the offloaded task acceptance may also include one or more metrics related to the computing node <b>102</b>, such as power consumption metrics, processor usage metrics, storage usage metrics, I/O usage metrics, or other metrics. As described above in connection with <figref idref="DRAWINGS">FIG. 4</figref>, the remote computing node <b>102</b> may use any technique to determine whether to offload the task in response to receiving the offloaded task acceptance.
0045In block <b>518</b>, the computing node <b>102</b> receives an offloaded task from the remote computing node <b>102</b>. The offloaded task may be represented in any appropriate format. The offloaded task may be received using an out-of-band networking capability of the computing node <b>102</b>, such as an out-of-band networking capability of the manageability engine <b>130</b>. In some embodiments, in block <b>520</b> the computing node <b>102</b> may receive the offloaded task by receiving a task command string. For example, the computing node <b>102</b> may receive a task command string using a remote console of the manageability engine <b>130</b>.
0046In block <b>522</b>, the computing node <b>102</b> executes the offloaded task. The offloaded task may be executed, for example, by being added to a task queue of the operating system <b>202</b> and then executed within the operating system <b>202</b>. In some embodiments, in block <b>524</b> the computing node <b>102</b> may execute the offloaded task through a management agent shell of the manageability engine <b>130</b>. In some embodiments, in block <b>526</b>, the computing node <b>102</b> may execute the offloaded task by issuing a command to the operating system <b>202</b> using a local console of the manageability engine <b>130</b>. After starting to execute the offloaded task, the method <b>500</b> loops back to block <b>502</b> to continue monitoring for additional offload task requests.
EXAMPLES
0047Illustrative examples of the technologies disclosed herein are provided below. An embodiment of the technologies may include any one or more, and any combination of, the examples described below.
0048Example 1 includes a computing device for data center power management, the computing device comprising a power management module to (i) determine, in a firmware environment of the computing device, a power consumption value of the computing device and (ii) determine, in the firmware environment, whether the power consumption value of the computing device has a predefined relationship to a threshold power consumption value; an offload request module to (i) broadcast, by the firmware environment using an out-of-band communication facility, an offload task request in response to a determination that the power consumption value has the predefined relationship to the threshold power consumption value and (ii) receive, by the firmware environment, a response from a remote computing device in response to a broadcast of the offload task request, wherein the response indicates that the remote computing device has capacity for an offloaded task; and a task offload module to offload the offloaded task to the remote computing device, wherein the offloaded task is to be executed by the remote computing device.
0049Example 2 includes the subject matter of Example 1, and wherein to determine the power consumption value comprises to determine a power consumption value for a component of the computing device.
0050Example 3 includes the subject matter of any of Examples 1 and 2, and wherein to determine whether the power consumption value of the computing device has the predefined relationship to the threshold power consumption value comprises to determine whether the power consumption value exceeds the threshold power consumption value.
0051Example 4 includes the subject matter of any of Examples 1-3, and wherein the offload request module is further to determine, by the firmware environment, a power requirement of the offload task request in response to the determination that the power consumption value has the predefined relationship to the threshold power consumption value; wherein to broadcast the offload task request comprises to broadcast the power requirement.
0052Example 5 includes the subject matter of any of Examples 1-4, and wherein the offload request module is further to determine, by the firmware environment, a compute requirement of the offload task request in response to the determination that the power consumption value has the predefined relationship to the threshold power consumption value; wherein to broadcast the offload task request further comprises to broadcast the compute requirement.
0053Example 6 includes the subject matter of any of Examples 1-5, and wherein the compute requirement comprises a processor requirement, a memory requirement, a storage requirement, or an I/O requirement.
0054Example 7 includes the subject matter of any of Examples 1-6, and wherein to broadcast the offload task request comprises to transmit the offload task request via a simple network management protocol (SNMP).
0055Example 8 includes the subject matter of any of Examples 1-7, and wherein to broadcast the offload task request comprises to broadcast the offload task request to a network or a sub-network.
0056Example 9 includes the subject matter of any of Examples 1-8, and wherein to broadcast the offload task request comprises to broadcast the offload task request to a predefined collection of remote computing devices.
0057Example 10 includes the subject matter of any of Examples 1-9, and wherein the offload request module is further to transmit, by the firmware environment, a command to offload the offloaded task to an operating system of the computing device in response to receipt of the response from the remote computing device; wherein to offload the offloaded task comprises to offload the offloaded task by the operating system in response to transmission of the command to the operating system.
0058Example 11 includes the subject matter of any of Examples 1-10, and wherein to offload the offloaded task to the remote computing device comprises to transmit a command string to the remote computing device.
0059Example 12 includes the subject matter of any of Examples 1-11, and wherein to offload the offloaded task to the remote computing device further comprises to transmit the command string to a remote console of a firmware environment of the remote computing device.
0060Example 13 includes the subject matter of any of Examples 1-12, and further including a manageability engine to establish the firmware environment.
0061Example 14 includes the subject matter of any of Examples 1-13, and further including an offload accept module to receive, by the firmware environment via the out-of-band communication facility, a second offload task request broadcast from a second remote computing device; determine, by the firmware environment, a power requirement of the second offload task request; determine, by the firmware environment, whether to accept the second offload task request based on the power requirement of the second offload task request and available resources of the computing device; transmit, by the firmware environment, an offload task acceptance to the second remote computing device in response to a determination to accept the second offload task request; and receive, by the firmware environment, a second offloaded task from the second remote computing device in response to transmission of the offload task acceptance; wherein the task offload module is further to execute the second offloaded task in response to receipt of the second offloaded task.
0062Example 15 includes a computing device for data center power management, the computing device comprising an offload accept module to receive, by a firmware environment of the computing device via an out-of-band communication facility, an offload task request broadcast from a remote computing device; determine, by the firmware environment, a power requirement of the offload task request; determine, by the firmware environment, whether to accept the offload task request based on the power requirement of the offload task request and available resources of the computing device; transmit, by the firmware environment, an offload task acceptance to the remote computing device in response to a determination to accept the offload task request; and receive, by the firmware environment, an offloaded task from the remote computing device in response to transmission of the offload task acceptance; and a task offload module to execute the offloaded task in response to receipt of the offloaded task.
0063Example 16 includes the subject matter of Example 15, and wherein to determine whether to accept the offload task comprises to determine a power consumption value of the computing device.
0064Example 17 includes the subject matter of any of Examples 15 and 16, and wherein to determine whether to accept the offload task request comprises to determine a power consumption value of a component of the computing device.
0065Example 18 includes the subject matter of any of Examples 15-17, and wherein the offload accept module is further to determine, by the firmware environment, a compute requirement of the offload task request; wherein to determine whether to accept the offload task request further comprises to determine whether to accept the offload task request based on the compute requirement of the offload task request and the available resources of the computing device.
0066Example 19 includes the subject matter of any of Examples 15-18, and wherein the compute requirement comprises a processor requirement, a memory requirement, a storage requirement, or an I/O requirement.
0067Example 20 includes the subject matter of any of Examples 15-19, and wherein to receive the offloaded task comprises to receive a command string from the remote computing device.
0068Example 21 includes the subject matter of any of Examples 15-20, and wherein to execute the offloaded task comprises to execute the command string using a management shell of the firmware environment.
0069Example 22 includes the subject matter of any of Examples 15-21, and wherein to execute the offloaded task comprises to issue a command from the firmware environment to an operating system of the computing device.
0070Example 23 includes the subject matter of any of Examples 15-22, and further including a manageability engine to establish the firmware environment.
0071Example 24 includes the subject matter of any of Examples 15-23, and further including a power management module to (i) determine, by the firmware environment, a power consumption value of the computing device and (ii) determine, by the firmware environment, whether the power consumption value of the computing device has a predefined relationship to a threshold power consumption value; and an offload request module to: (i) broadcast, by the firmware environment using the out-of-band communication facility, a second offload task request in response to a determination that the power consumption value has the predefined relationship to the threshold power consumption value and (ii) receive, by the firmware environment, a response from a second remote computing device in response to a broadcast of the second offload task request, wherein the response indicates that the second remote computing device has capacity for a second offloaded task; wherein the task offload module is further to offload the second offloaded task to the second remote computing device, wherein the second offloaded task is to be executed by the second remote computing device.
0072Example 25 includes a method for data center power management, the method comprising determining, by a firmware environment of a computing device, a power consumption value of the computing device; determining, by the firmware environment, whether the power consumption value of the computing device has a predefined relationship to a threshold power consumption value; broadcasting, by the firmware environment using an out-of-band communication facility, an offload task request in response to determining the power consumption value has the predefined relationship to the threshold power consumption value; receiving, by the firmware environment, a response from a remote computing device in response to broadcasting the offload task request, wherein the response indicates that the remote computing device has capacity for an offloaded task; and offloading, by the computing device, the offloaded task to the remote computing device, wherein the offloaded task is to be executed by the remote computing device.
0073Example 26 includes the subject matter of Example 25, and wherein determining the power consumption value comprises determining a power consumption value for a component of the computing device.
0074Example 27 includes the subject matter of any of Examples 25 and 26, and wherein determining whether the power consumption value of the computing device has the predefined relationship to the threshold power consumption value comprises determining whether the power consumption value exceeds the threshold power consumption value.
0075Example 28 includes the subject matter of any of Examples 25-27, and further including determining, by the firmware environment, a power requirement of the offload task request in response to determining the power consumption value has the predefined relationship to the threshold power consumption value; wherein broadcasting the offload task request comprises broadcasting the power requirement.
0076Example 29 includes the subject matter of any of Examples 25-28, and further including determining, by the firmware environment, a compute requirement of the offload task request in response to determining the power consumption value has the predefined relationship to the threshold power consumption value; wherein broadcasting the offload task request further comprises broadcasting the compute requirement.
0077Example 30 includes the subject matter of any of Examples 25-29, and wherein the compute requirement comprises a processor requirement, a memory requirement, a storage requirement, or an I/O requirement.
0078Example 31 includes the subject matter of any of Examples 25-30, and wherein broadcasting the offload task request comprises transmitting the offload task request via a simple network management protocol (SNMP).
0079Example 32 includes the subject matter of any of Examples 25-31, and wherein broadcasting the offload task request comprises broadcasting the offload task request to a network or a sub-network.
0080Example 33 includes the subject matter of any of Examples 25-32, and wherein broadcasting the offload task request comprises broadcasting the offload task request to a predefined collection of remote computing devices.
0081Example 34 includes the subject matter of any of Examples 25-33, and further including transmitting, by the firmware environment, a command to offload the offloaded task to an operating system of the computing device in response to receiving the response from the remote computing device; wherein offloading the offloaded task comprises offloading the offloaded task by the operating system in response to transmitting the command to the operating system.
0082Example 35 includes the subject matter of any of Examples 25-34, and wherein offloading the offloaded task to the remote computing device comprises transmitting a command string to the remote computing device.
0083Example 36 includes the subject matter of any of Examples 25-35, and wherein offloading the offloaded task to the remote computing device further comprises transmitting the command string to a remote console of a firmware environment of the remote computing device.
0084Example 37 includes the subject matter of any of Examples 25-36, and wherein the firmware environment is established by a manageability engine of the computing device.
0085Example 38 includes the subject matter of any of Examples 25-37, and further including receiving, by the firmware environment via the out-of-band communication facility, a second offload task request broadcast from a second remote computing device; determining, by the firmware environment, a power requirement of the second offload task request; determining, by the firmware environment, whether to accept the second offload task request based on the power requirement of the second offload task request and available resources of the computing device; transmitting, by the firmware environment, an offload task acceptance to the second remote computing device in response to determining to accept the second offload task request; receiving, by the firmware environment, a second offloaded task from the second remote computing device in response to transmitting the offload task acceptance; and executing, by the computing device, the second offloaded task in response to receiving the second offloaded task.
0086Example 39 includes a method for data center power management, the method comprising receiving, by a firmware environment of a computing device via an out-of-band communication facility, an offload task request broadcast from a remote computing device; determining, by the firmware environment, a power requirement of the offload task request; determining, by the firmware environment, whether to accept the offload task request based on the power requirement of the offload task request and available resources of the computing device; transmitting, by the firmware environment, an offload task acceptance to the remote computing device in response to determining to accept the offload task request; receiving, by the firmware environment, an offloaded task from the remote computing device in response to transmitting the offload task acceptance; and executing, by the computing device, the offloaded task in response to receiving the offloaded task.
0087Example 40 includes the subject matter of Example 39, and wherein determining whether to accept the offload task comprises determining a power consumption value of the computing device.
0088Example 41 includes the subject matter of any of Examples 39 and 40, and wherein determining whether to accept the offload task request comprises determining a power consumption value of a component of the computing device.
0089Example 42 includes the subject matter of any of Examples 39-41, and further including determining, by the firmware environment, a compute requirement of the offload task request; wherein determining whether to accept the offload task request further comprises determining whether to accept the offload task request based on the compute requirement of the offload task request and the available resources of the computing device.
0090Example 43 includes the subject matter of any of Examples 39-42, and wherein the compute requirement comprises a processor requirement, a memory requirement, a storage requirement, or an I/O requirement.
0091Example 44 includes the subject matter of any of Examples 39-43, and wherein receiving the offloaded task comprises receiving a command string from the remote computing device.
0092Example 45 includes the subject matter of any of Examples 39-44, and wherein executing the offloaded task comprises executing the command string using a management shell of the firmware environment.
0093Example 46 includes the subject matter of any of Examples 39-45, and wherein executing the offloaded task comprises issuing a command from the firmware environment to an operating system of the computing device.
0094Example 47 includes the subject matter of any of Examples 39-46, and wherein the firmware environment is established by a manageability engine of the computing device.
0095Example 48 includes the subject matter of any of Examples 39-47, and further including determining, by the firmware environment, a power consumption value of the computing device; determining, by the firmware environment, whether the power consumption value of the computing device has a predefined relationship to a threshold power consumption value; broadcasting, by the firmware environment using the out-of-band communication facility, a second offload task request in response to determining the power consumption value has the predefined relationship to the threshold power consumption value; receiving, by the firmware environment, a response from a second remote computing device in response to broadcasting the second offload task request, wherein the response indicates that the second remote computing device has capacity for a second offloaded task; and offloading, by the computing device, the second offloaded task to the second remote computing device, wherein the second offloaded task is to be executed by the second remote computing device.
0096Example 49 includes a computing device comprising a processor; and a memory having stored therein a plurality of instructions that when executed by the processor cause the computing device to perform the method of any of Examples 25-48.
0097Example 50 includes one or more machine readable storage media comprising a plurality of instructions stored thereon that in response to being executed result in a computing device performing the method of any of Examples 25-48.
0098Example 51 includes a computing device comprising means for performing the method of any of Examples 25-48.
0099Example 52 includes a computing device for data center power management, the computing device comprising means for determining, by a firmware environment of the computing device, a power consumption value of the computing device; means for determining, by the firmware environment, whether the power consumption value of the computing device has a predefined relationship to a threshold power consumption value; means for broadcasting, by the firmware environment using an out-of-band communication facility, an offload task request in response to determining the power consumption value has the predefined relationship to the threshold power consumption value; means for receiving, by the firmware environment, a response from a remote computing device in response to broadcasting the offload task request, wherein the response indicates that the remote computing device has capacity for an offloaded task; and means for offloading the offloaded task to the remote computing device, wherein the offloaded task is to be executed by the remote computing device.
0100Example 53 includes the subject matter of Example 52, and wherein the means for determining the power consumption value comprises means for determining a power consumption value for a component of the computing device.
0101Example 54 includes the subject matter of any of Examples 52 and 53, and wherein the means for determining whether the power consumption value of the computing device has the predefined relationship to the threshold power consumption value comprises means for determining whether the power consumption value exceeds the threshold power consumption value.
0102Example 55 includes the subject matter of any of Examples 52-54, and further including means for determining, by the firmware environment, a power requirement of the offload task request in response to determining the power consumption value has the predefined relationship to the threshold power consumption value; wherein the means for broadcasting the offload task request comprises means for broadcasting the power requirement.
0103Example 56 includes the subject matter of any of Examples 52-55, and further including means for determining, by the firmware environment, a compute requirement of the offload task request in response to determining the power consumption value has the predefined relationship to the threshold power consumption value; wherein the means for broadcasting the offload task request further comprises means for broadcasting the compute requirement.
0104Example 57 includes the subject matter of any of Examples 52-56, and wherein the compute requirement comprises a processor requirement, a memory requirement, a storage requirement, or an I/O requirement.
0105Example 58 includes the subject matter of any of Examples 52-57, and wherein the means for broadcasting the offload task request comprises means for transmitting the offload task request via a simple network management protocol (SNMP).
0106Example 59 includes the subject matter of any of Examples 52-58, and wherein the means for broadcasting the offload task request comprises means for broadcasting the offload task request to a network or a sub-network.
0107Example 60 includes the subject matter of any of Examples 52-59, and wherein the means for broadcasting the offload task request comprises means for broadcasting the offload task request to a predefined collection of remote computing devices.
0108Example 61 includes the subject matter of any of Examples 52-60, and further including means for transmitting, by the firmware environment, a command to offload the offloaded task to an operating system of the computing device in response to receiving the response from the remote computing device; wherein the means for offloading the offloaded task comprises means for offloading the offloaded task by the operating system in response to transmitting the command to the operating system.
0109Example 62 includes the subject matter of any of Examples 52-61, and wherein the means for offloading the offloaded task to the remote computing device comprises means for transmitting a command string to the remote computing device.
0110Example 63 includes the subject matter of any of Examples 52-62, and wherein the means for offloading the offloaded task to the remote computing device further comprises means for transmitting the command string to a remote console of a firmware environment of the remote computing device.
0111Example 64 includes the subject matter of any of Examples 52-63, and wherein the firmware environment is established by a manageability engine of the computing device.
0112Example 65 includes the subject matter of any of Examples 52-64, and further including means for receiving, by the firmware environment via the out-of-band communication facility, a second offload task request broadcast from a second remote computing device; means for determining, by the firmware environment, a power requirement of the second offload task request; means for determining, by the firmware environment, whether to accept the second offload task request based on the power requirement of the second offload task request and available resources of the computing device; means for transmitting, by the firmware environment, an offload task acceptance to the second remote computing device in response to determining to accept the second offload task request; means for receiving, by the firmware environment, a second offloaded task from the second remote computing device in response to transmitting the offload task acceptance; and means for executing the second offloaded task in response to receiving the second offloaded task.
0113Example 66 includes a computing device for data center power management, the computing device comprising means for receiving, by a firmware environment of the computing device via an out-of-band communication facility, an offload task request broadcast from a remote computing device; means for determining, by the firmware environment, a power requirement of the offload task request; means for determining, by the firmware environment, whether to accept the offload task request based on the power requirement of the offload task request and available resources of the computing device; means for transmitting, by the firmware environment, an offload task acceptance to the remote computing device in response to determining to accept the offload task request; means for receiving, by the firmware environment, an offloaded task from the remote computing device in response to transmitting the offload task acceptance; and means for executing the offloaded task in response to receiving the offloaded task.
0114Example 67 includes the subject matter of Example 66, and wherein the means for determining whether to accept the offload task comprises means for determining a power consumption value of the computing device.
0115Example 68 includes the subject matter of any of Examples 66 and 67, and wherein the means for determining whether to accept the offload task request comprises means for determining a power consumption value of a component of the computing device.
0116Example 69 includes the subject matter of any of Examples 66-68, and further including means for determining, by the firmware environment, a compute requirement of the offload task request; wherein the means for determining whether to accept the offload task request further comprises means for determining whether to accept the offload task request based on the compute requirement of the offload task request and the available resources of the computing device.
0117Example 70 includes the subject matter of any of Examples 66-69, and wherein the compute requirement comprises a processor requirement, a memory requirement, a storage requirement, or an I/O requirement.
0118Example 71 includes the subject matter of any of Examples 66-70, and wherein the means for receiving the offloaded task comprises means for receiving a command string from the remote computing device.
0119Example 72 includes the subject matter of any of Examples 66-71, and wherein the means for executing the offloaded task comprises means for executing the command string using a management shell of the firmware environment.
0120Example 73 includes the subject matter of any of Examples 66-72, and wherein the means for executing the offloaded task comprises means for issuing a command from the firmware environment to an operating system of the computing device.
0121Example 74 includes the subject matter of any of Examples 66-73, and wherein the firmware environment is established by a manageability engine of the computing device.
0122Example 75 includes the subject matter of any of Examples 66-74, and further including means for determining, by the firmware environment, a power consumption value of the computing device; means for determining, by the firmware environment, whether the power consumption value of the computing device has a predefined relationship to a threshold power consumption value; means for broadcasting, by the firmware environment using the out-of-band communication facility, a second offload task request in response to determining the power consumption value has the predefined relationship to the threshold power consumption value; means for receiving, by the firmware environment, a response from a second remote computing device in response to broadcasting the second offload task request, wherein the response indicates that the second remote computing device has capacity for a second offloaded task; and means for offloading the second offloaded task to the second remote computing device, wherein the second offloaded task is to be executed by the second remote computing device.
Contents4
5 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5
Every citation, both ways
| Document | Relation | Office | Cited during |
|---|---|---|---|
| US12340456B2 | Cited by | United States of America | Applicant |
| US11398895B2 | Cited by | United States of America | Search report |
| US2023081937A1 | Cited by | United States of America | Search report |
| US2016026507A1 | Cited by | United States of America | Pre-grant |
| US2025306650A1 | Cited by | United States of America | Search report |
| US10700978B2 | Cited by | United States of America | Applicant |
| US10594798B2 | Cited by | United States of America | Search report |
| US10101796B2 | Cited by | United States of America | Search report |
| US10768997B2 | Cited by | United States of America | Applicant |
| US11816776B2 | Cited by | United States of America | Applicant |
| US12007827B2 | Cited by | United States of America | Search report |
| WO2018031131A1 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| WO2020205964A1 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| US2022300058A1 | Cited by | United States of America | Search report |
| WO2025128407A1 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| EP4583458A3 | Cited by | European Patent Office (EPO) | Search report |
| US10725834B2 | Cited by | United States of America | Search report |
| US11418322B2 | Cited by | United States of America | Applicant |
| US10862701B2 | Cited by | United States of America | Search report |
| US2018316519A1 | Cited by | United States of America | Search report |
| CN106168939A | Cited by | China | Search report |
| US2017068227A1 | Cited by | United States of America | Search report |
| CN108449401A | Cited by | China | Search report |
| US9785481B2 | Cited by | United States of America | Search report |
| US11302055B2 | Cited by | United States of America | Applicant |
| EP4020131A4 | Cited by | European Patent Office (EPO) | Search report |
| US2024184628A1 | Cited by | United States of America | Search report |
| US2018316519A1 | Cited by | United States of America | Search report |
| US12316719B2 | Cited by | United States of America | Search report |
| US11782768B2 | Cited by | United States of America | Search report |
| US12099879B2 | Cited by | United States of America | Search report |
| US2021373970A1 | Cited by | United States of America | Search report |
| EP4283928A3 | Cited by | European Patent Office (EPO) | Search report |
| US2019163540A1 | Cited by | United States of America | Search report |
| US2018027063A1 | Cited by | United States of America | Search report |
| US10101796B2 | Cited by | United States of America | Pre-grant |
4 members in 3 offices
Members4
| Document | Office | Kind | |
|---|---|---|---|
| DE102015118705A1 | Germany | A1 | |
| US2016162004A1 | United States of America | A1 | |
| CN105700957A | China | A | |
| US9684364B2 | United States of America | B2 |
51 transactions on the USPTO file
Allowed after 1 non-final rejection and 1 final rejection.
- Non-final rejections
- 1
- Final rejections
- 1
- RCEs
- 0
- Appeals
- 0
Over time
Point at a mark for the transactionTransactions
| Event | Code | |
|---|---|---|
| Expire PatentEXP. | EXP. | |
| Maintenance Fee Reminder MailedREM. | REM. | |
| Payment of Maintenance Fee, 4th Year, Large EntityM1551 | M1551 | |
| Recordation of Patent Grant MailedPGM/ | PGM/ | |
| Patent Issue Date Used in PTA CalculationAllowedPTAC | PTAC | |
| Email NotificationEML_NTR | EML_NTR | |
| Issue Notification MailedAllowedWPIR | WPIR | |
| Email NotificationEML_NTR | EML_NTR | |
| Email NotificationEML_NTR | EML_NTR | |
| Filing Receipt - CorrectedFLRCPT.C | FLRCPT.C | |
| Change in Power of Attorney (May Include Associate POA)PA.. | PA.. | |
| Dispatch to FDCD1935 | D1935 | |
| Application Is Considered Ready for IssuePILS | PILS | |
| Miscellaneous Incoming LetterLET. | LET. | |
| Issue Fee Payment VerifiedN084 | N084 | |
| Issue Fee Payment ReceivedIFEE | IFEE | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail Notice of AllowanceAllowedMN/=. | MN/=. | |
| Notice of Allowance Data Verification CompletedAllowedN/=. | N/=. | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| PILOT- Request for After Final Consideration ProgramRAFC | RAFC | |
| Response after Final ActionA.NE | A.NE | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail Final Rejection (PTOL - 326)Final rejectionMCTFR | MCTFR | |
| Final RejectionFinal rejectionCTFR | CTFR | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Response after Non-Final ActionA... | A... | |
| Email NotificationEML_NTR | EML_NTR | |
| Application ready for PDX access by participating foreign officesCCRDY | CCRDY | |
| PG-Pub Issue NotificationPG-ISSUE | PG-ISSUE | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail Non-Final RejectionNon-final rejectionMCTNF | MCTNF | |
| Non-Final RejectionNon-final rejectionCTNF | CTNF | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Application Dispatched from OIPEOIPE | OIPE | |
| Email NotificationEML_NTR | EML_NTR | |
| Application Is Now CompleteCOMP | COMP | |
| Application Is Now CompleteCOMP | COMP | |
| Filing ReceiptFLRCPT.O | FLRCPT.O | |
| Sent to Classification ContractorPGPC | PGPC | |
| FITF set to YES - revise initial settingFTFS | FTFS | |
| Cleared by OIPE CSRL194 | L194 | |
| Patent Term Adjustment - Ready for ExaminationPTA.RFE | PTA.RFE | |
| Applicants have given acceptable permission for participating foreignAPPERMS | APPERMS | |
| IFW Scan & PACR Auto Security ReviewSCAN | SCAN | |
| Entity status set to undiscounted (initial default setting or status change)BIG. | BIG. | |
| Initial Exam Team nnIEXX | IEXX |
8 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Lapsed due to failure to pay maintenance feeLapsedFP | FP | |
| Lapse for failure to pay maintenance feesLapsedPATENT EXPIRED FOR FAILURE TO PAY MAINTENANCE FEES (ORIGINAL EVENT CODE: EXP.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITYLAPS | LAPS | |
| Information on status: patent discontinuationPATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362STCH | STCH | |
| Fee payment procedureMAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITYFEPP | FEPP | |
| Maintenance fee paymentMAFP | MAFP | |
| Information on status: patent grantGrantedPATENTED CASESTCF | STCF | |
| Fee payment procedurePAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITYFEPP | FEPP | |
| AssignmentAS | AS |
Numbers
- Publication
- 20160162004
- Application
- 14564341
Titles
- English
- TECHNOLOGIES FOR OUT-OF-BAND POWER-BASED TASK SCHEDULING FOR DATA CENTERS
Patent term adjustment
- A delay
- +90 daysthe office missed an examination deadline
- Applicant delay
- −33 days
- Net adjustment
- 57 days
Classification
- CPC, 7
- G06F9/505
- G06F1/329
- G06F2209/509
- G06F1/3228
- G06F9/5088
- Y02D10/00
- G06F9/5083
- IPC, 1
- G06F1 32