Aggregating host machines into a single cloud node for workloads requiring excessive resources

A system and method for aggregating host machines into a single cloud node for workloads requiring excessive resources. The method includes providing a plurality of computing devices in association with a cloud service system. The method includes defining an aggregated node of the cloud service system corresponding to at least two computing devices of the plurality of computing devices. The method includes exposing an application programming interface (API) that is indicative of combined resources of the at least two computing devices of the plurality of computing devices. The method includes receiving a query to perform a workload requiring a set of resources that exceed the resources provided by each of the computing devices of the cloud service system. The method includes forwarding, to the aggregated node, the query to cause the at least two computing devices to perform the workload using the combined resources of the least two computing device.

TECHNICAL FIELD

The present disclosure relates generally to software technology, and more particularly, to systems and methods for aggregating host machines into a single cloud node for workloads requiring excessive resources.

BACKGROUND

Cloud service systems are infrastructure, platforms, or software that are hosted by third-party providers and made available to users through the internet. Cloud services facilitate the flow of user data from front-end clients (e.g. servers, tablets, desktops, laptops—anything on the client's end), through the internet, to the provider's systems, and back. Clients can access cloud services with nothing more than a computer, operating system, and internet connectivity or virtual private network (VPN).

DETAILED DESCRIPTION

Some workloads/application may require huge amounts of resources (e.g., memory, processing, etc.), that are impossible to obtain from a single host machine in a cloud computing environment. Such workloads usually are distributed applications, meaning that they scale natively when installed on several host machines. For example, a general-purpose distributed memory-caching system (e.g., Memcache) may speed up dynamic database-driven websites by caching data and objects in Random-Access Memory (RAM) to reduce the number of times an external data source (e.g., a database or Application Programming Interface (API)) must be read. While current cloud environments might allow the resource-demanding application to work, the cloud computing environment will require the developer of the application to split the application into multiple workloads (e.g., micro-services) in order to scale. However, that will require more development effort as well as extra administration and configuration in order to implement and deploy the application into the cloud.

Aspects of the present disclosure address the above-noted and other deficiencies by aggregating host machines into a single cloud node for workloads requiring excessive resources. As a result, the developer of the application does not have to split the application into multiple workloads and/or multiple containers. Furthermore, the cloud computing environment does not have to scale resources from other nodes in the cloud computing environment to process the workload, which is a technique that increases network congestion within the cloud computing environment due to the additional messaging (and data transfers) to/from the scaled resources. Accordingly, the embodiments of the present disclosure reduce the amount of networking resources needed to process workloads, as well as, a decrease in network congestion and power consumption for the overall network infrastructure.

As discussed in greater detail below, a cloud service system may provide a plurality of computing devices, where each computing device corresponds to a respective node of a plurality of nodes in the cloud service system. Each computing device may provide one or more resources (e.g., software and/or hardware) for the cloud service system. The cloud service system (or an administrator of the cloud service system) may define an aggregated node that corresponds to at least two computing devices of the plurality of computing devices in the cloud computing system. The aggregated node may expose, to a scheduler device of the cloud service system, an application programming interface (API) that is indicative of the combined resources (e.g., memory, processing, etc.) of the at least two computing devices of the aggregated node. The scheduler device may receive, responsive to receiving the API from the aggregated node, a query to perform a workload requiring a set of resources that exceed the resources provided by each of the computing devices of the cloud service system that sit outside of the aggregated node. The scheduler device may forward the query to the aggregated node to cause the at least two computing devices of the aggregated node to perform the workload using the combined resources of the least two computing devices.

FIG.1is a block diagram depicting an example environment for aggregating host machines into a single cloud node for workloads requiring excessive resources, according to some embodiments. The environment100includes a cloud service system114, a client device102, and a cloud administrator device118that are each communicably coupled together via a communication network (not shown inFIG.1). The client device102executes a client application112that is configured to send (e.g., provide, transmit, submit) to the cloud service system114one or more queries (shown inFIG.1as, “Workload Query”)) to perform one or more workloads. An administrator of the cloud service system114may use the cloud administrator device118to configure and/or manage (e.g., controls, operates) the cloud service system114by sending commands (shown inFIG.1as, “Cloud Configuration Commands”) to the cloud service system114. In some embodiments, the client application112is included in a single container associated with a Docker platform. In some embodiments, the client application112is included in a single Pod associated with a Kubernetes platform.

