Examples described herein are generally related to executing computational tasks by various nodes hosting computing resources.
Various computational tasks or jobs for providing services supported by a data center may include use of various computing resources located at or with host computing platforms or nodes. These computational tasks may be associated with processing, storage, networking or management services for customers or clients seeking data center services. Large data centers may include multitudes of nodes interconnected to each other via one or more network communication channels. The network communication channels may include in-band communication channels arranged to relay data to and from nodes in order for these nodes to execute computational tasks. The network communication channels may also include out-of-band (OOB) communication channels. OOB communication channels may be arranged to allow for managing or controlling nodes remotely and/or may allow for communication between nodes.
Typically, a centralized dispatcher or scheduler may act as a single point of control for distributing computational tasks between nodes in a data center. The central dispatcher may communicate with nodes through a server-client method that includes building a list of nodes and their respective capabilities. These capabilities may include the numbers and types of computing resources for use in executing computational tasks. The central dispatcher typically schedules computational tasks for execution at nodes and attempts to make best use of critical operating parameters in order to meet data center service obligations. Operating parameters for computing resources such as processor utilization, memory utilization, storage utilization, license keys, estimated execution time, concurrency, priority or other operating parameters may be taken into consideration when scheduling computational tasks.
As contemplated in the present disclosure, operating parameters for computing resources such as processor utilization, memory utilization, storage utilization, license keys, estimated execution time, concurrency, priority or other operating parameters may be taken into consideration when scheduling computational tasks. In some examples various algorithms may be used for this type of centralized scheduling such as first-in-first-out (FIFO), shortest-job-first (SJF) or round-robin (RR). Also, when an allocation of computing resources is needed due to, for example, a new computational task, existing computational tasks as well as the new computational task may be submitted to those nodes having best available capacity. This best available capacity may be based on client-server polling of critical operating parameters. The polling may allow a central scheduler to determine utilization rates or critical operating parameters for each node such as processor utilization, memory utilization or storage utilization.
In general, exact prediction of computing resource usage or runtimes for various computing resources hosted by each node may be deterministically impossible. Although approximations (to varying degrees of accuracy) may exist. Inevitably, in large data center environments running heterogeneous computational tasks, centralized scheduling may be bounded toward an upper limit of capabilities for computing resources hosted by nodes. This means that there may always be idle capacity and thus some computing resources may be “neglected” or inefficiently utilized when using centralized scheduling. It is with respect to these challenges that the examples described herein are needed.
According to some examples, techniques to offload computational tasks between nodes may include a node (e.g., located in a data center) receiving a computational task for execution by computing resources hosted by the node. Logic and/or features at the node may then determine that execution of the computational task causes an energy state of the node to exceed an energy state threshold. An indication may then be broadcasted to indicate that the energy state threshold has been exceeded to one or more nodes (e.g., also located in the data center). The indication may be broadcast over an out-of-band (OOB) communication channel maintained with the one or more nodes. The logic and/or features may then receive one or more reports from the one or more nodes over the OOB communication channel, the one or more reports indicating respective energy states of the one or more nodes. The logic and/or features may then select an offload node from the one or more nodes based on the one or more reports and offload the computational task to the offload node responsive to the offload node accepting a request to execute the computation task.
According to some other examples, techniques to offload computation tasks between nodes may include a first node (e.g., included in a data center) receiving a message from a second node (e.g., also included in the data center) over an OOB communication channel between the first and second nodes. For these other examples, the message may indicate that an energy state threshold for the second node has been exceeded. Logic and/or features at the first node may then send a report to the second node over the OOB communication channel that indicates an energy state of the first node. A request to execute a computational task offloaded from the second node may then be received and the logic and/or features may accept the request and then cause the first node to execute the computational task using computing resources hosted by the first node.
In some examples, as shown in
According to some examples, energy state thresholds at each node may be based on maintaining a minimum energy state. This minimum energy state may be bounded towards a lower limit or lower capacity for various types of computing resources included in respective computing resources 112-1 to 112-n hosted by nodes 110-1 to 110-n. In other words, rather than allocating up to 100% of computing resources for executing computational tasks, lower allocations (e.g., 50%) may be established. These lower allocations may set energy state thresholds such that should a node suddenly have a need for higher allocations of computing resources to execute computational tasks that results in the energy state threshold being exceeded, at least some computational tasks may be offloaded to another node with enough capacity below its set energy state threshold to take on the offloaded computational task. Thus, a new equilibrium among the nodes may be established that attempts to keep each node below its respective energy state thresholds while using their hosted computing resources to execute computational tasks.
In some examples, minimum energy states bounded towards a lower limit may also reduce or eliminate the need to identify critical nodes in a data center. For these examples, critical nodes may be eliminated as computational tasks may be quickly offloaded from a potentially failing node to other nodes having a built in margin of capacity. Once a failed node is brought back on line, equilibrium may be reestablished as computational task are handed back to this node from nodes that may have temporarily exceeded their energy state thresholds while the failed node was off line. Eliminating critical nodes may reduce the need to over build or over allocate computing resources for some nodes and may also reduce the need for costly redundant secondary nodes that may host idle computing resources while a primary node hosts active computing resources to execute computational tasks.
According to some examples, as shown in
In some examples, energy module 119 may be programmable logic programmed into UEFI/BIOS 116 as depicted in
Computing resources 112 may include, but are not limited to, hardware-based types of computing resources such as processors, memory devices, storage devices, graphics processors, network I/O devices, switch devices, cooling devices, power devices. Computing resources 112 may also include, but are not to, software-based types of computing resources such as operating systems, virtual machines, virtualized containers or applications. As described more below, computing resources 112 may be allocated on a cumulative basis or may be allocated on an individual basis to establish an energy state threshold.
According to some examples, management facility 118 may be arranged as an active management technology (AMT) management engine according to an industry technology such as Intel® AMT 7.0 Release, Rev. 1.0, published in October 2010 (“the AMT specification”) and/or other releases or versions. Management facility 118 may also be arranged to work with processors or other computing resources included in computing resources 112 that may be arranged to operate with another industry technology such as Intel® vPro™. For these examples, respective management facilities 118 at nodes 110-1 to 110-n may facilitate communication between nodes over out-of-band communication channel 120. Out-of-band communication channel 120 may be arranged to operate as an AMT OOB communication channel that transports data between nodes 110-1 to 110-n using communication protocols described in the AMT specification.
In some examples, management facility 118 may be arranged as a simple network management protocol (SNMP) agent according to one or more industry technologies or standards such as those included in the Internet Protocol Suite as defined by the Internet Engineering Task Force (IETF) for SNMP version 3 (SNMPv3) as described in Request for Comments (RFCs) 3411 to 3418 (the SNMPv3 standards”) and/or later or earlier versions. For these examples, management facility 118 may operate as the SNMP agent to facilitate communication between nodes 110-1 to 110-n over out-of-band communication channel 120. Out-of-band communication channel 120 may be arranged to operate as an SNMP OOB communication channel that transports data between nodes 110-1 to 110-n using communication protocols described in the SNMPv3 standards.
According to some examples, management facility 118 may be arranged as a baseband management controller (BMC) according to one or more industry technologies or standards associated with an Intelligent Platform Management Interface (IPMI). The one or more standards may include the IPMI Specification Second Generation, v2.0, Revision 1.1, published in October 2013 (“the IPMI specification”), and/or other versions or revisions. For these examples, management facility 118 may facilitate communication between nodes 110-2 to 110-n over out-of-band communication channel 120. Out-of-band communication channel 120 may be arranged to operate as an IPMI OOB communication channel that transports data between nodes 110-1 to 110-n using communication protocols described in the IPMI specification.
In some examples, whether a given management facility 118 at nodes 110-1 to 110-n is arranged as an AMT management engine, SNMP agent or BMC, each example may provide a way in which logic and/or features included in a module such as energy module 119-1 may include built in capabilities for nodes 110-1 to 110-n to manage self-scheduling of computational tasks between each other without dependence on an operating system/application or dependence on a centralized scheduler.
In some examples, energy module 119-1 may include logic and/or features to receive operating parameters including available capacities or utilization rates associated with the various computing resources included in computing resources 112-1. These operating parameters may be forwarded by OS kernel 114-1 to energy module 119-1 to determine what amount of allocated capacity is currently in use and/or what capacity is available. This determination may be based on computational task(s) currently being executed or may be based on expected or recently received computational task(s) for execution by computing resources 112-1. The logic and/or features of energy module 119-1 may then determine whether execution of current or expected computational task(s) causes an energy state of node 110-1 to exceed an energy state threshold. For the example allocation 200 shown in
According to some examples, energy module 119-1 may not only determine whether an energy state threshold has been exceeded but may also determine amount of available capacity if other nodes are seeking to offload computational task to node 110-1. As described more below, logic and/or features of energy module 119-1 may generate a report indicating this available capacity responsive to a message received from a given node over out-of-band communication channel 120 indicating a need for the given node to offload a computational task. For example, if the logic and/or features determine that computing resources 112-1 are operating at 40% capacity then a report may be sent to the given node indicating that node 110-1 is currently operating at an energy state of 40% capacity with an energy state threshold of 50% capacity. Logic and/or features of energy module 119-1 may then receive a request from given node requesting offloading of a computational task for execution by computing resources 112-1. Acceptance of the request may then be contingent on whether logic and/or features of energy module 119-1 determine that execution of the proposed offloading of the computational task causes computing resources 112-1 to exceed the cumulative allocation of 50% capacity.
According to some examples, as shown in
In some examples, as shown in
According to some examples, as shown in
In some examples, as shown in
According to some examples, as shown in
In some examples, as shown in
According to some examples, as shown in
In some examples, as shown in
According to some examples, as shown in
In some examples, as shown in
In some examples, as shown in
In some examples, as shown in
According to some examples, the originating or offloading node of the message that indicated its energy state threshold has been exceeded may compare report 400 to reports received from other nodes. The comparison of reports may determine which node to offload a computational task. If the offloading node chooses node 110-1, then the offloading node sends a request to offload the computational task. The request, for example, may include information via which logic and/or features of energy module 119-1 may be able to determine whether an energy state threshold for at least one computing resource included in computing resources 112-1 would be exceeded if the offloaded computational task was executed at node 110-1. If the energy state threshold for at least one computing resource is not exceeded, the logic and/or features of energy module 119-1 may cause node 110-1 to accept the request to offload the computational task for execution by computing resources 112-1. If exceeded, the logic and/or features of energy module 119-1 may cause node 110-1 to reject the request. For example, if the offloaded computational task is expected to increase the used % for processor(s) 205 above the energy state threshold of 30% utilization, then the request to offload the computational task may be rejected.
In other examples, a report that merely indicates an overall or cumulative allocation %, used % and available % for computing resources 112-1. The cumulative allocation may be based on or similar to allocation 200 shown in
Starting at process 5.1 (Computational Task), node 110-1 may receive or may be currently executing a computational task for providing a data center service. The data center service, for example, may be provided by nodes 110-1 to 110-n of data center 101 coupled to customers or subscribers to the data center service through network 140. Node 110-1 may utilize computing resources 112-1 to execute the computational task.
Moving to process 5.2 (Energy Threshold Exceeded), logic and/or features of energy module 119-1 located at node 110-1 may determine that execution of the computational task causes an energy state of node 110-1 to exceed an energy state threshold. In some examples, if allocation 200 sets the energy state threshold, then the logic and/or features has determined that execution of the computational task causes the cumulative allocated computing resources to exceed 50% for computing resources 112-1. In some examples, if allocation 300 for computing resources sets individual energy state thresholds, then the logic and/or features of energy module 119-1 has determined that execution of the computational task causes or is expected to cause at least one allocated computing resource from among computing resources 112-1 to exceed its individually allocated %. For example, memory device(s) 210 exceed or are expected to exceed an energy state of 60% when executing the computational tasks. According to some examples, the logic and/or features of energy module 119-1 may receive computational task information that includes operating parameters for the various computing resources included in computing resources 112-1 from OS kernel 114-1. The logic and/or features may then use that computational task information to determine energy state(s).
In some examples, the logic and/or features of energy module 119-1 may also use a different allocation than allocation 200 or allocation 300 to determine whether an allocation % has been exceeded. For example, the different allocation may group or establish subsets of computing resources having grouped allocations. For examples, processor(s) 205 and memory device(s) 210 may be a first subset having a grouped allocation of 50% and operating system(s) 245, container(s) 255 and application(s) 260 may be a second subset having a grouped allocation of 45%. Using these different allocations logic and/or features of energy module 119-1 may have determined that execution of the computational task causes or is expected to cause at least one subset of computing resources 112-1 to exceed its grouped allocated %.
Moving to process 5.3 (Broadcast over OOB), logic and/or features of energy module 119-1 may then broadcast an indication that the energy state threshold of node 110-1 has been exceeded. This indication may be broadcast over an out-of-band (OOB) communication channel such as out-of-band communication channel 120 shown in
Moving to process 5.4 (Report over OOB), logic and/or features at nodes 110-2 to 110-n, responsive to receiving the indication from node 110-1, may send individual reports over the OOB communication channel that indicate respective energy states of nodes 110-2 to 110-n. In some examples, the individual reports may be in a format similar to report 400 shown in
Moving to process 5.5 (Select Offload Node), logic and/or features of energy module 119-1 at node 110-1 may select a node from nodes 110-2 to 110-n based on reports received from these nodes. In some examples, the logic and/or features may select node 110-2 as the offloading node based on node 110-2 sending a report that indicates a greater available capacity compared to available capacity indicated by other nodes in their respective reports.
Moving to process 5.6 (Offload Request), logic and/or features of energy module 119-1 may cause node 110-1 to send a request to node 110-2 to offload the computational task.
Moving to process 5.7 (Accept Request), logic and/or features of energy module 119-2 at node 110-2 may accept the request to offload the computational task for execution by computing resources 112-2 hosted by node 110-2. In some examples, the request may have included information for the logic and/or feature of energy module 119-2 to determine whether an energy state threshold of node 110-2 would be exceeded if the computational task was executed by computing resources 112-2. The logic and/or features of energy module 119-2 may base this determination on whether a cumulative allocation similar to allocation 200 or an individual allocation similar to allocation 300 is used to set the energy state threshold. For example, if allocation 200, then the computation task's impact on the cumulative energy state of computing resources 112-2 is considered. If allocation 300, then the computational task's impact on individual computing resources included in computing resources are considered.
Moving to process 5.8 (Offload Computational Task), logic and/or features of energy module 119-1 may cause the computational task to be offloaded to node 110-2 responsive to node 110-2 accepting the request to offload the computational task. In some examples, the logic and/or features of energy module 119-1 may cause the computational task to be offloaded by sending an indication to OS kernel 114-1 to offload the computational task to node 110-2.
Moving to process 5.9 (Computational Task), logic and/or features of energy module 119-1 may cause the offloaded computational task to be executed using computing resources 112-2 hosted by node 110-2. In some examples, the logic and/or features may send an indication to OS kernel 114-2 that includes information to indicate the expected offloading of the computational task. This indication may be an implicit acknowledgement that the new computational task is not expected to cause computing resources 112-2 to exceed node 110-2's energy state threshold. Process 500 then comes to an end.
According to some examples, apparatus 600 may be supported by circuitry 620. Circuitry 600 may be similar to circuitry 117 maintained at or with management facilities 118 maintained at nodes 110-1 to 110-n shown in
In some examples, circuitry 620 may be arranged to execute one or more software or firmware implemented modules or components 622-a. It is worthy to note that “a” and “b” and “c” and similar designators as used herein are intended to be variables representing any positive integer. Thus, for example, if an implementation sets a value for a=8, then a complete set of software or firmware for components 622-a may include components 622-1, 622-2, 622-3, 622-4, 622-5, 622-6, 622-7 or 622-8. The examples presented are not limited in this context and the different variables used throughout may represent the same or different integer values. Also, these “components” may be software/firmware stored in computer-readable media, and although the components are shown in
According to some examples, circuitry 620 may include a processor, processor circuit or processor circuitry. Circuitry 620 may be generally arranged to execute one or more software components 622-a. Circuitry 620 may be any of various commercially available processors, including without limitation an AMD® Athlon®, Duron® and Opteron® processors; ARM® application, embedded and secure processors; IBM® and Motorola® DragonBall® and PowerPC® processors; IBM and Sony® Cell processors; Intel® Atom®, Celeron®, Core (2) Duo®, Core i3, Core i5, Core i7, Itanium®, Pentium®, Xeon®, Xeon Phi® and XScale® processors; and similar processors. According to some examples circuitry 620 may also include an application specific integrated circuit (ASIC) and at least some components 622-a may be implemented as hardware elements of the ASIC.
In some examples, apparatus 600 may include a task component 622-1. Task component 622-1 may be executed by circuitry 620 to receive information for a computational task to be executed by the computing resources hosted by a first node including apparatus 600. For these examples, the information may be included in task info. 605. Task info. 605 may have been sent from an OS kernel of the first node and may include operating parameter information associated with computing resources hosted by the first node that may be used for executing the computational task.
According to some examples, apparatus 600 may also include an energy state component 622-2. Energy state component 622-2 may be executed by circuitry 620 to determine that execution of the computational task causes an energy state of the first node to exceed an energy state threshold. For these examples, energy state component 622-2 may maintain allocations 623-a in a memory structure such as a lookup table (LUT). Allocations 623-a may be similar to either a cumulative allocation 200 shown in
In some examples, apparatus 600 may also include a broadcast component 622-3. Broadcast component 622-3 may be executed by circuitry 620 to broadcast an indication that the energy state threshold has been exceeded to one or more nodes, the indication broadcast over an OOB communication channel maintained with the one or more nodes. For these examples, broadcast 610-1 may be a message that includes this indication broadcasted from the first node.
According to some examples, apparatus 600 may also include a message component 622-4. Message component 622-4 may be executed by circuitry 620 to receive a message from a second node from among the one or more nodes over the OOB communication channel, the message may indicate that an energy state threshold for the second node has been exceeded. For these examples, the message may be included in broadcast 610-2.
In some examples, apparatus 600 may also include a report component 622-5. Report component 622-5 may be executed by circuitry 620 to receive one or more reports from the one or more nodes over the OOB communication channel, the one or more reports indicating respective energy states of the one or more nodes. For these examples, the reports may be included in report(s) 630.
According to some examples, apparatus 600 may also include a select component 622-6. Select component 622-6 may be executed by circuitry 620 to select an offload node from the one or more nodes based on the one or more reports. For these examples, select component 622-6 may choose the node having the highest available capacity in relation to its energy state threshold compared to available capacity of other nodes that sent report(s) 630 to the first node. A request to offload the computational task from the first node may be included in request 635-1 and sent to the selected offloading node over the OOB communication channel.
In some examples, apparatus 600 may also include a request component 622-7. Request component 622-7 may be executed by circuitry 620 to receive a request to execute a computational task offloaded from the second node. This may occur in situations where the first node is not currently operating at an energy state exceeding its energy state threshold. For these examples, the request from the second node may be included in request 635-2 and may have been generated by the second node responsive to a report previously sent by energy state component 622-2 following receipt of broadcast 610-2 from the second node by message component 622-4. Energy component 622-2 may accept the request received by request component 622-7 based on a determination that the energy state of the first node would not be exceeded if the computational task was offloaded from the second node. Task component 622-1 may then cause the computational task to be executed using computing resources hosted by the first node. The computational task offloaded from the second node may be included in offloaded task 645-1.
According to some examples, apparatus 600 may also include an offload component 622-8. Offload component 622-8 may be executed by circuitry 620 to cause the computational task to be offloaded to the selected offload node responsive to the offload node accepting a request to execute the computational task. The request, for example, may have been included in request 635-1 that was caused to be sent to the offload node by select component 622-6 as mentioned above. Offloaded task 645-2 may include information for the offload node to start executing the offloaded computational task using its hosted computing resources.
Various components of apparatus 600 may be communicatively coupled to each other by various types of communications media to coordinate operations. The coordination may involve the uni-directional or bi-directional exchange of information. For instance, the components may communicate information in the form of signals communicated over the communications media. The information can be implemented as signals allocated to various signal lines. In such allocations, each message is a signal. Further embodiments, however, may alternatively employ data messages. Such data messages may be sent across various connections. Example connections include parallel interfaces, serial interfaces, and bus interfaces.
Included herein is a set of logic flows representative of example methodologies for performing novel aspects of the disclosed architecture. While, for purposes of simplicity of explanation, the one or more methodologies shown herein are shown and described as a series of acts, those skilled in the art will understand and appreciate that the methodologies are not limited by the order of acts. Some acts may, in accordance therewith, occur in a different order and/or concurrently with other acts from that shown and described herein. For example, those skilled in the art will understand and appreciate that a methodology could alternatively be represented as a series of interrelated states or events, such as in a state diagram. Moreover, not all acts illustrated in a methodology may be required for a novel implementation.
A logic flow may be implemented in software, firmware, and/or hardware. In software and firmware embodiments, a logic flow may be implemented by computer executable instructions stored on at least one non-transitory computer readable medium or machine readable medium, such as an optical, magnetic or semiconductor storage. The embodiments are not limited in this context.
According to some examples, logic flow 700 at block 702 may receive, at a node, a computational task for execution by computing resources hosted by the node. For these examples, task component 622-1 may receive information (e.g., from an OS kernel) associated with execution of the computational task by computing resources hosted by the node.
In some examples, logic flow 700 at block 704 may determine that execution of the computational task causes an energy state of the node to exceed an energy state threshold. For these examples, energy state component 622-2 may make the determination.
According to some examples, logic flow 700 at block 706 may broadcast an indication that the energy state threshold has been exceeded to one or more nodes, the indication broadcast over an OOB communication channel maintained with the one or more nodes. For these examples, broadcast component 622-3 may broadcast the indication.
In some examples, logic flow 700 at block 708 may receive one or more reports from the one or more nodes over the OOB communication channel, the one or more reports indicating respective energy states of the one or more nodes. For these examples, report component 622-5 may receive the one or more reports.
According to some examples, logic flow 700 at block 710 may select an offload node from the one or more nodes based on the one or more reports. For these examples, select component 622-6 may select the offload node.
In some examples, logic flow 700 at block 712 may offload the computational task to the offload node responsive to the offload node accepting a request to execute the computation task. For these examples, offload component 622-8 may cause the computational task to be offloaded.
According to some examples, logic flow 800 at block 802 may receive, at a first node, a message from a second node over an OOB communication channel between the first and second nodes, the message indicating that an energy state threshold for the second node has been exceeded. For these examples, message component 622-4 may receive the message.
In some examples, logic flow 800 at block 804 may send a report to the second node over the OOB communication channel that indicates an energy state of the first node. For these examples, energy state component 622-2 may cause the report to be sent to the second node.
According to some examples, logic flow 800 at block 806 may receive a request to execute a computational task offloaded from the second node. For these examples, request component 622-7 may receive the request.
In some examples, logic flow 800 at block 808 may accept the request. For these examples, energy state component 622-2 may accept the request.
According to some examples, logic flow 800 at block 810 may execute the computational task using computing resources hosted by the first node. For these examples, task component 622-1 may cause the computational task to be executed using the computing resources hosted by the first node.
According to some examples, processing component 1040 may execute processing operations or logic for apparatus 600 and/or storage medium 800. Processing component 1040 may include various hardware elements, software elements, or a combination of both. Examples of hardware elements may include devices, logic devices, components, processors, microprocessors, circuits, processor circuits, circuit elements (e.g., transistors, resistors, capacitors, inductors, and so forth), integrated circuits, application specific integrated circuits (ASIC), programmable logic devices (PLD), digital signal processors (DSP), field programmable gate array (FPGA), memory units, logic gates, registers, semiconductor device, chips, microchips, chip sets, and so forth. Examples of software elements may include software components, programs, applications, computer programs, application programs, device drivers, system programs, software development programs, machine programs, operating system software, middleware, firmware, software modules, routines, subroutines, functions, methods, procedures, software interfaces, application program interfaces (API), instruction sets, computing code, computer code, code segments, computer code segments, words, values, symbols, or any combination thereof. Determining whether an example is implemented using hardware elements and/or software elements may vary in accordance with any number of factors, such as desired computational rate, power levels, heat tolerances, processing cycle budget, input data rates, output data rates, memory resources, data bus speeds and other design or performance constraints, as desired for a given example.
In some examples, other platform components 1050 may include common computing elements, such as one or more processors, multi-core processors, co-processors, memory units, chipsets, controllers, peripherals, interfaces, oscillators, timing devices, video cards, audio cards, multimedia input/output (I/O) components (e.g., digital displays), power supplies, and so forth. Examples of memory units may include without limitation various types of computer readable and machine readable storage media in the form of one or more higher speed memory units, such as read-only memory (ROM), random-access memory (RAM), dynamic RAM (DRAM), Double-Data-Rate DRAM (DDRAM), synchronous DRAM (SDRAM), static RAM (SRAM), programmable ROM (PROM), erasable programmable ROM (EPROM), electrically erasable programmable ROM (EEPROM), flash memory, polymer memory such as ferroelectric polymer memory, ovonic memory, phase change or ferroelectric memory, silicon-oxide-nitride-oxide-silicon (SONOS) memory, magnetic or optical cards, an array of devices such as Redundant Array of Independent Disks (RAID) drives, solid state memory devices (e.g., USB memory), solid state drives (SSD) and any other type of storage media or storage device suitable for storing information.
In some examples, communications interface 1060 may include logic and/or features to support a communication interface. For these examples, communications interface 1060 may include one or more communication interfaces that operate according to various communication protocols or standards to communicate over direct or network communication links. Direct communications may occur via use of communication protocols or standards described in one or more industry standards (including progenies and variants) such as those associated with the PCIe specification. Network communications may occur via use of in-band communication channels that may use in-band communication protocols such those described in one or more Ethernet standards, one or more OpenFlow specifications, the Infiniband Architecture specification or the TCP/IP protocol. Network communications may also occur via use of OOB communication channels that may use OOB communication protocols described in the AMT specification, the IPMI specification or the SNMPv3 standards.
As mentioned above computing platform 1000 may be implemented in a node such as one of nodes 110-1 to 110-n shown in
The components and features of computing platform 1000 may be implemented using any combination of discrete circuitry, application specific integrated circuits (ASICs), logic gates and/or single chip architectures. Further, the features of computing platform 1000 may be implemented using microcontrollers, programmable logic arrays and/or microprocessors or any combination of the foregoing where suitably appropriate. It is noted that hardware, firmware and/or software elements may be collectively or individually referred to herein as “logic”, “circuit”, or “circuitry.”
It should be appreciated that the exemplary computing platform 1000 shown in the block diagram of
One or more aspects of at least one example may be implemented by representative instructions stored on at least one machine-readable medium which represents various logic within the processor, which when read by a machine, computing device or system causes the machine, computing device or system to fabricate logic to perform the techniques described herein. Such representations, known as “IP cores” may be stored on a tangible, machine readable medium and supplied to various customers or manufacturing facilities to load into the fabrication machines that actually make the logic or processor.
Various examples may be implemented using hardware elements, software elements, or a combination of both. In some examples, hardware elements may include devices, components, processors, microprocessors, circuits, circuit elements (e.g., transistors, resistors, capacitors, inductors, and so forth), integrated circuits, application specific integrated circuits (ASIC), programmable logic devices (PLD), digital signal processors (DSP), field programmable gate array (FPGA), memory units, logic gates, registers, semiconductor device, chips, microchips, chip sets, and so forth. In some examples, software elements may include software components, programs, applications, computer programs, application programs, system programs, machine programs, operating system software, middleware, firmware, software modules, routines, subroutines, functions, methods, procedures, software interfaces, application program interfaces (API), instruction sets, computing code, computer code, code segments, computer code segments, words, values, symbols, or any combination thereof. Determining whether an example is implemented using hardware elements and/or software elements may vary in accordance with any number of factors, such as desired computational rate, power levels, heat tolerances, processing cycle budget, input data rates, output data rates, memory resources, data bus speeds and other design or performance constraints, as desired for a given implementation.
Some examples may include an article of manufacture or at least one computer-readable medium. A computer-readable medium may include a non-transitory storage medium to store logic. In some examples, the non-transitory storage medium may include one or more types of computer-readable storage media capable of storing electronic data, including volatile memory or non-volatile memory, removable or non-removable memory, erasable or non-erasable memory, writeable or re-writeable memory, and so forth. In some examples, the logic may include various software elements, such as software components, programs, applications, computer programs, application programs, system programs, machine programs, operating system software, middleware, firmware, software modules, routines, subroutines, functions, methods, procedures, software interfaces, API, instruction sets, computing code, computer code, code segments, computer code segments, words, values, symbols, or any combination thereof.
According to some examples, a computer-readable medium may include a non-transitory storage medium to store or maintain instructions that when executed by a machine, computing device or system, cause the machine, computing device or system to perform methods and/or operations in accordance with the described examples. The instructions may include any suitable type of code, such as source code, compiled code, interpreted code, executable code, static code, dynamic code, and the like. The instructions may be implemented according to a predefined computer language, manner or syntax, for instructing a machine, computing device or system to perform a certain function. The instructions may be implemented using any suitable high-level, low-level, object-oriented, visual, compiled and/or interpreted programming language.
Some examples may be described using the expression “in one example” or “an example” along with their derivatives. These terms mean that a particular feature, structure, or characteristic described in connection with the example is included in at least one example. The appearances of the phrase “in one example” in various places in the specification are not necessarily all referring to the same example.
Some examples may be described using the expression “coupled” and “connected” along with their derivatives. These terms are not necessarily intended as synonyms for each other. For example, descriptions using the terms “connected” and/or “coupled” may indicate that two or more elements are in direct physical or electrical contact with each other. The term “coupled,” however, may also mean that two or more elements are not in direct contact with each other, but yet still co-operate or interact with each other.
The follow examples pertain to additional examples of technologies disclosed herein.
An example apparatus may include circuitry at a node hosting computing resources. The apparatus may also include a task component for execution by the circuitry to receive information for a computational task to be executed by the computing resources hosted by the node. The apparatus may also include an energy state component for execution by the circuity to determine that execution of the computational task causes an energy state of the node to exceed an energy state threshold. The apparatus may also include a broadcast component for execution by the circuitry to broadcast an indication that the energy state threshold has been exceeded to one or more nodes, the indication broadcast over an OOB communication channel maintained with the one or more nodes. The apparatus may also include a report component for execution by the circuitry to receive one or more reports from the one or more nodes over the OOB communication channel, the one or more reports indicating respective energy states of the one or more nodes. The apparatus may also include a select component for execution by the circuitry to select an offload node from the one or more nodes based on the one or more reports. The apparatus may also include an offload component for execution by the circuitry to cause the computational task to be offloaded to the offload node responsive to the offload node accepting a request to execute the computation task.
The apparatus of example 1, the request to execute the computation tasks may include the energy state component to cause information to be sent over the OOB communication channel to the offload node for the offload node to determine an energy state impact caused by computing resources at the offload node executing the computational task.
The apparatus of example 1, the task component may receive the information for the computational task via an OS kernel of the node. The OS kernel may offload the computational task to the offload node responsive to an indication from the offload component that the offload node has accepted the request.
The apparatus of example 1, the one or more reports indicating respective energy states of the one or more nodes may include the respective energy states indicating available capacity of respective computing resources hosted by the one or more nodes before exceeding respective energy state thresholds for the one or more nodes.
The apparatus of example 4, the select component to select the offload node based on the offload node sending a report that indicates greater available capacity compared to available capacity indicated by other nodes sending reports received by the node.
The apparatus of example 1, the energy state threshold may be based on at least a portion of the computing resources allocated for executing computational tasks received by the node.
The apparatus of example 6, the at least a portion of computing resources allocated may include a given percent allocated. The given percent may be selected from a range of allocations from 0 percent allocated to 100 percent allocated.
The apparatus of example 6, the at least a portion of the computing resources allocated may be based on a cumulative capacity of the computing resources hosted by the node.
The apparatus of example 6, the at least a portion of the computing resources allocated may be based on separate capacities of individual computing resources hosted by the node, the individual computing resources capable of being used to execute computational tasks received by the node.
The apparatus of example 9, the individual computing resources may include one or more of a processor, a memory device, a storage device, a power device, a cooling device, a network input/output device, a switch, a graphics processor, an operating system, a virtual machine, a container or an application.
The apparatus of example 9, the node and the one or more nodes may be included in a data center and the computational task offloaded to the offload node may be for providing at least a portion of a data center service supported by the data center.
The apparatus of example 11, the offload node may receive and transmit data over in-band communication channels when executing the offloaded computational task for providing at least the portion of the data center service.
The apparatus of example 1 may be an AMT management engine. For these examples, the OOB communication channel may be arranged to operate as an AMT OOB communication channel. The offloading node may also include an AMT management engine to facilitate communication over the AMT OOB communication channel.
The apparatus of example 1 may be a BMC. For these examples, the OOB communication channel may be arranged to operate as an IPMI OOB communication channel. The offloading node may also include a BMC to facilitate communication over the IPMI OOB communication channel.
The apparatus of example 1 may be an SNMP agent. For these examples, the OOB communication channel may be arranged to operate as an SNMP OOB communication channel. The offloading node may also include an SNMP agent to facilitate communication over the SNMP OOB communication channel.
The apparatus of example 1 may also include a digital display coupled to the circuitry to present a user interface view.
An example method may include receiving, at a node, a computational task for execution by computing resources hosted by the node. The method may also include determining that execution of the computational task causes an energy state of the node to exceed an energy state threshold. The method may also include broadcasting an indication that the energy state threshold has been exceeded to one or more nodes, the indication broadcast over an OOB communication channel maintained with the one or more nodes. The method may also include receiving one or more reports from the one or more nodes over the OOB communication channel. The one or more reports may indicate respective energy states of the one or more nodes. The method may also include selecting an offload node from the one or more nodes based on the one or more reports. The method may also include offloading the computational task to the offload node responsive to the offload node accepting a request to execute the computation task.
The method of example 17, the request to execute the computation tasks may include the node sending information over the OOB communication channel to the offload node for the offload node to determine an energy state impact caused by computing resources at the offload node executing the computational task.
The method of example 17, the one or more reports indicating respective energy states of the one or more nodes may include the respective energy states indicating available capacity of respective computing resources hosted by the one or more nodes before exceeding respective energy state thresholds for the one or more nodes.
The method of example 19, selecting the offload node may be based on the offload node sending a report that indicates greater available capacity compared to available capacity indicated by other nodes sending reports received by the node.
The method of example 17, the energy state threshold may be based on at least a portion of the computing resources allocated for executing computational tasks received by the node.
The method of example 21, the at least a portion of computing resources allocated may include a given percent allocated, the given percent selected from a range of allocations from 0 percent allocated to 100 percent allocated.
The method of example 21, the at least a portion of the computing resources allocated may be based on a cumulative capacity of the computing resources hosted by the node.
The method of example 21, the at least a portion of the computing resources allocated may be based on separate capacities of individual computing resources hosted by the node. The individual computing resources may be capable of being used to execute computational tasks received by the node.
The method of example 24, the individual computing resources may include one or more of a processor, a memory device, a storage device, a power device, a cooling device, a network input/output device, a switch, a graphics processor, an operating system, a virtual machine, a container or an application.
The method of example 17, the node and the one or more nodes may be included in a data center and the computational task for offloading to the offload node is for providing at least a portion of a data center service supported by the data center.
The method of example 26, the offload node may receive and transmit data over in-band communication channels when executing the offloaded computational task for providing at least the portion of the data center service.
The method of example 17, the OOB communication channel may include an AMT OOB communication channel. For these examples, the node and the offloading node may separately include a management engine to facilitate communication over the AMT OOB communication channel.
The method of example 17, the OOB communication channel may be an IPMI OOB communication channel. For these examples, the node and the offloading node may separately include a BMC to facilitate communication over the IPMI OOB communication channel.
The method of example 17, the OOB communication channel may be an SNMP OOB communication channel. For these examples, the node and the offloading node may separately include an agent to implement an SNMP interface to facilitate communication over the SNMP OOB communication channel.
An example at least one machine readable medium may include a plurality of instructions that in response to being executed by system cause the system to carry out a method according to any one of examples 17 to 30.
An example apparatus may include means for performing the methods of any one of examples 17 to 30.
An example at least one machine readable medium may include a plurality of instructions that in response to being executed by a system of at a node hosting computing resources cause the system to receive a computational task for execution by computing resources hosted by the node. The instructions may also cause the system to determine that execution of the computational task causes an energy state of the node to exceed an energy state threshold. The instructions may also cause the system to broadcast an indication that the energy state threshold has been exceeded to one or more nodes. The indication may be broadcast over an OOB communication channel maintained with the one or more nodes. The instructions may also cause the system to receive one or more reports from the one or more nodes over the OOB communication channel, the one or more reports indicating respective energy states of the one or more nodes. The instructions may also cause the system to select an offload node from the one or more nodes based on the one or more reports. The instructions may also cause the system to offload the computational task to the offload node responsive to the offload node accepting a request to execute the computation task.
The at least one machine readable medium of example 33, the request to execute the computation tasks may include the instructions to cause the system to send information over the OOB communication channel to the offload node for the offload node to determine an energy state impact caused by computing resources at the offload node executing the computational task.
The at least one machine readable medium of example 33, the one or more reports indicating respective energy states of the one or more nodes may include the respective energy states indicating available capacity of respective computing resources hosted by the one or more nodes before exceeding respective energy state thresholds for the one or more nodes.
The at least one machine readable medium of example 35, the instructions may cause the system to select the offload node based on the offload node sending a report that indicates greater available capacity compared to available capacity indicated by other nodes sending reports received by the node.
The at least one machine readable medium of example 33, the energy state threshold may be based on at least a portion of the computing resources allocated for executing computational tasks received by the node.
The at least one machine readable medium of example 37, the at least a portion of computing resources allocated may include a given percent allocated, the given percent selected from a range of allocations from 0 percent allocated to 100 percent allocated.
The at least one machine readable medium of example 37, the at least a portion of the computing resources allocated may be based on a cumulative capacity of the computing resources hosted by the node.
The at least one machine readable medium of example 37, the at least a portion of the computing resources allocated may be based on separate capacities of individual computing resources hosted by the node. The individual computing resources may be capable of being used to execute computational tasks received by the node.
The at least one machine readable medium of example 40, the individual computing resources may include one or more of a processor, a memory device, a storage device, a power device, a cooling device, a network input/output device, a switch, a graphics processor, an operating system, a virtual machine, a container or an application.
The at least one machine readable medium of example 33, the node and the one or more nodes may be included in a data center and the computational task for offloading to the offload node is for providing at least a portion of a data center service supported by the data center.
The at least one machine readable medium of example 42, the offload node may receive and transmit data over in-band communication channels when executing the offloaded computational task for providing at least the portion of the data center service.
The at least one machine readable medium of example 33, the OOB communication channel may be an AMT OOB communication channel. For these examples, the node and the offloading node may separately include a management engine to facilitate communication over the AMT OOB communication channel.
The at least one machine readable medium of example 33, the OOB communication channel may be an IPMI OOB communication channel. For these examples, the node and the offloading node may separately include a BMC to facilitate communication over the IPMI OOB communication channel.
The at least one machine readable medium of example 33, the OOB communication channel may be an SNMP OOB communication channel. For these examples, the node and the offloading node may separately include an agent to implement an SNMP interface to facilitate communication over the SNMP OOB communication channel.
An example apparatus may include circuitry at a first node. The apparatus may also include a message component for execution by the circuitry to receive a message from a second node over an OOB communication channel between the first and second nodes. The message may indicate that an energy state threshold for the second node has been exceeded. The apparatus may also include an energy state component for execution by the circuitry to cause a report to be sent to the second node over the OOB communication channel that indicates an energy state of the first node. The apparatus may also include a request component for execution by the circuitry to receive a request to execute a computational task offloaded from the second node. The apparatus may also include the energy state component to accept the request. The apparatus may also include a task component for execution by the circuitry to cause the computational task to be executed using computing resources hosted by the first node.
The apparatus of example 47, the request to execute the computational task may include information for the energy state component to determine whether an energy state of the first node would exceed an energy state threshold for the first node if the computational task was executed by the computing resources hosted by the first node. The energy state component may accept the request based on determining that the energy state of the first node will not exceed the energy state threshold for the first node.
The apparatus of example 47, the energy state of the first node included in the report sent to the second node may include the energy state indicating available capacity of computing resources hosted by the first node before exceeding an energy state threshold for the first node.
The apparatus of example 47, the energy state threshold for the first node may be based on at least a portion of the computing resources hosted by the first node that are allocated for executing computational tasks received by the first node.
The apparatus of example 50, the at least a portion of computing resources allocated may include a given percent allocated, the given percent selected from a range of allocations from 0 percent allocated to 100 percent allocated.
The apparatus of example 51, the at least a portion of the computing resources allocated may be based on a cumulative capacity of the computing resources hosted by the first node.
The apparatus of example 51, the at least a portion of the computing resources allocated may be based on separate capacities of individual computing resources hosted by the first node, the individual computing resources capable of being used to execute computational tasks received by the first node.
The apparatus of example 53, the individual computing resources may include one or more of a processor, a memory device, a storage device, a power device, a cooling device, a network input/output device, a switch, a graphics processor, an OS, a virtual machine, a container or an application.
The apparatus of example 47, the first and second nodes included in a data center and the computational task offloaded from the second node may be for providing at least a portion of a data center service supported by the data center.
The apparatus of example 55, the first node may receive and transmit data over in-band communication channels when executing the computational task for providing at least the portion of the data center service.
The apparatus of example 47 may be an AMT management engine. For these examples, the OOB communication channel may be arranged to operate as an AMT OOB communication channel. The second node may also include an AMT management engine to facilitate communication over the AMT OOB communication channel.
The apparatus of example 47 may be a BMC, the OOB communication channel is arranged to operate as an IPMI OOB communication channel. For these examples, the second node may also include a BMC to facilitate communication over the IPMI OOB communication channel.
The apparatus of example 47 may be an SNMP agent. For these examples, the OOB communication channel may be arranged to operate as an SNMP OOB communication channel. The second node may also include an SNMP agent to facilitate communication over the SNMP OOB communication channel.
The apparatus of example 47 may also include a digital display coupled to the circuitry to present a user interface view.
An example method may include receiving, at a first node, a message from a second node over an OOB communication channel between the first and second nodes. The message may indicate that an energy state threshold for the second node has been exceeded. The method may also include sending a report to the second node over the OOB communication channel that indicates an energy state of the first node. The method may also include receiving a request to execute a computational task offloaded from the second node. The method may also include accepting the request. The method may also include executing the computational task using computing resources hosted by the first node.
The method of example 61, the request to execute the computational task includes information for determining whether an energy state of the first node would exceed an energy state threshold for the first node if the computational task was executed by the computing resources hosted by the first node. For these examples, accepting the request may be based on determining that the energy state of the first node will not exceed the energy state threshold for the first node.
The method of example 61, sending the report to the second node over the OOB communication channel that indicates an energy state of the first node may include the energy state of the first node indicating available capacity of computing resources hosted by the first node before exceeding an energy state threshold for the first node.
The method of example 61, the energy state threshold for the first node may be based on at least a portion of the computing resources hosted by the first node that are allocated for executing computational tasks received by the first node.
The method of example 64, the at least a portion of computing resources allocated may include a given percent allocated, the given percent selected from a range of allocations from 0 percent allocated to 100 percent allocated.
The method of example 65, the at least a portion of the computing resources allocated may be based on a cumulative capacity of the computing resources hosted by the first node.
The method of example 65, the at least a portion of the computing resources allocated may be based on separate capacities of individual computing resources hosted by the first node. The individual computing resources may be capable of being used to execute computational tasks received by the first node.
The method of example 67, the individual computing resources may include one or more of a processor, a memory device, a storage device, a power device, a cooling device, a network input/output device, a switch, a graphics processor, an OS, a virtual machine, a container or an application.
The method of example 61, the first and second nodes may be included in a data center and the computational task offloaded from the second node may be for providing at least a portion of a data center service supported by the data center.
The method of example 69, the first node may receive and transmit data over in-band communication channels when executing the computational task for providing at least the portion of the data center service.
The method of example 61, the OOB communication channel may be an AMT OOB communication channel. For these examples, the first and second nodes may separately include a management engine to facilitate communication over the AMT OOB communication channel.
The method of example 61, the OOB communication channel may be an IPMI OOB communication channel. For these examples, the first and second nodes may separately include a BMC to facilitate communication over the IPMI OOB communication channel.
The method of example 61, the OOB communication channel may be an SNMP OOB communication channel. For these examples, the first and second nodes may separately include an agent to implement an SNMP interface to facilitate communication over the SNMP OOB communication channel.
An example at least one machine readable medium may include a plurality of instructions that in response to being executed by system cause the system to carry out a method according to any one of examples 61 to 73.
An example apparatus may include means for performing the methods of any one of examples 61 to 73.
At least one machine readable medium may include a plurality of instructions that in response to being executed by a system at a first node hosting computing resources cause the system to receive a message from a second node over an OOB communication channel between the first and second nodes. The message may indicate that an energy state threshold for the second node has been exceeded. The instructions may also cause the system to send a report to the second node over the OOB communication channel that indicates an energy state of the first node. The instructions may also cause the system to receive a request to execute a computational task offloaded from the second node. The instructions may also cause the system to accept the request and cause the computational task to be executed using computing resources hosted by the first node.
The at least one machine readable medium of example 76, the request to execute the computational task may include information for determining whether an energy state of the first node would exceed an energy state threshold for the first node if the computational task was executed by the computing resources hosted by the first node. For these examples, the instructions to cause the system to accept the request may be based on the system determining that the energy state of the first node will not exceed the energy state threshold for the first node.
The at least one machine readable medium of example 76, the instructions to cause the system to send the report to the second node over the OOB communication channel that indicates an energy state of the first node may include the energy state of the first node indicating available capacity of computing resources hosted by the first node before exceeding an energy state threshold for the first node.
The at least one machine readable medium of example 76, the energy state threshold for the first node may be based on at least a portion of the computing resources hosted by the first node that are allocated for executing computational tasks received by the first node.
The at least one machine readable medium of example 79, the at least a portion of computing resources allocated may include a given percent allocated, the given percent selected from a range of allocations from 0 percent allocated to 100 percent allocated.
The at least one machine readable medium of example 80, the at least a portion of the computing resources allocated may be based on a cumulative capacity of the computing resources hosted by the first node.
The at least one machine readable medium of example 80, the at least a portion of the computing resources allocated may be based on separate capacities of individual computing resources hosted by the first node. The individual computing resources may be capable of being used to execute computational tasks received by the first node.
The at least one machine readable medium of example 82, the individual computing resources may include one or more of a processor, a memory device, a storage device, a power device, a cooling device, a network input/output device, a switch, a graphics processor, an OS, a virtual machine, a container or an application.
The at least one machine readable medium of example 76, the first and second nodes included in a data center and the computational task offloaded from the second node may be for providing at least a portion of a data center service supported by the data center.
The at least one machine readable medium of example 84, the first node may receive and transmit data over in-band communication channels when executing the computational task for providing at least the portion of the data center service.
The at least one machine readable medium of example 76, the system may be an AMT management engine. For these examples, the OOB communication channel is arranged to operate as an AMT OOB communication channel. The second node may also include an AMT management engine to facilitate communication over the AMT OOB communication channel.
The at least one machine readable medium of example 76, the system may be a BMC. For these examples, the OOB communication channel may be arranged to operate as an IPMI OOB communication channel. The second node may also include a BMC to facilitate communication over the IPMI OOB communication channel.
The at least one machine readable medium of example 76, the system may be an SNMP agent. For these examples, the OOB communication channel may be arranged to operate as an SNMP OOB communication channel. The second node may also include an SNMP agent to facilitate communication over the SNMP OOB communication channel.
It is emphasized that the Abstract of the Disclosure is provided to comply with 37 C.F.R. Section 1.72(b), requiring an abstract that will allow the reader to quickly ascertain the nature of the technical disclosure. It is submitted with the understanding that it will not be used to interpret or limit the scope or meaning of the claims. In addition, in the foregoing Detailed Description, it can be seen that various features are grouped together in a single example for the purpose of streamlining the disclosure. This method of disclosure is not to be interpreted as reflecting an intention that the claimed examples require more features than are expressly recited in each claim. Rather, as the following claims reflect, inventive subject matter lies in less than all features of a single disclosed example. Thus the following claims are hereby incorporated into the Detailed Description, with each claim standing on its own as a separate example. In the appended claims, the terms “including” and “in which” are used as the plain-English equivalents of the respective terms “comprising” and “wherein,” respectively. Moreover, the terms “first,” “second,” “third,” and so forth, are used merely as labels, and are not intended to impose numerical requirements on their objects.
Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims.