Cloud workload distribution to manage rack power limits

WO2026221694A1PCT designated stage Publication Date: 2026-10-22RAKUTEN SYMPHONY INC +1
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
PCT/US2025/047935
Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Priority Date
2025-04-15
Filing Date
2025-09-25
Publication Date
2026-10-22

Smart Images

  • Figure US2025047935_22102026_PF_FP_ABST
    Figure US2025047935_22102026_PF_FP_ABST
Patent Text Reader

Abstract

A system for software deployment includes a network environment including a plurality of server racks each having a plurality of servers mounted therein. A scheduler executes in the network environment and is configured to receive a specification defining a resource requirement and instantiation of a plurality of software components. The scheduler receives a current power consumption for each server rack of the plurality of server racks. The scheduler selects a selected server rack of the plurality of server racks and selects a selected server of the plurality of servers mounted to the selected server rack such that the current power consumption of the selected server rack plus an estimated additional power consumption according to the specification does not exceed a maximum power consumption of the selected server rack. The scheduler invokes instantiation of the plurality of software components on the selected server of the selected server rack.
Need to check novelty before this filing date? Find Prior Art

Description

Attorney Docket No. RAKU-13900WO Title: CLOUD WORKLOAD DISTRIBUTION TO MANAGE RACK POWER LIMITSCROSS-REFERENCE TO RELATED APPLICATION

[0001] This application claims priority to U.S Provisional Application Serial No. 63 / 788,992, filed April 15, 2025; the entire contents of which are incorporated herein by reference.FIELD

[0002] The present disclosure relates to cloud workload distribution to manage rack power limits. BACKGROUND

[0003] The information disclosed in this background section is only for enhancement of understanding of the general background of the disclosure and should not be taken as an acknowledgement or any form of suggestion that this information forms the prior art already known to a person skilled in the art.

[0004] Data centers typically pack servers densely in order to maximize capacity. Typically, servers are installed in racks that provide a backplane for connectivity to other servers of the rack and to a network. As the number of servers in a rack increases, so does the heat generated, which may increase risk of failure.SUMMARY

[0005] In a first aspect, a system for software deployment includes a network environment including a plurality of server racks each having a plurality of servers mounted therein. The system includes a scheduler executing in the network environment and configured to receive a specification defining a resource requirement and instantiation of a plurality of software components. The scheduler receives a current power consumption for each server rack of the plurality of server racks. The scheduler selects a selected server rack of the plurality of serverAttorney Docket No. RAKU-13900WO racks and select a selected server of the plurality of servers mounted to the selected server rack such that the current power consumption of the selected server rack plus an estimated additional power consumption according to the specification does not exceed a maximum power consumption of the selected server rack. The scheduler invokes instantiation of the plurality of software components on the selected server of the selected server rack according to the specification.

[0006] In a second aspect, a method for software deployment includes receiving, by a scheduler executing in a network environment including a plurality of server racks each having a plurality of servers mounted therein, a specification defining a resource requirement and instantiation of a plurality of software components. The scheduler receives a current power consumption for each server rack of the plurality of server racks. The scheduler selects a selected server rack of the plurality of server racks and selecting a selected server of the plurality of servers mounted to the selected server rack such that the current power consumption of the selected server rack plus an estimated additional power consumption according to the specification does not exceed a maximum power consumption of the selected server rack. The scheduler invokes instantiation of the plurality of software components on the selected server of the selected server rack according to the specification.

[0007] In third aspect, a non-transitory computer-readable medium storing executable code that, when executed by one or more processing devices, causes the one or more processing devices to receive, by a scheduler executing in a network environment including a plurality of server racks each having a plurality of servers mounted therein, a specification defining a resource requirement and instantiation of a plurality of software components. The scheduler receives a current power consumption for each server rack of the plurality of server racks. The schedulerAttorney Docket No. RAKU-13900WO selects a selected server rack of the plurality of server racks and selecting a selected server of the plurality of servers mounted to the selected server rack such that the current power consumption of the selected server rack plus an estimated additional power consumption according to the specification does not exceed a maximum power consumption of the selected server rack. The scheduler invokes instantiation of the plurality of software components on the selected server of the selected server rack according to the specification.BRIEF DESCRIPTION OF THE DRAWINGS

[0008] Features, aspects, and advantages of embodiments of the disclosure will be described below with reference to the accompanying drawings, in which like reference numerals denote like elements, and wherein:

[0009] Fig. l is a schematic block diagram of a network environment in which containers may be deployed in accordance with an embodiment;

[0010] Fig. 2 is a schematic block diagram showing components for implementing power-aware pod scheduling in accordance with an embodiment;

[0011] Fig. 3 is a process flow diagram of a method for power-aware pod scheduling and deployment in accordance with an embodiment;

[0012] Fig. 4 is a process flow diagram of a method for migrating pods to avoid overloading rack power limits in accordance with an embodiment;

[0013] Fig. 5 is a process flow diagram of a method for training a model to estimate power consumption of a rack in accordance with an embodiment; and

[0014] Fig. 6 is a schematic block diagram of an example computing device suitable for implementing methods in accordance with embodiments of the disclosureAttorney Docket No. RAKU-13900WO DETAILED DESCRIPTION

[0015] The following detailed description of example embodiments refers to the accompanying drawings. The present disclosure provides illustrations and descriptions, but is not intended to be exhaustive or to limit the implementations to the precise form disclosed. Modifications and variations are possible in light of the present disclosure or may be acquired from practice of the implementations. Further, one or more features or components of one embodiment may be incorporated into or combined with another embodiment (or one or more features of another embodiment). Additionally, the flowchart and description of operations provided below relate to at least one of the embodiments in the present disclosure. It should be noted that it is possible to make other embodiments that do not exactly match the flowchart and its description. It is understood that in other embodiments one or more operations may be omitted, one or more operations may be added, one or more operations may be performed simultaneously (at least in part).