The communication network120may 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 some embodiments, communication network120may include a wired or a wireless infrastructure, which may be provided by one or more wireless communications systems, such as wireless fidelity (Wi-Fi) connectivity to the communication network120and/or a wireless carrier system that can be implemented using various data processing equipment, communication towers (e.g. cell towers), etc. The communication network120may carry communications (e.g., data, message, packets, frames, etc.) between any other the computing device.

The cloud service system114includes host machines104a,104b,104c,104d,104e(collectively referred to as, “host machines104”) and scheduler device116that are each communicably connected to one another via the communication network120to form a cloud service system for providing services and/or computing resources (collectively referred to as, “services” or “cloud services”) to the client device102, which are used to process the workload queries that are submitted from client application112. The cloud service system114may provide any type of cloud service and/or computing resource including, for example, networking services, block storage services, computing services, object storage services, database services, communication services, deployment and management services, monitoring services, telemetry services, queuing services, collaboration services, application services, and the like.

The cloud service system114may be any type of cloud service. In some embodiments, the cloud service may be an Infrastructure-as-a-Service (IaaS) that provides users with compute, networking, and storage resources. In some embodiments, the cloud service may be a Platform-as-a-Service (PaaS) that provides users with a platform on which applications can run, as well as the information technology (IT) infrastructure for it to run. In some embodiments, the cloud service may be a Software-as-a-Service (SaaS) that provides users with a cloud application, the platform on which it runs, and the platform's underlying infrastructure. In some embodiments, the cloud service may be a Function-as-a-Service (FaaS) that is an event-driven execution model that lets the developers build, run, and manage application packages as functions without maintaining the infrastructure.

A host machine104, a scheduler device116, a client device102, and a cloud administrator device may each be any suitable type of computing device or machine that has a processing device, for example, a server computer (e.g., an application server, a catalog server, a communications server, a computing server, a database server, a file server, a game server, a mail server, a media server, a proxy server, a virtual server, a web server), a desktop computer, a laptop computer, a tablet computer, a mobile device, a smartphone, a set-top box, a graphics processing unit (GPU), etc. In some examples, a computing device may comprise a single machine or may include multiple interconnected machines (e.g., multiple servers configured in a cluster).

A host machine104may be one or more virtual environments. In one embodiment, a virtual environment may be a virtual machine (VM) that may execute on a hypervisor which executes on top of an operating system (OS) for a computing device. The hypervisor may manage system sources (including access to hardware devices, such as processing devices, memories, storage devices). The hypervisor may also emulate the hardware (or other physical resources) which may be used by the VMs to execute software/applications. In another embodiment, a virtual environment may be a container that may execute on a container engine which executes on top of the OS for a computing device. For example, a container engine may allow different containers to share the OS of a computing device (e.g., the OS kernel, binaries, libraries, etc.). The cloud service system114may use the same type or different types of virtual environments. For example, all of the host machines104may be VMs. In another example, all of the host machines104may be containers. In a further example, some of the host machines104may be VMs, other host machines104may be containers, and other host machines104may be computing devices (or groups of computing devices).

Still referring toFIG.1, the scheduler device116is configured to receive a workload query (shown inFIG.1as, “Workload Query”) from the client application112that is executing on the client device102, determine which node within the cloud service system114is able to process the workload queries, and forward (shown inFIG.1as, “Forwarded Workload Queries”) the workload query to the node that is able to process the workload query. Each node is configured to send a message (shown inFIG.1as, “Exposure Message”) to the scheduler device116to expose an application programming interface (API) to the services and/or resources (e.g., processor, storage, and/or cache memory, etc.) that are provided by the node. The scheduler device116determines which node is capable of processing/perform the workload query based on the exposure messages that the scheduler device116receives from each of the nodes within the cloud service system114.

By default, each host machine104may be defined as a separate, single node. For example, host machine104ais defined as a first node (shown inFIG.1as, node110), host machine104bis defined as a second node, host machine104cis defined as a third node, host machine104dis defined as a fourth node, and host machine104dis defined as a fifth node. In some embodiments, the scheduler device116is not aware of the particular host machine(s)104that make up each node, but rather, the scheduler device116is only aware of which nodes exist within the cloud service system114.

