Patent ID: 12254220

DETAILED DESCRIPTION

In computer systems utilizing cloud computing clients, virtual machines and/or containers may be used as the cloud computing client device. In an example, a virtual machine (“VM”) may be a robust simulation of an actual physical computer system utilizing a hypervisor to allocate physical resources to the VM. In some examples, container based virtualization system such as Red Hat® OpenShift® or Docker® may be advantageous, as container based virtualization systems may be lighter weight than typical systems using virtual machines with hypervisors. In the case of containers, a container may be hosted on a physical host or virtual machine that already has an operating system executing, and the container may be hosted on the operating system of the physical host or VM. To operate, these cloud computing clients may have system resources allocated to them, for example, central processing unit “CPU” or “processor” (cores or shares), Graphics Processing Unit “GPU” (cores or slices), memory (size and I/O rates), persistent storage (size and I/O rates), network bandwidth, IP addresses, network routes, etc.

Many cloud computing infrastructures are aiming for carbon neutrality in the next decade. Efforts have been made into renewable energy investment in data centers. On the demand side, there are more opportunities to reduce a carbon footprint of the data center by using resources in an energy efficient way. In some cases, investment in these areas is replacing high-performance, high-power devices with more energy-efficient media (e.g., between hard disk drives (HDD) and solid state drives (SSD)) or circuits (e.g., from x86 to ARM architecture). However, these new technologies are often at the expense of different performance profiles or less reliability.

As appreciated by the inventors, SSD media may consume more (e.g., twice as much) energy as HDD media for the same amount of storage in certain configurations (see, e.g., www.cloudcarbonfootprint.org/docs/methodology/#storage). As a result, a similarly configured storage volume using SSD may produce higher carbon per usage than an HDD. Similarly, CPUs and memory may also have different energy consumption profiles. When allocating CPU and memory resources to perform certain data services on storage volumes, care has to be taken to balance energy, performance, and cost. For example, by selecting for a higher performance operation (e.g., SSD media) for a given cloud computing client, the resulting configuration may have an unacceptable carbon footprint due to excessive energy usage. Similarly, attempting to reduce the amount of media used, such as through deduplication and/or compression, may increase an amount of processing power and/or memory utilized to provide the services performing the deduplication and/or compression.

The present disclosure addresses the above-noted and other deficiencies by providing an improved provisioning component for cloud computing clients. The improved provisioning component may take input information, such as energy, performance, cost, capacity, location, and reliability, and may provision a plurality of storage volumes with different storage media types (e.g., non-volatile memory express (NVMe), SSD, HDD), using an optimization algorithm and/or analysis to attempt to attain all the goals of the input information. In some embodiments, weights may be assigned to each of the elements of the input information to prioritize one element over another in the event the elements of the input information are conflicting.

In some cases, the input information and/or associated weights can be further grouped into different profiles so that users with different goals can choose their preferred profile and thus the provisioning strategy. For instance, a green energy user may give higher weight to energy over performance.

The provisioning component may also take the same input information and provision the cloud computing client with an improved configuration for CPU and/or memory that satisfies the energy and performance requirements provided by the input information. This improved CPU/memory configuration, among other things, may consider data services, including compression/deduplication/encryption, to be performed on the storage volume. These services may utilize additional CPU/memory resources. For example, for the same amount of data services, different CPU and memory allocation profiles yield different energy consumption and performance results. Thus, this improved provisioning component may allocate the memory and CPU resources to the cloud computing client to achieve the chosen goals of the user and/or administrator.

Embodiments of the present disclosure may provide a technological solution that reduces the power consumption of a cloud computing solution while achieving performance goals of the user and/or administrator. By modifying an allocation of resources, both physical and virtual, to the cloud computing client, embodiments of the present disclosure may efficiently mix types of storage to reduce an overall power consumption, when requested, in a way that is transparent to the user and easier to administer.

FIG.1is a block diagram that illustrates an example system100, according to some embodiments of the present disclosure.FIG.1and the other figures may use like reference numerals to identify like elements. A letter after a reference numeral, such as “110A,” indicates that the text refers specifically to the element having that particular reference numeral. A reference numeral in the text without a following letter, such as “110,” refers to any or all of the elements in the figures bearing that reference numeral.

As illustrated inFIG.1, the system100includes a computing device120(also referred to herein as host device120and host computing device120), a storage server130, a cloud computing client device170(also referred to as a computing client device170) and a network140. The computing device120, the cloud computing client device170, and the storage server130may be coupled to each other (e.g., may be operatively coupled, communicatively coupled, may communicate data/messages with each other) via network140. Network140may be a public network (e.g., the internet), a private network (e.g., a local area network (LAN) or wide area network (WAN)), or a combination thereof. In one embodiment, network140may include a wired or a wireless infrastructure, which may be provided by one or more wireless communications systems, such as a WIFI™ hotspot connected with the network140and/or a wireless carrier system that can be implemented using various data processing equipment, communication towers (e.g. cell towers), etc. The network140may carry communications (e.g., data, message, packets, frames, etc.) between computing device120, the cloud computing client device170, and storage server130.

The computing device120(and storage server130) may include hardware such as processing device122(e.g., processors, central processing units (CPUs)), memory124(e.g., random access memory (RAM)), storage devices126(e.g., hard-disk drive (HDD), solid-state drives (SSD), etc.), and other hardware devices (e.g., sound card, video card, etc.). It should be noted that although, for simplicity, a single processing device122is depicted in the computing device120depicted inFIG.1, other embodiments of the computing device120may include multiple processing devices122, memory124, storage devices126, and/or other devices.

Processing device122may include a complex instruction set computing (CISC) microprocessor, reduced instruction set computing (RISC) microprocessor, very long instruction word (VLIW) microprocessor, or a processor implementing other instruction sets or processors implementing a combination of instruction sets. Processing device122may also include one or more special-purpose processing devices such as an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), a digital signal processor (DSP), network processor, or the like.