[0016] It will be apparent that systems and / or methods, described herein, may be implemented in different forms of hardware, software, or a combination of hardware and software. The actual specialized control hardware or software code used to implement these systems and / or methods should not limit their implementations. Thus, the operation and behavior of the systems and / or methods are described herein without reference to specific software code. It is understood that software and hardware may be designed to implement the systems and / or methods based on the description herein.

[0017] Even though particular combinations of features are recited in the claims and / or disclosed in the specification, the particular combinations are not intended to limit the disclosure of implementations. In fact, many of these features may be combined in ways not specifically recitedAttorney Docket No. RAKU-13900WO in the claims and / or disclosed in the specification. Even if a dependent claim directly depends on only one claim, the present disclosure may indicate that the dependent claim is dependent on other claims in the claim set.

[0018] No element, act, or instruction used herein should be construed as critical or essential unless explicitly described as such. Also, as used herein, the articles “a” and “an” (in other words, nouns not mentioned in the plural) are intended to include one or more items, and may be used interchangeably with “one or more.” Also, as used herein, the terms “has,” “have,” “having,” “include,” “including,” or the like are intended to be open-ended terms. Further, the phrase “based on” is intended to mean “based, at least in part, on” unless explicitly stated otherwise. Furthermore, expressions such as “at least one of [A] and [B],” “[A] and / or [B],” or “at least one of [A] or [B]” are to be understood as including only A, only B, or both A and B.

[0019] Fig. 1 illustrates an example network environment 100 in which the systems and methods disclosed herein may be used. The components of the network environment 100 may be connected to one another by a network such as a local area network (LAN), wide area network (WAN), the Internet, a backplane of a chassis, or other type of network. The components of the network environment 100 may be connected by wired or wireless network connections. The network environment 100 includes a plurality of servers 102. Each of the servers 102 may include one or more computing devices, such as a computing device having some or all of the attributes of the computing device 600 of Fig. 6.

[0020] Computing resources may also be allocated and utilized within a cloud computing platform 104. Cloud computing resources may include purchased physical storage, processor time, memory, and / or networking bandwidth in units designated by the provider by the cloud computing platform. Accordingly, references to a server 102 herein may also refer to a virtualized serverAttorney Docket No. RAKU-13900WO implemented by computing nodes of a cloud computing platform 104.

[0021] In some embodiments, some or all of the servers 102 may function as edge servers in a telecommunication network. The servers 102 may function as a distributed unit (DU) or central unit (CU) according to the open radio access network (O-RAN) standard. The servers 102 may implement a telecommunications cloud including DUs and CUs. For example, some or all of the servers 102 may be coupled to baseband units (BBU) 102a that provide translation between radio frequency signals output and received by antennas 102b and digital data transmitted and received by the servers 102. For example, each BBU 102a may perform this translation according to a cellular wireless data protocol (e.g., 4G, 5G, etc.). In some embodiments, a BBU 102a may be a gNodeB according to the 5G protocol. The approaches described herein may be applied to any workload performed in a telecommunication network or other type of network.

[0022] An orchestrator 106 provisions computing resources to application instances 118 of one or more different application executables, such as according to a manifest that defines requirements of computing resources for each application instance. The manifest may define dynamic requirements defining the scaling up or scaling down of a number of application instances 118 and corresponding computing resources in response to usage. The orchestrator 106 may include or cooperate with a utility such as KUBERNETES to perform dynamic scaling up and scaling down the number of application instances 118. In some embodiments, the orchestrator 106 may be or include a service management and orchestration (SMO) platform according to the O-RAN standard.

[0023] An orchestrator 106 may execute on a computer system that is distinct from the servers 102 and is connected to the servers 102 by a network that requires the use of a destination address for communication, such as using a networking including ethernet protocol, internet protocol (IP),Attorney Docket No. RAKU-13900WO Fibre Channel, or other protocol, including any higher-level protocols built on the previously-mentioned protocols, such as user datagram protocol (UDP), transport control protocol (TCP), or the like.

[0024] The orchestrator 106 may cooperate with the servers 102 to initialize and configure the servers 102. For example, each server 102 may cooperate with the orchestrator 106 to obtain a gateway address to use for outbound communication and a source address assigned to the server 102 for use in inbound communication. The server 102 may cooperate with the orchestrator 106 to install an operating system on the server 102.

[0025] The orchestrator 106 may be accessible by way of an orchestrator dashboard 108. The orchestrator dashboard 108 may be implemented as a web server or other server-side application that is accessible by way of a browser or client application executing on a user computing device 110, such as a desktop computer, laptop computer, mobile phone, tablet computer, or other computing device.

[0026] The orchestrator 106 may cooperate with the servers 102 in order to provision computing resources of the servers 102 and instantiate components of a distributed computing system on the servers 102 and / or on the cloud computing platform 104. For example, the orchestrator 106 may ingest a manifest defining the provisioning of computing resources to, and the instantiation of, components such as a cluster 111, pod 112 (e.g., KUBERNETES pod), container 114 (e.g., DOCKER container), storage volume 116, and an application instance 118. The orchestrator 106 may then allocate computing resources and instantiate the components according to the manifest.