In some embodiments, the cloud administrator device118may generate (e.g., define) a mapping file (e.g., metadata) that includes a plurality of host machine identifiers and a plurality of node identifiers, where each mapping indicates which host machine104within the cloud service system114corresponds to which respective node of the plurality of nodes. The cloud administrator device118may send a cloud configuration command to the scheduler device116that includes the mapping file to inform the scheduler device116about the nodes within the cloud service system114.

The cloud administrator device118may send a cloud administrator command to each of the host machines104to install (e.g., deploy, store, etc.) a node agent105on the host machine104, which is configured with server functionality and client functionality. For example, a first node agent (shown inFIG.1as, node agent105) is installed on host machine104a, a second node agent is installed on host machine104b, a third node agent is installed on host machine104c, a fourth node agent is installed on host machine104d, and a fifth node agent is installed on host machine104e.

The cloud administrator may decide to aggregate (e.g., group, cluster) two or more host machines104that are within their own respective single nodes into a single, aggregated node that has the combined service and/or resource capabilities of the two or more host machines104, but where the scheduler device116is unaware that the aggregated node corresponds to the two or more host machines104. For example, the cloud administrator device118may generate (e.g., define) a mapping file that indicates that the cloud service system114includes a first node (e.g., node110) and a second node (e.g., aggregated node113), where node110includes host machine104aand aggregated node113includes host machines,104b,104c,104d,104e. The client administrator may select the host machines104to be aggregated into a single, aggregated node by using an application that executes on the cloud administrator device118.

Upon generating (e.g., defining) an aggregated node, the cloud administrator may split the node agent installed on each host machine104of the aggregated node113into a server agent, which is configured with the server functionality of the node agent, and a client agent, which is configured with the client functionality of the node agent. For example, as shown inFIG.1, client administrator device188may send a cloud configuration command to the cloud service system114to cause the node agent executing on host machines104bto split into server agent106band client agent108b; the node agent executing on host machines104cto split into server agent106cand client agent108c; the node agent executing on host machines104dto split into server agent106dand client agent108d; and the node agent executing on host machines104eto split into server agent106eand client agent108e. In some embodiments, splitting the node agent105be refer to the cloud administrator device118sending a cloud configuration command to the cloud service system114to install a server agent106and a client agent108on each of the host machines104in aggregated node113.

In some embodiments, the scheduler device116(or another computing device associated with the cloud service system114) may be configured to determine, based on the cloud configuration commands, which host machines104should be aggregated into aggregated node113, and carry out the procedure to aggregate the host machines104according to the determination. In some embodiments, the scheduler device116(or another computing device associated with the cloud service system114) may be configured to send installation commands to each of the host machines104to install either a node agent105or a server agent106and a client agent108.

The cloud administrator device118and/or the cloud service system114(e.g., scheduler device116) may be configured to cause each of the host machines104within a single, non-aggregated node (e.g., node110) to execute (e.g., launch, run) the node agent105that was previously installed on the respective host machine104. For example, the cloud administrator device118may send a cloud configuration command to the cloud service system114to cause host machine104ato execute the node agent105that was previously installed on the host machine104a. Alternatively, the scheduler device116may be configured to send a command to the host machine104to cause the host machine104ato execute the node agent105.

The cloud administrator device118and/or the cloud service system114(e.g., scheduler device116) may be configured to cause each of the host machines104within a single, aggregated node (e.g., aggregated node113) to execute either the server agent106or the client agent108that was previously installed on the respective host machine104. For example, the cloud administrator device118may send a cloud configuration command to the cloud service system114to cause the host machine104bto execute the server agent106bthat was previously installed on the host machine104b, the host machine104cto execute the client agent108cthat was previously installed on the host machine104c, the host machine104dto execute the client agent108dthat was previously installed on the host machine104d, and the host machine104eto execute the client agent108ethat was previously installed on the host machine104. Alternatively, the scheduler device116may be configured to send one or more commands to the host machines104b,104c,104d,104eto cause the host machines104b,104c,104d,104eto execute either the server agent106or the client agent108.

In some embodiments, the scheduler device116prevents more than one host machine104in an aggregated node113from executing a server agent106at a time. For example, scheduler device116keeps server agents106c,106d,106ddisabled (e.g., not executing) while server agent10bis enabled (e.g., executing). The grey color inFIG.1indicates that a server agent is disabled. In some embodiments, other aggregated nodes (not shown inFIG.1) within the cloud service system114are permitted to execute a single instance of their server agent106while server agent106of the aggregated node113is executing.