Memory124may include volatile memory devices (e.g., random access memory (RAM)), non-volatile memory devices (e.g., flash memory) and/or other types of memory devices. In certain implementations, memory124may be non-uniform access (NUMA), such that memory access time depends on the memory location relative to processing device122.

A storage device126may comprise a persistent storage that is capable of storing data. A persistent storage may be a local storage unit or a remote storage unit. Persistent storage may be a magnetic storage unit, optical storage unit, solid state storage unit, electronic storage units (main memory), or similar storage unit. Persistent storage may also be a monolithic/single device or a distributed set of devices.

The computing device120and storage server130may comprise any suitable type of computing device or machine that has a programmable processor including, for example, server computers, desktop computers, laptop computers, tablet computers, smartphones, set-top boxes, etc. In some examples, the computing device120and storage server130may comprise a single machine or may include multiple interconnected machines (e.g., multiple servers configured in a cluster). The computing device120and storage server130may be implemented by a common entity/organization or may be implemented by different entities/organizations. For example, computing device120may be operated by a first company/corporation and the storage server130may be operated by a second company/corporation. The computing device120and storage server130may each execute or include an operating system (OS), as discussed in more detail below. The operating systems of computing device120and storage server130may manage the execution of other components (e.g., software, applications, etc.) and/or may manage access to the hardware (e.g., processors, memory, storage devices etc.) of the computing device120.

The storage server130may be a server which may contain storage devices (e.g., HDDs134and SSDs136). Storage server130may be accessible by the computing device120and/or the cloud computing client device170over the network140. For example, the storage server130may provide a plurality of HDDs134A to134N and a plurality of SSDs136A to136N to be connected to one or more cloud computing client devices170. The number of HDDs134and SSDs136illustrated inFIG.1are merely an example and are not intended to limit the embodiments of the present disclosure.

As will be described further herein, one or more of the HDDs134and one or more of the SSDs136may be combined to form a storage volume178. The storage volume178may be virtual storage volume (e.g., a pool of storage space) in which multiple storage devices (e.g., HDDs134and SSDs136) are mapped together into a contiguous logical volume across one or more physical storage disks. The storage volume178may be provided to the cloud computing client device170as a storage device (e.g., storage device176). In some embodiments, different types of storage devices of the storage server130may be combined into the storage volume178. For example, one type of storage device may be the HDD134and another type of the storage device may be the SSD136. Though only SSDs136and HDDs134are illustrated inFIG.1, the embodiments of the present disclosure are not limited to these types of storage device. Other types of storage devices, such as NVMe storage devices, may be supported without deviating from the embodiments of the present disclosure.

The computing device120may execute a provisioning component115. The provisioning component115may be configured to provision the cloud computing client device170. The computing device120may assign resources, such as memory174, processor(s)172, and storage176to the cloud computing client device170. In some embodiments, the cloud computing client device170may be a VM or a container executing on host computing device120.

FIG.2Ais a block diagram that illustrates an example cloud computing client device170executing as a virtual machine, in accordance with some embodiments of the present disclosure.FIG.2Bis a block diagram that illustrates an example cloud computing client device170executing as a container, in accordance with some embodiments of the present disclosure.FIGS.2A and2Bcontrast the use of a virtual machine with the use of a container, such as for the cloud computing client device170.

Referring toFIG.2A, in a VM-based infrastructure, a computing device120may include hardware (e.g., processing devices, memory, storage devices, other devices, etc.) and a host operating system (OS)215. As discussed above, one type of a virtual environment may be a virtual machine (VM)213executing on the host computing device120. In one embodiment, the VM213may be a software implementation of a machine (e.g., a software implementation of a computing device) that includes its own operating system (referred to as guest OS214), including its own kernel, and executes application programs, applications, software. VM213may be, for example, a hardware emulation, a full virtualization, a para-virtualization, and an operating system-level virtualization VM.