[0027] The manifest may define requirements such as network latency requirements, affinity requirements (same node, same chassis, same rack, same data center, same cloud region, etc.), anti-affinity requirements (different node, different chassis, different rack, different data center,Attorney Docket No. RAKU-13900WO different cloud region, etc.), as well as minimum provisioning requirements (number of cores, amount of memory, etc.), performance or quality of service (QoS) requirements, or other constraints. The orchestrator 106 may therefore provision computing resources in order to satisfy or approximately satisfy the requirements of the manifest.

[0028] The instantiation of components and the management of the components may be implemented by means of workflows. A workflow is a series of tasks, executables, configuration, parameters, and other computing functions that are predefined and stored in a workflow repository 120. A workflow may be defined to instantiate each type of component (cluster 111, pod 112, container 114, storage volume 116, application instance 118, etc.), monitor the performance of each type of component, repair each type of component, upgrade each type of component, replace each type of component, copy (snapshot, backup, etc.) and restore from a copy each type of component, and other tasks. Some or all of the tasks performed by a workflow may be implemented using KUBERNETES or other utility for performing some or all of the tasks.

[0029] The orchestrator 106 may instruct a workflow orchestrator 122 to perform a task with respect to a component. In response, the workflow orchestrator 122 retrieves the workflow from the workflow repository 120 corresponding to the task (e.g., the type of task (instantiate, monitor, upgrade, replace, copy, restore, etc.) and the type of component. The workflow orchestrator 122 then selects a worker 124 from a worker pool and instructs the worker 124 to implement the workflow with respect to a server 102 or the cloud computing platform 104. The instruction from the orchestrator 106 may specify a particular server 102, cloud region or cloud provider, or other location for performing the workflow. The worker 124, which may be a container, then implements the functions of the workflow with respect to the location instructed by the orchestrator 106. In some implementations, the worker 124 may also perform the tasks of retrieving aAttorney Docket No. RAKU-13900WO workflow from the workflow repository 120 as instructed by the workflow orchestrator 122. The workflow orchestrator 122 and / or the workers 124 may retrieve executable images for instantiating components from an image store 126.

[0030] Referring to Fig. 2, a cluster 111 may be instantiated on servers 102 mounted within server racks 200. The server racks 200 may be located within one or more data centers 202 and connected to one another by a network (e.g., local area network (LAN), wide area network (WAN), the Internet, and / or other network). The one or more data centers 202 may form a cloud computing platform 104.

[0031] Each server rack 200 may include any attributes of a server rack known in the art. For example, each server rack 200 may include a plurality of slots each configured to receive a server 102 and some of which may be empty at any given time. Each server rack 200 may include a backplane connected to the servers 102 in the slots server rack 200 and connected to the network. The server rack 200 may itself include a computing device (e.g., having some or all of the attributes of the computing device 600 of Fig. 6 and corresponding description) that is capable of network communication over the network.

[0032] Each server rack 200 may include a power reporting module 204. The power reporting module 204 may report power consumption by the server rack 200, which may include an aggregate of power consumed by the server rack 200 itself and by all servers 102 connected to the rack 200, which may receive power through the connections of the servers 102 to the rack 200.

[0033] Each server 102 may further collect data relating to power consumption. For example, each server 102 may report power consumed by each processor core (e.g., as read from a model specific register (MSR) of the processor core) and / or utilization of each processor core. In some embodiments, current drawn by the server 102 may be measured by the server and be reported orAttorney Docket No. RAKU-13900WO converted to a power estimate and the power estimate reported. Each server 102 may report processor core utilization, such as in the form of an average processor core utilization of each core during a reporting period. Each server 102 may report average processor core utilization during the reporting period (e.g., utilization of each core allocated to the workload) by each workload executing on the server 102. The reporting period may be 1 seconds, every 10 seconds, a minute, an hour, or some other time period. As used herein a “workload” refers to any process executed according to a pod specification, such as an application instance 118.

[0034] The server rack 200 may execute a power reporting module 204 that reports data relating to power consumption by the server rack 200, such as according to a predefined period, e.g., every 1 seconds, every 10 seconds, every minute, every hour, or some other interval. Each server 102 may further report data relating to power consumption, such as the power consumed by each processor core of the server 102 and / or utilization of each processor core of the server 102 by each workload.

[0035] The servers 102 and the power reporting module 204 may report data relating to power consumption to a data collection module 206 executing in a cluster manager 208. The cluster manager 208 may manage the assignment of servers 102 to the cluster 111 and perform monitoring and updating of the cluster 111. Data reported by each server 102 may include an identifier of the server 102 and possibly an identifier of the rack 200 in which the server 102 is located. Alternatively, a mapping between an identifier of a server 102 and an identifier of the rack 200 in which the server 102 is located may be stored in a database accessible by the cluster manager 208. The association between the identifier of the server and the identifier of the rack 200 in which the server 102 is located may be manually configured or configured based on detection of the server 102 located within the rack 200. Data relating to power consumption reported by the powerAttorney Docket No. RAKU-13900WO reporting module 204 may include an identifier of the server rack 200 executing the power reporting module 204.

[0036] The cluster 111 may include a scheduler 210, such as a KUBERNETES scheduler 210. The scheduler 210 may execute on a server 102 of the cluster 111 or some other computing device. The scheduler 210 may receive data relating to power consumption reported by the server racks 200 and possibly the servers 102. For example, the cluster manager 208 may implement an application programming interface (API) 212 and the scheduler 210 may make calls to the API to retrieve the data relating to power consumption reported by the server racks 200 and servers 102.

[0037] The scheduler 210 is configured to provision resources on the servers 102 for the instantiation of pods 112. The scheduler 210 may further invoke instantiation of a pod 112 on resources provisioned by the scheduler 210. The scheduler 210 may provision a pod 112 and invoke its instantiation in response to instructions received from the orchestrator 106, from a user, or from some other source. Instantiating a pod 112 may include instantiating containers 114, storage volumes 116, and / or application instances 118 managed by each pod 112 as indicated in the pod specification. Likewise, the resources allocated to a pod 112 may include resources for executing the containers 114, storage volumes 116, and application instances 118 managed by each pod 112.

[0038] Referring to Fig. 3, the scheduler 210 may perform the illustrated method 300 to provide power-aware allocation of resources to pods 112 to avoid overheating servers 102 of a server rack 200 or otherwise overloading a server rack 200.

[0039] The method 300 may include receiving rack power metrics at step 302. The rack power metrics may be compiled by the data collection module 206. The rack power metrics may include power consumption of the rack 200 and possibly the power consumption by each server 102 of theAttorney Docket No. RAKU-13900WO rack 200. The rack power metrics may include a most recent power consumptions by the rack 200 and / or each server 102 or data derived therefrom, such as averages of data relating to power consumption reported by the rack 200 and each server 102, respectively, collected during a window preceding a current time, e.g., a time at which the rack power metrics were calculated by the data collection module 206.

[0040] The method 300 may include receiving, at step 304, one or more pod specifications. Each pod specification may specify a resource requirement, such as a number of processor cores (e.g., central processing units (CPUs)), an amount of memory, an amount of storage, an amount of network bandwidth, or other computing resource. The pod specification may include a spread requirement: a required “spread” between the pod 112 according to the pod specification and another pod. The spread may indicate that pods 112 should be on separate servers 102, in separate racks 200, in separate data centers 202, or in separate regions (e.g., different geographic regions), or have some other separation. The pod specification may instruction the instantiation of one or more software components, such as one or more containers 114, one or more storage volumes 116, and / or one or more application instances 118 executing within the one or more containers 114.

[0041] The method 300 may include identifying, at step 306, available servers 102 for each pod specification. For example, step 306 may include identifying, for each pod specification, a set of one or more servers having unallocated resources greater than or equal to the resource requirement of the each pod specification.

[0042] The method 300 may include evaluating, at step 308, possible allocations according to spread constraints of the one or more pod specifications. Step 308 may include identifying one or more possible allocations, each allocation including a selection of a server 102 for each pod specification of the one or more pod specifications that both has available resources greater thanAttorney Docket No. RAKU-13900WO or equal to the resource requirement of the each pod specification and satisfies the spread requirement of the each pod specification with respect to any other pod specifications of the one or more pod specifications and any previously instantiated pods 112 in the cluster 111.

[0043] The method 300 may include evaluating at step 310, each allocation according to available power of each rack 200 including a server 102 referenced in the each allocation with respect to an estimated power that will be consumed according to a pod specification for which that server 102 was selected. For example, a server rack 200 may have a maximum power consumption of Pmax watts, the estimated power consumption of all pods 112 to be instantiated on a server 102 of the server rack 200 according to an allocation may be E, and the current power consumption of the server rack R1 according to the rack power metrics of step 302 may be C. Accordingly, if E + C <= Pmax for each server rack 200 implicated by to the allocation, the allocation may be acceptable. A server rack 200 is implicated by an allocation if at least one server 102 of the server rack 200 was allocated to instantiate of a at least one pod specification according to the allocation.

[0044] The method 300 may include selecting, at step 312, an allocation according to the evaluation of step 310. For example, if multiple allocations are acceptable, the allocation that is selected may have the greatest minimum excess power consumption. For example, the excess power consumption of a server rack 200 implicated by an allocation may be Pmax - E - C. For a given allocation, the server rack with the smallest excess power consumption may be identified (“the minimum excess power consumption”) and the allocation with the largest minimum excess power consumption may be selected at step 312. The selected allocation may therefore be that which reduces the risk of exceeding the maximum power consumption of the server racks 20 implicated by the allocation.

[0045] The selected allocation may be implemented at step 314. For example, the scheduler 210Attorney Docket No. RAKU-13900WO may allocate resources to each pod specification on the server 102 of the rack 200 as indicated in the allocation and instantiate a pod 112 according to the each pod specification on that server 102 and rack 200.

[0046] Referring to Fig. 4, the illustrated method 400 may be performed by the scheduler 210 to relocate, e g., evict, one or more pods 112 and corresponding workloads from a server rack 200 in order to avoid overloading of the server rack 200. The method 400 may include receiving rack power metrics at step 402 (see step 302 of the method 300) for a server rack 200 and detecting, at step 404, that the rack power metrics indicate an overload condition of the server rack 200. For example, the scheduler 210 may monitor power consumption by the server racks 200 periodically over time in order to detect potential overloading.

[0047] An overload condition may exist where the power consumption of a server rack 200 exceeds a predefined threshold for the server rack 200, e.g., Pmax. The value of Pmax may be selected to be less than a power consumption of the server rack 200 at which failure will occur by some margin to provide time to react to potential overload conditions. The remaining steps of the method 400 may be performed in response to detecting the overload condition at step 404.

[0048] For example, the method 400 may include evaluating, at step 406, spread constraints of pods 112 on the servers 102 of the server rack 200. For example, step 406 may include evaluating, for each pod, whether any other server rack 200 satisfies the spread constraint of the pod 112 and the number of such server racks 200.

[0049] The method 400 may include evaluating, at step 408, resource usage of the pods 112. For example, step 408 may include retrieving the resource requirements of the pods 112 from the pod specifications used to instantiate the pods 112 (see steps 304 and 314 and corresponding descriptions).Attorney Docket No. RAKU-13900WO

[0050] The method 400 may include evaluating priority classes of the pods 112 at step 410. The pod specification according to which a pod 112 was instantiated may indicate a priority class of the pod 112. Accordingly, the priority classes of the pods on the server rack 200 may be retrieved.

[0051] The method 400 may include evaluating, at step 412, the disruption budgets of the pods of the server rack 200. Each pod 112 may have a quality of service associated therewith. For example, a pod disruption budget may specify one or both of (a) a minimum number or percentage pods 112 that must remain available and (b) maximum number of pods 112 that may be unavailable at any given time. Step 412 may therefore include evaluating the pod disruption budget margin of each pod 112 remains. For example, a pod 112 may belong to a group of pods 112 (e.g., the pods 112 of a cluster 111) having a corresponding pod disruption budget. The pod disruption budget margin of the pods 112 in the group of pods 112 may be a number of additional pods 112 of the group of pods 112 that can be brought offline while still meeting the minimum number of available pods 112 for the group of pods 112 and / or falling below the maximum number of unavailable pods of the group of pods 112.

[0052] The method 400 may include selecting, at step 414, a pod 112 to evict according to the evaluations of steps 406, 408, 410, and 412. For example, the result of steps 406, 408, 410, and 412 may be scored for each pod 112 of the server rack 200. The scores for each pod 112 from steps 406, 408, 410, and 412 may be combined to obtain an aggregate score. The pod 112 with the highest aggregate score may be selected for eviction at step 414.

[0053] For example, the score for a pod 112 per step 406 may increase with increase in the number of available server racks 200 to receive the pod 112 if evicted (pods 112 with more options are more likely to be evicted). The score for a pod 112 per step 408 may be a score that decreases with increase in the amount of resources required by the pod 112, e.g., a combination or weightedAttorney Docket No. RAKU-13900WO combination of the CPU, memory, storage, and / or network bandwidth resource requirements (pods 112 with more resource requirements are less likely to be evicted). The score for a pod 112 per step 410 may decrease with priority class of the pod 112 (pods 112 with lower priority class are more likely to be evicted). The score for a pod per step 412 may increase with increasing disruption budget margin (pods 112 with higher disruption budget margin are more likely to be evicted).

[0054] The pod 112 selected at step 414 may be evicted and rescheduled at step 416. For example, the pod specification of the pod 112 selected at step 414 may be passed to the scheduler 210 and processed according to the method 300.

[0055] Fig. 5 illustrates a method 500 for generating a model for estimating power consumption of a server rack 200. In particular, the method 500 may be used to predict an increase in power consumption of a server rack 200 if a pod 112 according to a pod specification were to be instantiated on the server rack 200. The method 500 may be performed by the data collection module 206 or some other component.

[0056] The method 500 may include receiving, at step 502, the rack power consumption for each server rack 200. The method 500 may include receiving, at step 504, processor core (e.g. CPU) usage and CPU power consumption metrics for each server 102. The CPU usage and CPU power consumption metrics for each server 102 may include an identifier of the server 102 and an identifier of the server rack 200 in which the server 102 is located. Alternatively, the server rack 200 in which the server 102 is located may be determined from a mapping as described above. The CPU usage may include a percentage usage of each processor core, such as an average percentage usage for a reporting period as defined above. Likewise, the CPU power consumption may include a power consumption read from an MSR register and may be an average of valuesAttorney Docket No. RAKU-13900WO read from the MSR register multiple times during the reporting period.

[0057] The method 500 may include receiving pod specifications for pods 112 instantiated on the server racks 200 at step 506. Each pod specification may be associated with the identifier of the server 102 and server rack 200 on which the pod 112 was instantiated according to the pod specification. For example, the scheduler 210 may store the association when allocating resources to the pod specification.

[0058] The data collected according to some or all of steps 502, 504, and 506 may be stored at step 508. Steps 502, 504, 506, and 508 may be performed repeatedly over time to collect data for training the model, such as several days, a week, a month or some other period. Since the pod specification does not change with every reporting period, step 506 may be omitted from some iterations of steps 502, 504, and 508.

[0059] The method 500 may include training, at step 510, a power estimation model to estimate the power consumption of a server rack 200. The power estimation model may be any mathematical formula, curve fit, machine learning model, or other parameters that are generated based on the training data and which may be processed to generate, for a given scenario, an estimated power consumption of a server rack 200. A scenario may be defined as a number of workloads of each type from a set of workload types executing on servers 102 of the server rack. The scenario may be defined in greater detail, such as an amount of processor cores allocated to each workload of each type and an amount of utilization of each processor core allocated to each workload. An example approach for defining the power estimation model is described below with the understanding that other approaches for estimating power consumption of a server rack 200 may be used. During utilization, a hypothetical scenario resulting from executing both currently-executing workloads and additional workloads by the servers 102 of a server rack 200 may beAttorney Docket No. RAKU-13900WO defined and processed using the power estimation model to obtain an estimate of power consumption that would result from executing the additional workloads by the servers 102 of the server rack 200.

[0060] For example, for a given reporting period, a state of a server rack 200 may be defined, e.g., data that may be used to predict the power consumption of the server rack 200. For example, the state may include CPU utilization percentages Uijk from step 504, each indicating utilization of processor core j on server 102 with index i, by a workload of type k (e.g., an index representing application instances 118 of a specific application or type of application (e.g., database, webserver, etc.)). The type of workload may be determined from the pod specification at step 506, which indicates which application instances 118 will be instantiated in a pod 112 according to the pod specification.

[0061] The state of a server rack 200 may be represented as a matrix U, where U is a matrix of utilization percentages Uijk, for all servers i, processors) of each server i, and each type of workload k on the server rack 200. Since not all servers 102 will be executing all types of workloads, the value of Uijk will be zero for some indexes i and j. Each rack power consumption from step 502 for a reporting period (Pr) and the corresponding matrix U for the reporting period is a training data entry that may be used to train the power estimation model.