Upon being executed, the node agent105of node110begins (e.g., periodically, when resource availability changes, etc.) sending one or more exposure messages to the scheduler device116to expose one or more application programming interface (APIs) to the services and/or resources (e.g., processor, storage, and/or cache memory, etc.) that are provided by host machine104a. Similarly, upon being executed, the server agent106bof aggregated node113begins (e.g., periodically, when resource availability changes, etc.) sending one or more exposure messages to the scheduler device116to expose one or more application programming interface (APIs) to the services and/or resources (e.g., processor, storage, and/or cache memory, etc.) that are provided by host machines104b,104c,104d,104e.

Now that the cloud service system114is configured, the cloud service system114is able to provide one or more cloud services and/or resources to one or more client devices. The client application112executing on the client device102may send a query (e.g., workload query) to process a workload to the scheduler device116. The scheduler device166may determine, based on the APIs exposed from the node110, that the workload may require a set of resources that exceed the resources provided by node110. As a result, (1) the developer of client application112must first split the client application112into multiple workloads and/or multiple containers (e.g., Pods); and/or (2) the cloud service system114must scale resources from other nodes in order for the cloud service system114to process the workload using one or more nodes, where each node includes only a single host machine104.

Conversely, the scheduler device116may determine, based on the APIs exposed from the aggregated node113, that the resources provided by aggregated node113exceed the set of resources needed to perform the workload. As a result, the developer of client application112does not have to split the client application112into multiple workloads and/or multiple containers (e.g., Pods), and the cloud service system114does not have to scale resources from other nodes of the plurality of nodes in order for the cloud service system114to process the workload. In response to determining that the aggregated node113is capable of processing/performing the workload, the scheduler device116forwards (e.g., sends, redirects) the query to the server agent106bexecuting on host machine104, which causes the server agent106to allocate resources from the aggregated node113to process/perform the workload. As shown inFIG.1, a plurality of host machines104(e.g., host machines104c-104e) may share the resource burden of processing the workload.

AlthoughFIG.1shows only a select number of computing devices (e.g., host machines104, client devices102, and cloud administrator devices118), the environment100may include any number of computing devices that are interconnected in any arrangement to facilitate the exchange of data between the computing devices.

FIG.2Ais a block diagram depicting an example host machine104of the cloud service system114inFIG.1, according to some embodiments. While various devices, interfaces, and logic with particular functionality are shown, it should be understood that the one or more host machines104(e.g., host machines104a-104e) of the cloud service system114includes any number of devices and/or components, interfaces, and logic for facilitating the functions described herein. For example, the activities of multiple devices may be combined as a single device and implemented on a same processing device (e.g., processing device202a), as additional devices and/or components with additional functionality are included.

The host machine104includes a processing device202a(e.g., general purpose processor, a PLD, etc.), which may be composed of one or more processors, and a memory204a(e.g., synchronous dynamic random access memory (DRAM), read-only memory (ROM)), which may communicate with each other via a bus (not shown).

The memory204a(e.g., Random Access Memory (RAM), Read-Only Memory (ROM), Non-volatile RAM (NVRAM), Flash Memory, hard disk storage, optical media, etc.) of processing device202astores data and/or computer instructions/code for facilitating at least some of the various processes described herein. The memory204aincludes tangible, non-transient volatile memory, or non-volatile memory. The memory204astores programming logic (e.g., instructions/code) that, when executed by the processing device202a, controls the operations of the host machine104. In some embodiments, the processing device202aand the memory204aform various processing devices and/or circuits described with respect to the host machine104. The instructions include code from any suitable computer programming language such as, but not limited to, C, C++, C #, Java, JavaScript, VBScript, Perl, HTML, XML, Python, TCL, and Basic.

The processing device202amay either execute a node agent105, or a server agent106and a client agent108. In some embodiments, the cloud administrator device118and/or the processing device202amay store the node agent105, the server agent107, and the client agent108in an internal storage (e.g., memory204a, database, etc.) of the host machine104(e.g., host machine104b). In some embodiments, the server agent106may be configured to perform the server functionality of the node agent105inFIG.1. In some embodiments, the client agent108may be configured to perform the client functionality of the node agent105inFIG.1.