Computing device120may include a hypervisor212, which may also be known as a virtual machine monitor (VMM). In the example shown, hypervisor212may be a component of a host operating system215. In another example, hypervisor212may run on top of a host operating system215, or may run directly on host hardware without the use of a host operating system215. Hypervisor212may manage system resources, including access to physical processing devices (e.g., processors, CPUs, etc.), physical memory (e.g., RAM), storage device (e.g., HDDs, SSDs), and/or other devices (e.g., sound cards, video cards, etc.). The hypervisor212, though typically implemented in software, may emulate and export a bare machine interface to higher level software in the form of virtual processors and guest memory. Higher level software may comprise a standard or real-time operating system (OS), may be a highly stripped down operating environment with limited operating system functionality, may not include traditional OS facilities, etc. Hypervisor212may present other software (i.e., “guest” software) the abstraction of one or more virtual machines (VMs) that provide the same or different abstractions to various guest software (e.g., guest operating system, guest applications).

VM213may execute guest software that uses an underlying emulation of the physical resources (e.g., virtual processors and guest memory). As illustrated inFIG.2A, VM213may execute an application218within a runtime environment (not shown in the figures). The VM213and/or the application218may form a cloud computing client device170such as that illustrated inFIG.1. In some embodiments, the host computing device120may provision the cloud computing client device170by exposing resources such as a real or emulated processor(s)172, real or emulated memory174, and/or real or emulated storage176(seeFIG.1) by way of the hypervisor212.

Referring toFIG.2B, in a container-based infrastructure, a computing device120may include hardware (e.g., processing devices, memory, storage devices, other devices, etc.) and a host OS215. A container224make execute as part of the host OS215on the host computing device120. In one embodiment, the container224may be an isolated set of resources allocated to executing a container application228and may be process independent from other applications, software, and/or processes. The host OS215may use namespaces to isolate the resources of the containers224from each other. In another embodiment, the container224may be a virtualized object similar to virtual machines. However, container224may not implement separate guest OS (like the guest OS kernel214of the VM213illustrated inFIG.2A). The container224may share the kernel, libraries, and binaries of the host OS215with other containers224that are executing on the computing device120. AlthoughFIG.2Billustrates one container224, the computing device120may include multiple containers224in other embodiments.

In one embodiment, a container engine260may allow different containers224to share the host OS215(e.g., the OS kernel, binaries, libraries, etc.) of the computing device120. For example, the container engine260may multiplex the binaries and/or libraries of the host OS215between multiple containers224. The container engine260may also facilitate interactions between the container224and the resources of the computing device120. For example, the container engine260may manage requests from container224to access a memory (e.g., a RAM) of the computing device120. In another example, the container engine260may manage requests from the container224to access certain libraries/binaries of the host OS215. In other embodiments, the container engine260may also be used to create, remove, and manage containers224. In one embodiment, the container engine260may be a component of the host operating system215(e.g., Red Hat™ Enterprise Linux). In another embodiment, container engine260may run on top of a host operating system215, or may run directly on host hardware without the use of a host operating system215.

The container224and/or the container application228may form a cloud computing client device170such as that illustrated inFIG.1. In some embodiments, the host computing device120may provision the cloud computing client device170by configuring resources to be provided to the container224, such as a real or emulated processor(s)172, real or emulated memory174, and/or real or emulated storage176(seeFIG.1) by way of the container engine260.

FIGS.2A and2Billustrate some of the differences between a VM-based solution for a cloud computing client device170(FIG.2A) and a container-based solution for a cloud computing client device170(FIG.2B). In a VM-based solution, an entire virtual system, including a OS kernel and operating system (e.g., guest OS kernel214) are utilized to execute an application218on the cloud computing client device170. While this can allow for a wide range of support, it may increase the overhead to execute the application218. In contrast, in a container-based solution for the cloud computing client device170, the container application228executes from a same host OS215, eliminating the need for a full guest OS installation.

Referring back toFIG.1, the provisioning component115may include a compute provisioning engine150and a storage provisioning engine160. The compute provisioning engine150and/or the storage provisioning engine160may include, for example, executable instructions configured to be executed on processing device122to provision the cloud computing client device170(e.g., by providing memory174, processor(s)172, and/or storage176to the a VM or a container, as illustrated inFIGS.2A and2B). Though the compute provisioning engine150and the storage provisioning engine160are illustrated as separate components inFIG.1, this is for convenience of description only. In some embodiments, both the compute provisioning engine150and the storage provisioning engine160may be a single module or executable circuit.

The compute provisioning engine150may be configured to provision a compute capability of the cloud computing client device170. For example, the compute provisioning engine150may be configured to provide memory174and/or processor(s)172to the cloud computing client device170. In some embodiments, either the memory174and/or the processor(s)172may be real or virtualized components provided to the cloud computing client device170for execution and/or operation of the cloud computing client device170.