[0062] The power estimation model may be representable as a function Pr= F(U), where Pr is the estimated power consumption of the server rack 200 for a reporting period for which the values Uijk in U were collected. Training the power estimation model may therefore include inputting U to the power estimation model for a training data entry, receiving an estimated power consumption from the power estimation model, comparing the estimated power consumption to Pr from the training data entry, and updating the model according to the comparison.Attorney Docket No. RAKU-13900WO

[0063] The power estimation model may be a logistic regression model, binary tree model, neural network, deep neural network, convolution neural network, Bayesian network genetic algorithm, or other type of machine learning model. The power estimation model may also be implemented as a curve fit to the training data entries.

[0064] During utilization, the increase in power consumption by a server rack 200 may include processing a current state U of the server rack 200 with the power estimation mode. The current state U may be based on utilization percentages received for the server rack 200 for a reporting window, e.g., a most recent reporting window. A modified matrix U’ may be calculated assuming that one or more pods according to a pod specification were instantiated on servers 102 of the server rack 200 according to a possible allocation (see step 310). The modified matrix U’ may include calculating values Uijk assuming that workloads of type k instantiated on processor core j of server i according to the pod specification and using a default CPU percentage for each CPU allocated thereto or use the same CPU percentage (e.g., average) of other workloads of the same type already executing on the server 102 or across the entire server rack 200.