The server functionality and the client functionality of the node agent105will now be described with respect to the server agent106and the client agent108, respectively.

In some embodiments, the server agent106of the aggregated node113may be configured to determine (e.g., detect, sense), for each host machine104(e.g., host machine104b-104e) of the aggregated node113, the set of resources and corresponding APIs that are associated with the host machine104, and generate a list of APIs associated with the host machines104of the aggregated node113. In other words, the list of APIs may indicate the combined set of resources that are available (e.g., a Ready state) from the host machines104of the aggregated node113.

In some embodiments, the set or resources may correspond to any software and/or hardware component of the host machine104, such as a processor, memory, a storage device, an adapter (e.g., networking, audio, etc.), one or more ports/interfaces, a video graphics card, a motherboard, and/or the like. In some embodiments, a hardware identifier may identify the type of hardware, the version of the hardware, the model number of the hardware, the brand of the hardware, the specifications for the hardware (e.g., networking speed and/or bandwidth, processor speed, load balancing capabilities, multi-threading capabilities), a count of hardware components (e.g., a count of the processors), and/or the like.

In some embodiments, the server agent106may be configured to expose the list of APIs to the scheduler device116by sending a message (shown inFIG.1as, Exposure Message”) to the scheduler device116, where the message includes the list of APIs. In some embodiments, the exposure message may indicate whether the aggregated node113is available and/or has the capability (e.g., not in an error state, etc.) to perform workloads.

In some embodiments, the server agent106may be configured to receive a query to perform a workload from the scheduler device116. In some embodiments, the server agent106may be configured to determine that the resources of a different host machine (e.g., host machine104c) of the aggregated node113exceed the set of resources required to perform the workload, and in response, forwarding the query to a client agent108cexecuting on the different host machine. In other words, the server agent106is able to determine that the different host machine has enough resources to perform the workload without having to share the processing burden with another host machine104.

In some embodiments, the server agent106may be configured to establish a communication layer (e.g., a channel) between the server agent106and a client agent (e.g., client agent108c) executing on the different host machine (e.g., host machine104c) of the aggregated node113. In some embodiments, the server agent106may be configured to forward (e.g., redirect, send) the query to perform the workload to the client agent (e.g., client agent108c) executing on the different host machine (e.g., host machine104c) via the communication layer.

In some embodiments, the server agent106may be configured to determine that the set of resources required to perform the workload (as indicated by the query) exceeds the resources of each of the host machines104in the aggregated node113, and in response, forward the query to each of the client agents108that are executing on each of the host devices104of the aggregated node113in order for the workload to be shared across all the host devices104. For example, the host machine104cmay perform a first portion (e.g., tasks) of the workload of the query using the its resources and host machine104dmay perform a second portion (e.g., tasks) of the workload of the query using the its resources. In some embodiments, the first portion and the second portion may be different portions of the query.

In some embodiments, the server agent106may be configured to establish a communication layer between the client agents108executing on the host machines104of the aggregated node113that are sharing the workload, which may be used by the client agents108to share information related to the workload.

In some embodiments, the server agent106may be configured to determine that the workload is not configured to execute in a distributed environment, and in response, reject the request to perform the workload.

The processing device202amay execute a host management component210athat may be configured to receive a cloud administrator command to install (e.g., deploy, store, etc.) the node agent105, the server agent106, and/or the client agent108onto the host machine104, and in response, the host management component210ainstalls the respective agents onto the host machine104. In some embodiments, the host management component210amay be configured to receive a cloud administrator command to execute (e.g., launch, activate) the node agent105, the server agent106, and/or the client agent108installed on the host machine104, and in response, the host management component210aexecutes the respective agents using the processing device202a.

The host machine104includes a network interface206aconfigured to establish a communication session with a computing device for sending and receiving data over the communication network120to the computing device. Accordingly, the network interface206aincludes a cellular transceiver (supporting cellular standards), a local wireless network transceiver (supporting 802.11X, ZigBee, Bluetooth, Wi-Fi, or the like), a wired network interface, a combination thereof (e.g., both a cellular transceiver and a Bluetooth transceiver), and/or the like. In some embodiments, the host machine104includes a plurality of network interfaces206aof different types, allowing for connections to a variety of networks, such as local area networks (public or private) or wide area networks including the Internet, via different sub-networks.