The storage provisioning engine160may be configured to provision a storage capability of the cloud computing client device170. For example, the storage provisioning engine160may be configured to provide storage176to the cloud computing client device170. In some embodiments, the storage176may be provided by the storage volume178of the storage server130. In some embodiments, the storage provisioning engine160may communicate with the storage server130(e.g., over network140) to combine one or more of the HDDs134, the SSDs136, and/or other storage device types (e.g., NVMe storage devices) to form the storage volume178.

In some embodiments, in order to provision the cloud computing client device170, the provisioning component115may generate configuration file142. The configuration file142may control a configuration of the cloud computing client device170. For example, the configuration file142may control the operations of the compute provisioning engine150and the storage provisioning engine160to configure the cloud computing client device170. In other words, the compute provisioning engine150may configure the memory174and/or processor(s)172of the cloud computing client device170based on the configuration file142. Similarly, the storage provisioning engine160may configure the storage176of the cloud computing client device170and/or the storage volume178of the storage server130based on configuration file142.

In some embodiments, the configuration file142may be based on parameters144received by the host computing device120. In some embodiments, the parameters144may be provided that correspond to one or more targeted energy characteristics of the cloud computing client device170. Based on the parameters144, the host computing device120may generate the configuration file142associated with the cloud computing client device170to meet or exceed the targeted energy characteristics that correspond to the provided parameters144. More detail with respect to the parameters144and the configuration file142will be provided with respect toFIG.3.

AlthoughFIG.1illustrates only a single computing device120for ease of illustration and description, computing device120may be just one deployment among many within an overarching cloud or on-premises infrastructure that system100represents. For example, additional computing devices may be included within system100that act as additional deployments.

FIG.3is a schematic diagram of system100that provides additional details regarding the generation of a configuration file142by a host computing device120for a cloud computing client device170, according to some embodiments of the present disclosure. A descriptions of elements ofFIG.3that have been described with respect to previous figures will be omitted for brevity.

Referring toFIG.3, the computing device120may generate a configuration file142from parameters144. As discussed with respect toFIG.1, the configuration file142may be used by the computing device120to provision and/or execute the cloud computing client device170.

The parameters144may correspond to one or more targeted energy characteristics of a cloud computing client device170. In some embodiments, the parameters144may be provided by a user and/or administrator of the cloud computing client device170. In some embodiments, the parameters144may be and/or include one or more of an energy parameter, a performance parameter, a cost parameter, a capacity parameter, a location parameter, and/or a reliability parameter. The parameters144may be used by the host computing device120as input to determine (e.g., by the provisioning component115) the configuration of one or more aspects of the cloud computing client device170.

The energy parameter may indicate a preferred energy level and/or carbon footprint of the cloud computing client device170. In some embodiments, the energy parameter may be provided in relative terms. For example, the energy parameter may be specified as “low energy consumption,” “medium energy consumption,” or “high energy consumption.” In some embodiments, the energy parameter may specify a maximum wattage or carbon footprint that the resulting cloud computing client device170is not to exceed. The energy parameter may be used as a guide by the cloud computing client device170(e.g., the provisioning component115) to select particular configuration elements for the configuration file142, as will be discussed further herein.

The performance parameter may indicate a preferred level of performance of the cloud computing client device170. In some embodiments, the performance parameter may be provided in relative terms, such as “low performance,” “medium performance,” or “high performance.” A “high performance” cloud computing client device170may be configured by the provisioning component115to have more and/or faster execution resources (e.g., more processor(s)172and/or memory174, faster storage176, etc.) than a “low performance” or “medium performance” cloud computing client device170.

The cost parameter may indicate a maximum cost of the resulting cloud computing client device170. The provisioning component115may utilize the cost parameter to limit and/or control the configuration of the cloud computing client device170. For example, provisioning the cloud computing client device170with a higher number of processor(s)172and/or memory174may result in a higher cost. The cost parameter may be used to provide an upper limit, for example, to the resulting configuration of the configuration file142. In some embodiments, the cost parameter may be an absolute value or a relative value, such as “low cost” or “medium cost.”

The capacity parameter may indicate a preferred capacity of the processors(s)172and/or memory174of the resulting cloud computing client device170. For example, the capacity parameter may indicate a number of processor(s) and/or cores172to allocate to the cloud computing client device170. Similarly, the capacity parameter may indicate an amount of memory to allocate to the cloud computing client device170.

The location parameter may indicate a preferred location of the resulting resources used to configure the cloud computing client device170. For example, in some embodiments, resources at a particular physical location may be more or less expensive than resources at a second physical location. The location parameter may indicate a preference for assignment of resources (e.g., storage176) for the cloud computing client device170.

The reliability parameter may indicate a preferred reliability of the cloud computing client device170. For example, the reliability parameter may specify a particular guaranteed up-time or other service-level agreement. The reliability parameter may be used by the provisioning component115to select particular resources for the resulting cloud computing client device170that meet or exceed the reliability parameter (e.g., to meet a specified service level agreement).