[0065] The estimated change in power consumption (dPr) by the server rack 200 may therefore be calculated as dPr = F(U’) - F(U). The power consumption of a server rack 200 resulting from a possible allocation may therefore be Pr + dP, where Pris the current power consumption of the server rack 200 (e.g., as reported for the same reporting window as the values used to populate U).

[0066] In an alternative approach, the power estimation model may be trained with training data entries that include the rack power consumption of a server rack 200 as a desired output and resource allocations (CPUs, memory, storage, and / or network bandwidth) of pods 112 instantiated on the server rack 200 as inputs. The power estimation model may therefore be trained with the training data entries to estimate rack power consumption from resource allocations. An estimatedAttorney Docket No. RAKU-13900WO power consumption of a server rack 200 resulting from an allocation of a pod specification may therefore be computed as Pr + dPr, where dPr = F(A’) - F(A), where Pr is the current power consumption of the server rack 200, F() is the model, A is the currently allocated resources of the server rack 200, and A’ is the currently allocated resources of the server rack 200 plus the resource requirement of the pod specification.

[0067] In still other embodiments, the estimated power consumption may be computed based on both of the resource allocation and utilization percentages, such as a combination of the approaches described above.

[0068] Fig. 6 illustrates an embodiment of a computing device 600 that may be used to implement any of the computing components described above. As shown in Fig. 6, the device 600 includes processor 610, a memory 620, a storage component 630, an input component 640, an output component 650, a communication interface 660, and a bus 670.