The host machine104includes an input/output device205aconfigured to receive user input from and provide information to a user. In this regard, the input/output device205ais structured to exchange data, communications, instructions, etc. with an input/output component of the host machine104. Accordingly, input/output device205amay be any electronic device that conveys data to a user by generating sensory information (e.g., a visualization on a display, one or more sounds, tactile feedback, etc.) and/or converts received sensory information from a user into electronic signals (e.g., a keyboard, a mouse, a pointing device, a touch screen display, a microphone, etc.). The one or more user interfaces may be internal to the housing of the host machine104, such as a built-in display, touch screen, microphone, etc., or external to the housing of the host machine104, such as a monitor connected to the host machine104, a speaker connected to the host machine104, etc., according to various embodiments. In some embodiments, the host machine104includes communication circuitry for facilitating the exchange of data, values, messages, and the like between the input/output device205aand the components of the host machine104. In some embodiments, the input/output device205aincludes machine-readable media for facilitating the exchange of information between the input/output device205aand the components of the host machine104. In still another embodiment, the input/output device205aincludes any combination of hardware components (e.g., a touchscreen), communication circuitry, and machine-readable media.

The host machine104includes a device identification component207a(shown inFIG.2Aas device ID component207a) configured to generate and/or manage a device identifier associated with the host machine104. The device identifier may include any type and form of identification used to distinguish the host machine104from other computing devices. In some embodiments, to preserve privacy, the device identifier may be cryptographically generated, encrypted, or otherwise obfuscated by any device and/or component of host machine104. In some embodiments, the host machine104may include the device identifier in any communication (e.g., exposed services) that the host machine104sends to a computing device.

The host machine104includes a bus (not shown), such as an address/data bus or other communication mechanism for communicating information, which interconnects the devices and/or components of host machine104, such as processing device202a, network interface206a, input/output device205a, and/or device ID component207a.

In some embodiments, some or all of the devices and/or components of host machine104may be implemented with the processing device202a. For example, the host machine104may be implemented as a software application stored within the memory204aand executed by the processing device202a. Accordingly, such embodiment can be implemented with minimal or no additional hardware costs. In some embodiments, any of these above-recited devices and/or components rely on dedicated hardware specifically configured for performing operations of the devices and/or components.

FIG.2Bis a block diagram depicting an example of the scheduler device116of the environment inFIG.1, according to some embodiments. While various devices, interfaces, and logic with particular functionality are shown, it should be understood that the scheduler device116includes any number of devices and/or components, interfaces, and logic for facilitating the functions described herein. For example, the activities of multiple devices may be combined as a single device and implemented on a same processing device (e.g., processing device202b), as additional devices and/or components with additional functionality are included.

The scheduler device116includes a processing device202b(e.g., general purpose processor, a PLD, etc.), which may be composed of one or more processors, and a memory204b(e.g., synchronous dynamic random access memory (DRAM), read-only memory (ROM)), which may communicate with each other via a bus (not shown). The processing device202bincludes identical or nearly identical functionality as processing device202ainFIG.2a, but with respect to devices and/or components of the scheduler device116instead of devices and/or components of the host machine104.

The memory204bof processing device202bstores data and/or computer instructions/code for facilitating at least some of the various processes described herein. The memory204bincludes identical or nearly identical functionality as memory204ainFIG.2A, but with respect to devices and/or components of the scheduler device116instead of devices and/or components of the host machine104.

The processing device202bmay execute a query management component210bthat may be configured to receive a message (shown inFIG.1as, Exposure Message”) from each node in the cloud service system114, where the message includes the list of APIs corresponding to the resources provided by each node. In some embodiments, the query management component210bmay be configured to receive a query to perform a workload from the client application112executing on the client device102. In some embodiments, the query management component210bmay be configured to determine, based on the list of APIs, that the workload requires a set of resources that exceed the resources provided node110, but are less than the resources provided by the aggregated node113. In some embodiments, the query management component210bmay be configured to determine, based on the API, that the aggregated node113is capable to perform the workload using the combined resources of the aggregated node113without scaling resources from other nodes of the plurality of nodes. In response to either determination, the query management component210bforwards the query to the server agent106of the aggregated node113to aggregated node113to perform the workload using the combined resources of the aggregated node113. In some embodiments, the query to perform a workload corresponds to a single (e.g., non-split) workload.