The parameters ofFIG.3are merely an example and are not intended to limit the embodiments of the present disclosure. More, fewer, or different parameters144than those illustrated inFIG.3may be utilized without deviating from the embodiments of the present disclosure.

The provisioning component115may utilize the parameters144to generate the configuration file142, which may be used to create the cloud computing client device170. For example, the provisioning component115may analyze the parameters144to determine a configuration of a cloud computing client device170that meets the specified parameters144. In some embodiments, the parameters144may be weighted so as to assist in determining the configuration142in the event of conflicting parameters144. For example, a high performance cloud computing client device170is typically more expensive. If a set of parameters144were to select a high performance and low cost configuration for a cloud computing client device170, it might be difficult to achieve a configuration for the cloud computing client device170that met both parameters144. In such an instance, the provisioning component may utilize the weights of the parameters144to determine the resulting configuration142. For example, if the performance parameter is rated higher than the cost parameter, the provisioning component115may prioritize the configuration142so as to provide a higher performing cloud computing client device170at a higher cost.

By utilizing the parameters144, the provisioning component115may determine a targeted energy characteristic of the cloud computing client device170. The targeted energy characteristic may be used to provision the cloud computing client device170so as to meet the parameters144.

For example, based on the parameters144, the storage provisioning engine160may determine a ratio of device types of the storage server130that are to be configured (e.g., specified within the configuration file142) for the cloud computing client device170. In some embodiments, the storage provisioning engine160may generate a storage volume178from a mix of device types of the storage server130. For example, the storage volume178may have one or more storage devices of a first type (e.g., HDDs134) and one or more storage devices of a second type, different from the first type (e.g., SSDs136). In some embodiments, the storage volume178may be provided to the cloud computing client device170as storage176(seeFIG.1). For example, the storage volume178of the storage server130may be remotely mounted (e.g., over network140) to cloud computing client device170. In some embodiments, the cloud computing client device170may be unaware of the mix of device types of the storage devices. In other words, the different device types of the storage volume178, as well as the ratio of the device types of the storage volume178, may be transparent to the cloud computing client device170.

As previously noted, SSD devices136, while higher performing, may also have a larger carbon footprint as compared to HDD devices134. For parameters144which specify a lower energy consumption, the storage provisioning engine160may specify a higher ratio of HDDs134to SSDs136within the storage volume178. Similarly, parameters144which specify a higher performance with less regard to energy consumption may specify a higher ratio of SSDs136to HDDs134within the storage volume178. InFIG.3, the storage volume178is illustrated as having three HDDs134and two SSDs136, but this is merely an example and is not intended to limit the embodiments of the present disclosure.

In this way, the configuration file142may be created based on the parameters144without requiring that a user and/or administrator specifically allocate the devices. Instead, the user and/or administrator may instead express their preferences in terms of the performance, cost, and/or energy consumption of the resulting cloud computing client device170, and the configuration142of the cloud computing client device170may be generated automatically.

In addition to the ratios and/or types of the storage devices, settings associated with the storage volume178may also be set with respect to the parameters144. For example, deduplication settings310, compression settings320, encryption settings330, and/or caching settings340may be automatically set in response to the parameters144.

As an example, the deduplication settings may indicate that deduplication is to be performed on the storage volume178. In some embodiments, this may reduce the size of the storage volume178and/or the number of devices of the storage volume178, but may have a penalty of additional processing and/or memory usage.

The compression settings may indicate that compression is to be performed on the data of the storage volume178. In some embodiments, this may also reduce the size of the storage volume178and/or the number of devices of the storage volume178, but may have a penalty of additional processing and/or memory usage.

The encryption settings may indicate that encryption is to be performed on the data of the storage volume178. In some embodiments, this may increase the security of the data of the storage volume178at the expense of additional processing and/or memory usage.

The caching settings may indicate that caching is to be performed on accesses of the data of the storage volume178. In some embodiments, this may increase the performance of accesses made to the data of the storage volume178at the expense of additional storage requirements of the storage volume as well as potentially additional energy expenditure due to additional processing and/or memory usage.

The provisioning component115may analyze the parameters144and make changes to the deduplication settings310, compression settings320, encryption settings330, and/or caching settings340to meet the requested parameters144. For example, one or more of the deduplication settings310, compression settings320, encryption settings330, and/or caching settings340may be modified with respect to the storage volume178based on the one or more parameters144. For example, if the parameters144indicate that a resulting cloud computing client device170is to have a lower energy expenditure and/or carbon footprint, the deduplication settings310may be set to indicate deduplication is to be provided for the storage volume178, and the compression setting320may be set to indicate compression is to be provided for the storage volume178, so as to reduce the number of HDDs134and/or SSDs136used as part of the storage volume178.