[0069] The processor 610, as used herein, means any type of computational circuit that may comprise hardware elements and software elements. The processor 610 may be embodied as a multi-core processor, a single core processor, or a combination of one or more multi-core processors and / or one or more single core processors, a distributed processing system, or the like. The processor 610 may be a Central Processing Unit (CPU), a graphics processing unit (GPU), an accelerated processing unit (APU), an application-specific integrated circuit (ASIC), or another type of processing component.

[0070] Memory 620 includes a non-transitory computer readable medium. Memory 620 includes a random-access memory (RAM), a read only memory (ROM), and / or another type of dynamic or static storage device (e.g., a flash memory, a magnetic memory, and / or an optical memory) that stores information and / or instructions for use by processor 610. The memory 620 comprisesAttorney Docket No. RAKU-13900WO machine-readable instructions which are executable by the processor 610. These machine-readable instructions when executed by the processor 610 cause the processor 610 to perform one or more method steps of an embodiment described above.

[0071] Storage component 630 stores information and / or software related to the operation and use of the device 600. For example, storage component 630 may include a hard disk (e.g., a magnetic disk, an optical disk, a magneto-optic disk, and / or a solid-state disk), a compact disc (CD), a digital versatile disc (DVD), a floppy disk, a cartridge, a magnetic tape, and / or another type of non-transitory computer-readable medium, along with a corresponding drive.

[0072] Input component 640 is configured to receive information, such as user input. For example, the input component 640 may include, but not be limited to, a touch screen display, a keyboard, a keypad, a mouse, a button, a switch, and / or a microphone. Additionally, or alternatively, the input component 640 may include a sensor for sensing information (e.g., a global positioning system (GPS), an accelerometer, a gyroscope, and / or an actuator).

[0073] Output component 650 is configured to provide output information from the device 600. For example, the output component 650 may be, but not limited to, a display, a speaker, instructions to an external device, and / or one or more light-emitting diodes (LEDs).

[0074] Communication interface 660 is an interface that provides a communication connection to other devices, such as external devices and internal devices. The connection by the communication interface 660 can be a wired connection, a wireless connection, or a combination of wired and wireless connections, and can be a direct connection or an indirect connection via a communication network that exists between the device 600 and other devices. In other words, the standard of the communication interface 660 is not limited.