The scheduler device116includes a network interface206bconfigured to establish a communication session with a computing device for sending and receiving data over a network to the computing device. Accordingly, the network interface206bincludes identical or nearly identical functionality as network interface206ainFIG.2A, but with respect to devices and/or components of the scheduler device116instead of devices and/or components of the host machine104.

The scheduler device116includes an input/output device205bconfigured to receive user input from and provide information to a user. In this regard, the input/output device205bis structured to exchange data, communications, instructions, etc. with an input/output component of the scheduler device116. The input/output device205bincludes identical or nearly identical functionality as input/output device205ainFIG.2A, but with respect to devices and/or components of the scheduler device116instead of devices and/or components of the host machine104.

The scheduler device116includes a device identification component207b(shown inFIG.2Bas device ID component207b) configured to generate and/or manage a device identifier associated with the scheduler device116. The device ID component207bincludes identical or nearly identical functionality as device ID component207ainFIG.2A, but with respect to devices and/or components of the scheduler device116instead of devices and/or components of the host machine104.

The scheduler device116includes a bus (not shown), such as an address/data bus or other communication mechanism for communicating information, which interconnects the devices and/or components of the scheduler device116, such as processing device202b, network interface206b, input/output device205b, device ID component207b, and the query management component210b.

In some embodiments, some or all of the devices and/or components of scheduler device116may be implemented with the processing device202b. For example, the scheduler device116may be implemented as a software application stored within the memory204band executed by the processing device202b. Accordingly, such embodiment can be implemented with minimal or no additional hardware costs. In some embodiments, any of these above-recited devices and/or components rely on dedicated hardware specifically configured for performing operations of the devices and/or components.

FIG.3is a flow diagram depicting a method for aggregating host machines into a single cloud node for workloads requiring excessive resources, according to some embodiments. Method300may 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 and/or an application that is running/executing on a processing device), firmware (e.g., microcode), or a combination thereof. In some embodiments, method300may be performed by one or more host machines, such as host machines104inFIG.1. In some embodiments, method300may be performed by a cloud service system, such as cloud service system114inFIG.1. In some embodiments, method300may be performed by a scheduler device, such as scheduler device116inFIG.1.

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

As shown inFIG.3, the method300includes the block302of providing a plurality of computing devices in association with a cloud service system, wherein each computing device corresponds to a respective node of a plurality of nodes, each computing device provides resources for the cloud service system. The method300includes the block304of defining an aggregated node of the cloud service system corresponding to at least two computing devices of the plurality of computing devices. The method300includes the block306of exposing, to a scheduler of the cloud service system, an application programming interface (API) that is indicative of combined resources of the at least two computing devices of the plurality of computing devices. The method300includes the block308of receiving, by the scheduler responsive to receiving the API, a query to perform a workload requiring a set of resources that exceed the resources provided by each of the computing devices of the cloud service system. The method300includes the block308of forwarding, by the scheduler to the aggregated node, the query to cause the at least two computing devices to perform the workload using the combined resources of the least two computing device.

The example computing device400may include a processing device (e.g., a general purpose processor, a PLD, etc.)402, a main memory404(e.g., synchronous dynamic random access memory (DRAM), read-only memory (ROM)), a static memory406(e.g., flash memory and a data storage device418), which may communicate with each other via a bus430.

Computing device400may further include a network interface device408which may communicate with a communication network420. The computing device400also may include a video display unit410(e.g., a liquid crystal display (LCD) or a cathode ray tube (CRT)), an alphanumeric input device412(e.g., a keyboard), a cursor control device414(e.g., a mouse) and an acoustic signal generation device416(e.g., a speaker). In one embodiment, video display unit410, alphanumeric input device412, and cursor control device414may be combined into a single component or device (e.g., an LCD touch screen).

Data storage device418may include a computer-readable storage medium428on which may be stored one or more sets of instructions425that may include instructions for one or more components and/or applications442(e.g., host management component210a, node agent105, server agent106, client agent108inFIG.2A; query management component210binFIG.2B) for carrying out the operations described herein, in accordance with one or more aspects of the present disclosure. Instructions425may also reside, completely or at least partially, within main memory404and/or within processing device402during execution thereof by computing device400, main memory404and processing device402also constituting computer-readable media. The instructions425may further be transmitted or received over a communication network420via network interface device408.