Based on the settings of the storage volume178and/or the deduplication settings310, compression settings320, encryption settings330, and/or caching settings340, additional changes may be made to the configuration file142. For example, in response to the settings, the compute provisioning engine150may make further modifications to processor(s)172and/or memory174of the cloud computing client device170configured by the configuration file142. For example, the compute provisioning engine150may provision the cloud computing client device170to have additional memory174and/or processor(s)172beyond that initially set for the cloud computing client device170(e.g., by a user and/or administrator, or by the capacity parameter of the parameters144). In some embodiments, the compute provisioning engine150may determine a first quantity of memory174and/or processor(s)172based on the requirements of an application to be executed on the cloud computing client device170or as specified in the parameters144(e.g., as a capacity parameter). The compute provisioning engine150may further increase (or decrease) the quantity of memory174and/or processor(s)172based on the data services indicated by the deduplication settings310, compression settings320, encryption settings330, and/or caching settings340.

In the example, ofFIG.3, which is merely for illustration purposes, two processor(s)172and three elements of memory174are initially provisioned by the compute provisioning engine150. For example, the initial provisioning may be in response to a configuration specified by the user and/or administrator of the cloud computing client device170. In response to the parameters144and/or the deduplication settings310, compression settings320, encryption settings330, and/or caching settings340of the storage volume178, an additional processor172and an additional amount of memory174(illustrated by dashed lines inFIG.3) may be added. In some embodiments, the processor(s)172and/or memory174may be added to meet the parameters144. For example, if deduplication is set by the deduplication setting310, additional processor172and memory174capacity may be added to the cloud computing client device170to perform the deduplication without negatively impacting the performance of the cloud computing client device170.

As illustrated inFIG.3, the parameters144may be analyzed by the provisioning component115to determine a relative preference for an energy expenditure and/or carbon footprint to be met by the resulting cloud computing client device170. The provisioning component115(e.g., by way of the storage provisioning engine160and/or the compute provisioning engine150) may be used to generate a configuration file142that specifies a storage volume178having a determined ratio of storage device types that meeting the specifications of the parameters144. For example, more HDDs134(vs. SSDs136) may be provided as part of the storage volume178responsive to parameters144that indicate a lower energy expenditure or carbon footprint.

The settings for the storage volume178(e.g., the deduplication settings310, compression settings320, encryption settings330, and/or caching settings340) may be further utilized to adjust the energy expenditure and/or carbon footprint of the cloud computing client device170. Changes to the settings of the storage volume178may result in further adjustments to the components of the cloud computing client device170(e.g., the memory174and/or processor(s)172) that are further adjusted in light of the provided parameters144. In this way, the provisioning component115may generate a configuration file142that results in a cloud computing client device170that best meets the parameters144provided by the user and/or administrator of the cloud computing client device170.

ThoughFIG.3illustrates a list of individual parameters144, the embodiments of the present disclosure are not limited to such a configuration. In some embodiments, the parameters144may be grouped in particular profiles that may be selected by a user and/or administrator. For example, a “low carbon footprint” profile may be provided that combines a number of the settings (e.g., the deduplication settings310, compression settings320, encryption settings330, and/or caching settings340) to generate parameters144that generally favor lower expenditure of power (e.g., a higher ratio of HDDs134). As another example, a “high performance” profile may be provided that combines a number of the settings (e.g., the deduplication settings310, compression settings320, encryption settings330, and/or caching settings340) to generate parameters144that generally favor higher performance as compared to a lower expenditure of power (e.g., a higher ratio of SSDs136). It will be understood that other profile types could be provided within the scope of the present disclosure.

The configuration file142may be used to launch and/or administer the cloud computing client device170. In some embodiments, the storage volume178managed and/or created by the configuration file142may be managed atomically with the cloud computing client device170. For example, the storage volume178may be created, migrated, backed up, and/or destroyed atomically with the cloud computing client device170. In some embodiments, a user and/or administrator may be able to change the parameters144associated with a given cloud computing client device170. In some embodiments, changing the parameters144may result in the configuration of the cloud computing client device170being automatically reconfigured. In some embodiments, changing the parameters144may result in the configuration of the cloud computing client device170being changed, and the cloud computing client device170being migrated to the new configuration. In some embodiments, if the new configuration results in a different configuration of the storage volume178(e.g., a different ratio of storage device types), the data from the previous storage volume178may be migrated to the new storage volume178having the updated ratio of storage device types.

FIG.4is a flow diagram of a method400for provisioning a cloud computing client device170, in accordance with some embodiments of the present disclosure. Method400may be performed by processing logic that may comprise hardware (e.g., circuitry, dedicated logic, programmable logic, a processor, a processing device, a central processing unit (CPU), a system-on-chip (SoC), etc.), software (e.g., instructions running/executing on a processing device), firmware (e.g., microcode), or a combination thereof. In some embodiments, the method400may be performed by a computing device (e.g., computing device120illustrated inFIGS.1and3).

With reference toFIG.4, method400illustrates example functions used by various embodiments. Although specific function blocks (“blocks”) are disclosed in method400, such blocks are examples. That is, embodiments are well suited to performing various other blocks or variations of the blocks recited in method400. It is appreciated that the blocks in method400may be performed in an order different than presented, and that not all of the blocks in method400may be performed.