[0075] The bus 670 acts as an interconnect between the processor 610, the memory 620, theAttorney Docket No. RAKU-13900WO storage component 630, the input component 640, the output component 650, and the communication interface 660 of the device 600. The bus 670 may include a wired interconnection or a wireless interconnection.

[0076] The number and arrangement of components shown in Fig. 6 are provided as an example. In practice, device 600 may include additional components, fewer components, different components, or differently arranged components than those shown in Fig. 6. Additionally, or alternatively, a set of components (e.g., one or more components) of device 600 may perform one or more functions described as being performed by another set of components of device 600. Further, one or more method steps described in any of the embodiments may be performed utilizing a plurality of devices 600 in communication with one another.

[0077] In a first example embodiment, a system for software deployment includes: a network environment including a plurality of server racks each having a plurality of servers mounted therein; and a scheduler executing in the network environment and configured to: receive a specification defining a resource requirement and instantiation of a plurality of software components; receive a current power consumption for each server rack of the plurality of server racks; select a selected server rack of the plurality of server racks and select a selected server of the plurality of servers mounted to the selected server rack such that the current power consumption of the selected server rack plus an estimated additional power consumption according to the specification does not exceed a maximum power consumption of the selected server rack; and invoke instantiation of the plurality of software components on the selected server of the selected server rack according to the specification.

[0078] In a second example embodiment according to the first example embodiment, the specification specifies instantiation of one or more containers and one or more applicationAtorney Docket No. RAKU-13900WO instances executing within the one or more containers.

[0079] In a third example embodiment according to the second example embodiment, the specification specifies instantiation of one or more storage volumes.

[0080] In a fourth example embodiment according to the first example embodiment, the scheduler is further configured to select the selected server rack and the selected server as having available resources at least as great as the resource requirement.

[0081] In a fifth example embodiment according to the fourth example embodiment, the resource requirement includes a number of processor cores, an amount of memory, and an amount of storage.

[0082] In a sixth example embodiment according to the fourth example embodiment, the scheduler is further configured to select the selected server rack and the selected server according to a spread constraint of the specification.

[0083] In a seventh example embodiment according to the first example embodiment, the scheduler is configured to compute the estimated additional power consumption as a function of the resource requirement.

[0084] In an eighth example embodiment according to the first example embodiment, the scheduler is configured to compute the estimated additional power consumption as a function of types of workloads to be instantiated according to the specification.

[0085] In a ninth example embodiment according to the eighth example embodiment, the scheduler is configured to compute the estimated additional power consumption by processing estimated processor utilizations of the workloads, the estimated processor utilizations corresponding to the types of the workloads.

[0086] In a tenth example embodiment according to the ninth example embodiment, theAttorney Docket No. RAKU-13900WO scheduler is configured to compute the estimated additional power consumption by processing the estimated processor utilizations of the workloads with a trained model.

[0087] In an eleventh example embodiment according to the first example embodiment, the specification is a KUBERNETES pod specification.

[0088] In a twelfth example embodiment according to the first example embodiment, the scheduler is further configured to: monitor power consumption of each server rack of the plurality of server racks; and if the power consumption of a first server rack of the plurality of server racks exceeds a predefined threshold, invoke workload relocation from the first server rack to a second server rack of the plurality of server racks.

[0089] In a thirteenth example embodiment, a method for software deployment includes: receiving, by a scheduler executing in a network environment including a plurality of server racks each having a plurality of servers mounted therein, a specification defining a resource requirement and instantiation of a plurality of software components; receiving, by the scheduler, a current power consumption for each server rack of the plurality of server racks; selecting, by the scheduler a selected server rack of the plurality of server racks and selecting a selected server of the plurality of servers mounted to the selected server rack such that the current power consumption of the selected server rack plus an estimated additional power consumption according to the specification does not exceed a maximum power consumption of the selected server rack; and invoking, by the scheduler, instantiation of the plurality of software components on the selected server of the selected server rack according to the specification.

[0090] In a fourteenth example embodiment according to the thirteenth example embodiment, the specification specifies instantiation of one or more containers, one or more storage volumes, and one or more application instances executing within the one or more containers.Attorney Docket No. RAKU-13900WO

[0091] In a fifteenth example embodiment according to the thirteenth example embodiment, the method further includes selecting, by the scheduler, the selected server rack and the selected server as having available resources at least as great as the resource requirement.

[0092] In a sixteenth example embodiment according to the fifteenth example embodiment, the resource requirement includes a number of processor cores, an amount of memory, and an amount of storage.

[0093] In a seventeenth example embodiment according to the fifteenth example embodiment, the method further includes selecting, by the scheduler, the selected server rack and the selected server according to a spread constraint of the specification.

[0094] In an eighteenth example embodiment according to the thirteenth example embodiment, the scheduler is configured to compute the estimated additional power consumption as a function of at least one of (a) types of workloads to be instantiated according to the specification and (b) the resource requirement.

[0095] In a nineteenth example embodiment according to the thirteenth example embodiment, the method further includes: monitoring, by the scheduler, power consumption of each server rack of the plurality of server racks; determining, by the scheduler, that power consumption of a first server rack of the plurality of server racks exceeds a predefined threshold; and in response to determining that the power consumption of the first server rack of the plurality of server racks exceeds the predefined threshold, invoke workload relocation from the first server rack to a second server rack of the plurality of server racks.

[0096] In a twentieth example embodiment, a non-transitory computer-readable medium storing executable code that, when executed by one or more processing devices, causes the one or more processing devices to: receive, by a scheduler executing in a network environment including aAttorney Docket No. RAKU-13900WO plurality of server racks each having a plurality of servers mounted therein, a specification defining a resource requirement and instantiation of a plurality of software components; receive, by the scheduler, a current power consumption for each server rack of the plurality of server racks; select, by the scheduler a selected server rack of the plurality of server racks and selecting a selected server of the plurality of servers mounted to the selected server rack such that the current power consumption of the selected server rack plus an estimated additional power consumption according to the specification does not exceed a maximum power consumption of the selected server rack; and invoke, by the scheduler, instantiation of the plurality of software components on the selected server of the selected server rack according to the specification.

Claims

Attorney Docket No. RAKU-13900WO Claims:

1. A system for software deployment comprising:a network environment including a plurality of server racks each having a plurality of servers mounted therein; anda scheduler executing in the network environment and configured to:receive a specification defining a resource requirement and instantiation of a plurality of software components;receive a current power consumption for each server rack of the plurality of server racks;select a selected server rack of the plurality of server racks and select a selected server of the plurality of servers mounted to the selected server rack such that the current power consumption of the selected server rack plus an estimated additional power consumption according to the specification does not exceed a maximum power consumption of the selected server rack; andinvoke instantiation of the plurality of software components on the selected server of the selected server rack according to the specification.

2. The system of claim 1, wherein the specification specifies instantiation of one or more containers and one or more application instances executing within the one or more containers.

3. The system of claim 2, wherein the specification specifies instantiation of one or more storage volumes.Attorney Docket No. RAKU-13900WO 4. The system of claim 1, wherein the scheduler is further configured to select the selected server rack and the selected server as having available resources at least as great as the resource requirement.

5. The system of claim 4, wherein the resource requirement includes a number of processor cores, an amount of memory, and an amount of storage.

6. The system of claim 4, wherein the scheduler is further configured to select the selected server rack and the selected server according to a spread constraint of the specification.

7. The system of claim 1, wherein the scheduler is configured to compute the estimated additional power consumption as a function of the resource requirement.

8. The system of claim 1, wherein the scheduler is configured to compute the estimated additional power consumption as a function of types of workloads to be instantiated according to the specification.

9. The system of claim 8, wherein the scheduler is configured to compute the estimated additional power consumption by processing estimated processor utilizations of the workloads, the estimated processor utilizations corresponding to the types of the workloads.

10. The system of claim 9, wherein the scheduler is configured to compute the estimated additional power consumption by processing the estimated processor utilizations of theAttorney Docket No. RAKU-13900WO workloads with a trained model.

11. The system of claim 1, wherein the specification is a KUBERNETES pod specification.

12. The system of claim 1, wherein the scheduler is further configured to: monitor power consumption of each server rack of the plurality of server racks; and if the power consumption of a first server rack of the plurality of server racks exceeds a predefined threshold, invoke workload relocation from the first server rack to a second server rack of the plurality of server racks.

13. A method for software deployment comprising:receiving, by a scheduler executing in a network environment including a plurality of server racks each having a plurality of servers mounted therein, a specification defining a resource requirement and instantiation of a plurality of software components;receiving, by the scheduler, a current power consumption for each server rack of the plurality of server racks;selecting, by the scheduler a selected server rack of the plurality of server racks and selecting a selected server of the plurality of servers mounted to the selected server rack such that the current power consumption of the selected server rack plus an estimated additional power consumption according to the specification does not exceed a maximum power consumption of the selected server rack; andinvoking, by the scheduler, instantiation of the plurality of software components on theAttorney Docket No. RAKU-13900WO selected server of the selected server rack according to the specification.

14. The method of claim 13, wherein the specification specifies instantiation of one or more containers, one or more storage volumes, and one or more application instances executing within the one or more containers.

15. The method of claim 13, further comprising selecting, by the scheduler, the selected server rack and the selected server as having available resources at least as great as the resource requirement.

16. The method of claim 15 wherein the resource requirement includes a number of processor cores, an amount of memory, and an amount of storage.

17. The method of claim 15, further comprising selecting, by the scheduler, the selected server rack and the selected server according to a spread constraint of the specification.

18. The method of claim 13, wherein the scheduler is configured to compute the estimated additional power consumption as a function of at least one of (a) types of workloads to be instantiated according to the specification and (b) the resource requirement.

19. The method of claim 13, further comprising:monitoring, by the scheduler, power consumption of each server rack of the plurality of server racks;Attorney Docket No. RAKU-13900WO determining, by the scheduler, that power consumption of a first server rack of the plurality of server racks exceeds a predefined threshold; andin response to determining that the power consumption of the first server rack of the plurality of server racks exceeds the predefined threshold, invoke workload relocation from the first server rack to a second server rack of the plurality of server racks.

20. A non-transitory computer-readable medium storing executable code that, when executed by one or more processing devices, causes the one or more processing devices to: receive, by a scheduler executing in a network environment including a plurality of server racks each having a plurality of servers mounted therein, a specification defining a resource requirement and instantiation of a plurality of software components;receive, by the scheduler, a current power consumption for each server rack of the plurality of server racks;select, by the scheduler a selected server rack of the plurality of server racks and selecting a selected server of the plurality of servers mounted to the selected server rack such that the current power consumption of the selected server rack plus an estimated additional power consumption according to the specification does not exceed a maximum power consumption of the selected server rack; andinvoke, by the scheduler, instantiation of the plurality of software components on the selected server of the selected server rack according to the specification.