Referring simultaneously toFIGS.1and3as well, the method400begins at block410, in which one or more parameters144corresponding to a targeted energy characteristic of a computing client device170are received. In some embodiments, the one or more of the parameters144comprise an energy characteristic, a performance characteristic, a cost characteristic, a capacity characteristic, a location characteristic, or a reliability characteristic. In some embodiments, the computing client device170comprises a software container or a virtual machine.

At block420, a ratio of types of storage devices allocated to the computing client device170are adjusted based on the one or more parameters144. In some embodiments, the types of the storage devices comprise HDDs, SSDs, and/or NVMe drives.

At block430, a storage volume178for the computing client device170is provisioned according to the ratio of the types of the storage devices. In some embodiments, the storage volume178comprises a logical volume comprising one or more first storage devices of a first type and one or more second storage devices of a second type, different from the first type, and the storage volume178is provided to the computing client device170over a network140.

In some embodiments, the method400further includes adjusting one or more of a deduplication setting, a cache setting, or a compression setting of the storage volume based on the one or more parameters144. The method400may also include adjusting a number of processing units (e.g., processor(s)172) allocated to the computing client device and an amount of memory174allocated to the computing client device170based on one or more of the deduplication setting, the cache setting, or the compression setting of the storage volume178.

FIG.5is a component diagram of an example of a device architecture500, in accordance with embodiments of the disclosure. The device architecture500includes computing device120having processing device122and memory124, as described herein with respect toFIGS.1and3.

The computing device120may receive a plurality of parameters144. The plurality of parameters144may correspond to a targeted energy characteristic of a computing client device170. The computing device120(e.g., through operation of processing device122) may adjust a ratio512of types510A,510B of storage devices510allocated to a storage volume178for the computing client device170based on the one or more parameters144, as described herein with respect toFIGS.1to4. The storage devices510may have a first type510A (e.g., HDD) and a second type510B (e.g., SSD) that are different from one another, as described herein with respect toFIGS.1to4. A storage volume178for the computing client device170may be provisioned according to the ratio512of the types510A,510B of the storage devices510, as described herein with respect toFIGS.1to4.

The device architecture500ofFIG.5provides a technological capability to dynamically configure a computing client device170to match energy goals of a user and/or administrator, as reflected by the one or more parameters144provided to the computing device120. In some embodiments, the ratio512of the storage devices510may allow the energy expenditure and/or carbon footprint of the storage volume178to be more precisely adjusted by mixing the types510A,510B of the storage devices510used for the storage volume178.

FIG.6is a block diagram of an example computing device600that may perform one or more of the operations described herein, in accordance with some embodiments of the disclosure. Computing device600may be connected to other computing devices in a LAN, an intranet, an extranet, and/or the Internet. The computing device may operate in the capacity of a server machine in client-server network environment or in the capacity of a client in a peer-to-peer network environment. The computing device may be provided by a personal computer (PC), a set-top box (STB), a server, a network router, switch or bridge, or any machine capable of executing a set of instructions (sequential or otherwise) that specify actions to be taken by that machine. Further, while only a single computing device is illustrated, the term “computing device” shall also be taken to include any collection of computing devices that individually or jointly execute a set (or multiple sets) of instructions to perform the methods discussed herein.

The example computing device600may include a processing device (e.g., a general purpose processor, a PLD, etc.)602, a main memory604(e.g., synchronous dynamic random access memory (DRAM), read-only memory (ROM)), a static memory606(e.g., flash memory and a data storage device618), which may communicate with each other via a bus630.

Processing device602may be provided by one or more general-purpose processing devices such as a microprocessor, central processing unit, or the like. In an illustrative example, processing device602may include a complex instruction set computing (CISC) microprocessor, reduced instruction set computing (RISC) microprocessor, very long instruction word (VLIW) microprocessor, or a processor implementing other instruction sets or processors implementing a combination of instruction sets. Processing device602may also include one or more special-purpose processing devices such as an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), a digital signal processor (DSP), network processor, or the like. The processing device602may execute the operations described herein, in accordance with one or more aspects of the present disclosure, for performing the operations and steps discussed herein.

Computing device600may further include a network interface device608which may communicate with a network620. The computing device600also may include a video display unit610(e.g., a liquid crystal display (LCD) or a cathode ray tube (CRT)), an alphanumeric input device612(e.g., a keyboard), a cursor control device614(e.g., a mouse) and an acoustic signal generation device616(e.g., a speaker). In one embodiment, video display unit610, alphanumeric input device612, and cursor control device614may be combined into a single component or device (e.g., an LCD touch screen).

Data storage device618may include a computer-readable storage medium628on which may be stored one or more sets of instructions625that may include instructions for a component (e.g., provisioning component115, compute provisioning engine150, and/or storage provisioning engine160discussed herein) for carrying out the operations described herein, in accordance with one or more aspects of the present disclosure. Instructions625may also reside, completely or at least partially, within main memory604and/or within processing device602during execution thereof by computing device600, main memory604and processing device602also constituting computer-readable media. The instructions625may further be transmitted or received over a network620via network interface device608.

While computer-readable storage medium628is shown in an illustrative example to be a single medium, the term “computer-readable storage medium” should be taken to include a single medium or multiple media (e.g., a centralized or distributed database and/or associated caches and servers) that store the one or more sets of instructions. The term “computer-readable storage medium” shall also be taken to include any medium that is capable of storing, encoding or carrying a set of instructions for execution by the machine and that cause the machine to perform the methods described herein. The term “computer-readable storage medium” shall accordingly be taken to include, but not be limited to, solid-state memories, optical media and magnetic media.

Unless specifically stated otherwise, terms such as “receiving,” “adjusting,” “provisioning,” or the like, refer to actions and processes performed or implemented by computing devices that manipulates and transforms data represented as physical (electronic) quantities within the computing device's registers and memories into other data similarly represented as physical quantities within the computing device memories or registers or other such information storage, transmission or display devices. Also, the terms “first,” “second,” “third,” “fourth,” etc., as used herein are meant as labels to distinguish among different elements and may not necessarily have an ordinal meaning according to their numerical designation.

Examples described herein also relate to an apparatus for performing the operations described herein. This apparatus may be specially constructed for the required purposes, or it may comprise a general purpose computing device selectively programmed by a computer program stored in the computing device. Such a computer program may be stored in a computer-readable non-transitory storage medium.

The methods and illustrative examples described herein are not inherently related to any particular computer or other apparatus. Various general purpose systems may be used in accordance with the teachings described herein, or it may prove convenient to construct more specialized apparatus to perform the required method steps. The required structure for a variety of these systems will appear as set forth in the description above.

The above description is intended to be illustrative, and not restrictive. Although the present disclosure has been described with references to specific illustrative examples, it will be recognized that the present disclosure is not limited to the examples described. The scope of the disclosure should be determined with reference to the following claims, along with the full scope of equivalents to which the claims are entitled.

As used herein, the singular forms “a”, “an” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms “comprises”, “comprising”, “includes”, and/or “including”, when used herein, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof. Therefore, the terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting. As used herein, the term “and/or” includes any and all combination of one or more of the associated listed items.

It should also be noted that in some alternative implementations, the functions/acts noted may occur out of the order noted in the figures. For example, two figures shown in succession may in fact be executed substantially concurrently or may sometimes be executed in the reverse order, depending upon the functionality/acts involved.

Although the method operations were described in a specific order, it should be understood that other operations may be performed in between described operations, described operations may be adjusted so that they occur at slightly different times or the described operations may be distributed in a system which allows the occurrence of the processing operations at various intervals associated with the processing.

Various units, circuits, or other components may be described or claimed as “configured to” or “configurable to” perform a task or tasks. In such contexts, the phrase “configured to” or “configurable to” is used to connote structure by indicating that the units/circuits/components include structure (e.g., circuitry) that performs the task or tasks during operation. As such, the unit/circuit/component can be said to be configured to perform the task, or configurable to perform the task, even when the specified unit/circuit/component is not currently operational (e.g., is not on). The units/circuits/components used with the “configured to” or “configurable to” language include hardware—for example, circuits, memory storing program instructions executable to implement the operation, etc. Reciting that a unit/circuit/component is “configured to” perform one or more tasks, or is “configurable to” perform one or more tasks, is expressly intended not to invoke 35 U.S.C. 112, sixth paragraph, for that unit/circuit/component. Additionally, “configured to” or “configurable to” can include generic structure (e.g., generic circuitry) that is manipulated by software and/or firmware (e.g., an FPGA or a general-purpose processor executing software) to operate in manner that is capable of performing the task(s) at issue. “Configured to” may also include adapting a manufacturing process (e.g., a semiconductor fabrication facility) to fabricate devices (e.g., integrated circuits) that are adapted to implement or perform one or more tasks. “Configurable to” is expressly intended not to apply to blank media, an unprogrammed processor or unprogrammed generic computer, or an unprogrammed programmable logic device, programmable gate array, or other unprogrammed device, unless accompanied by programmed media that confers the ability to the unprogrammed device to be configured to perform the disclosed function(s).

The foregoing description, for the purpose of explanation, has been described with reference to specific embodiments. However, the illustrative discussions above are not intended to be exhaustive or to limit the invention to the precise forms disclosed. Many modifications and variations are possible in view of the above teachings. The embodiments were chosen and described in order to best explain the principles of the embodiments and its practical applications, to thereby enable others skilled in the art to best utilize the embodiments and various modifications as may be suited to the particular use contemplated. Accordingly, the present embodiments are to be considered as illustrative and not restrictive, and the invention is not to be limited to the details given herein, but may be modified within the scope and equivalents of the appended claims.