Search

US-20260127017-A1 - Workload Placement in a Containerized Application Environment

US20260127017A1US 20260127017 A1US20260127017 A1US 20260127017A1US-20260127017-A1

Abstract

A system can determine a directed graph, wherein respective graph nodes of the directed graph comprise respective application containers of a group of application containers that are configured to execute upon a group of computing nodes and that are part of a containerized application architecture, and wherein respective edges of the directed graph identify respective service affinities between the respective application containers. The system can partition the respective graph nodes based on the respective service affinities, to produce respective partitioned groups of graph nodes. The system can identify a placement of the respective application containers on the respective computing nodes based on the partitioned groups of graph nodes, wherein the placement satisfies a defined optimality criterion. The system can deploy the respective application containers on the respective computing nodes based on the placement.

Inventors

  • Vinay SAWAL
  • Mihai Lazar
  • Ramesh Ganapathi
  • Sanjeev Sharma

Assignees

  • DELL PRODUCTS L.P.

Dates

Publication Date
20260507
Application Date
20241105

Claims (20)

  1. 1 . A system, comprising: at least one processor; and at least one memory that stores executable instructions that, when executed by the at least one processor, facilitate performance of operations, comprising: determining a directed graph, wherein respective graph nodes of the directed graph comprise respective application containers of a group of application containers that are configured to execute upon a group of computing nodes and that are part of a containerized application architecture, and wherein respective edges of the directed graph identify respective service affinities between the respective application containers; partitioning the respective graph nodes based on the respective service affinities, to produce respective partitioned groups of graph nodes; identifying a placement of the respective application containers on the respective computing nodes based on the partitioned groups of graph nodes, wherein the placement satisfies a defined optimality criterion; and deploying the respective application containers on the respective computing nodes based on the placement.
  2. 2 . The system of claim 1 , wherein a telecommunications application comprises the group of application containers.
  3. 3 . The system of claim 1 , wherein the respective service affinities represent respective rates of network communications between the respective application containers, respective amounts of data shared between the respective application containers, respective amounts of processor load sharing between the respective application containers, respective traffic rates between the respective application containers, or respective amounts of memory sharing between the respective application containers.
  4. 4 . The system of claim 1 , wherein the identifying of the placement of the respective application containers on the respective computing nodes is based on respective resource availabilities for the respective application containers, and wherein the respective resource availabilities comprise respective compute resources, respective memory resources, respective storage resources, respective network bandwidths, or respective network throughputs.
  5. 5 . The system of claim 4 , wherein the respective resource availabilities for the respective application containers comprises respective microservices resource availabilities for respective microservices that execute within the respective application containers, and wherein the respective resource availabilities for the respective application containers omit respective resource availabilities of the respective application containers.
  6. 6 . The system of claim 1 , wherein the determining of the directed graph comprises: iterating over each source application container of the group of application containers that is identified in a list of the service affinities; and for each of the source application containers, for each corresponding destination application container of the group of application containers, where an identification of a pair comprising the source application container and the destination application container exists in a service list, and where an edge from a first node of the directed graph that corresponds to the source application container and a second node of the directed graph that corresponds to the destination application container does not exist in the directed graph, creating the edge in the directed graph.
  7. 7 . The system of claim 1 , wherein the graph nodes comprise a source node and a destination node, and wherein partitioning the respective graph nodes comprises consolidating the source node and the destination node.
  8. 8 . The system of claim 1 , wherein the directed graph is a first directed graph, wherein the graph nodes are first graph nodes, wherein the edges are first edges, wherein a second directed graph comprises the respective partitioned groups of graph nodes, wherein the second directed graph comprises a first number of second graph nodes and a second number of second edges, and wherein the first number is one greater than the second number.
  9. 9 . The system of claim 8 , wherein the operations further comprise: producing the second directed graph from the first directed graph, comprising, performing iterations of randomly selecting a first edge of the first edges with a probability proportional to a weight of the first edge; and redirecting edges of the first edges from a destination node that corresponds to the first edge to a source node that corresponds to the first edge.
  10. 10 . The system of claim 1 , wherein the identifying of the placement of the respective application containers on the respective computing nodes based on the partitioned groups of graph nodes comprises: for each of the partitioned groups of graph nodes, determining total computing resources to allocate for respective application containers that correspond to the respective partitioned groups of graph nodes, and identifying respective computing nodes of the computing nodes on which to host the respective application containers based on respective available computing resources of the respective computing nodes.
  11. 11 . The system of claim 10 , wherein the operations further comprise: sorting respective first service affinities of the service affinities that correspond to a first application container of the application containers by descending service affinity values, to produce sorted service affinities; and for each service affinity of the sorted service affinities, where a second application container that corresponds to the service affinity is placed on a same computing node as the first application container, marking the first application container and the second application container as successfully moved.
  12. 12 . The system of claim 10 , wherein the operations further comprise: sorting respective first service affinities of the service affinities that correspond to a first application container of the application containers by descending service affinity values, to produce sorted service affinities; and for each service affinity of the sorted service affinities, and where a second application container that corresponds to the service affinity is not placed on a same computing node as the first application container, moving the second application container and to a first computing node of the first application container where the first computing node has first available resources to execute the second application container, or moving the first application container and to a second computing node of the second application container where the second computing node has second available resources to execute the first application container.
  13. 13 . A method, comprising: creating, by a system comprising at least one processor, a directed graph, wherein respective graph nodes of the directed graph comprise respective application containers of a group of application containers that are configured to execute upon a group of computing nodes, and wherein respective edges of the directed graph identify respective service affinities between the respective application containers; partitioning, by the system, the respective graph nodes based on the respective service affinities, to produce respective partitioned groups of graph nodes; determining, by the system, a placement of the respective application containers on the respective computing nodes based on the partitioned groups of graph nodes, wherein the placement satisfies a criterion specifying at least a threshold performance; and executing, by the system, the respective application containers on the respective computing nodes based on the placement.
  14. 14 . The method of claim 13 , wherein the creating of the directed graph comprises: for each source application container of the group of application containers that is identified in a list of the service affinities, for each corresponding destination application container of the group of application containers, where an identification of a pair comprising the source application container and the destination application container exists in a service list, and where an edge from a first node of the directed graph that corresponds to the source application container and a second node of the directed graph that corresponds to the destination application container does not exist in the directed graph, adding, by the system, the edge to the directed graph.
  15. 15 . The method of claim 13 , wherein the directed graph is a first directed graph, wherein the graph nodes are first graph nodes, wherein the edges are first edges, wherein a second directed graph comprises the respective partitioned groups of graph nodes, and further comprising: producing, by the system, the second directed graph from the first directed graph based on, performing iterations of randomly selecting a first edge of the first edges with a probability proportional to a weight of the first edge, and redirecting edges of the first edges from a destination node that corresponds to the first edge to a source node that corresponds to the first edge.
  16. 16 . The method of claim 13 , further comprising: for each service affinity of the service affinities of a first application container, and where a second application container that corresponds to the service affinity is not placed on a same computing node as the first application container, moving, by the system, the second application container and to a first computing node of the first application container in response to determining that the first computing node has available resources to execute the second application container, or moving, by the system, the first application container and to a second computing node of the second application container in response to determining that the second computing node has available resources to execute the first application container.
  17. 17 . A non-transitory computer-readable medium comprising instructions that, in response to execution, cause a system comprising at least one processor to perform operations, comprising: generating a directed graph, wherein respective graph nodes of the directed graph comprise respective application containers of a group of application containers that are configured to execute upon a group of computing nodes, and wherein respective edges of the directed graph identify respective service affinities between the respective application containers; partitioning the respective graph nodes based on the respective service affinities, to produce respective partitioned groups of graph nodes; and deploying the respective application containers on the respective computing nodes based on a placement of the respective application containers on the respective computing nodes, wherein the placement is based on the partitioned groups of graph nodes, and wherein the placement satisfies a criterion specifying an optimality applicable to container placement.
  18. 18 . The non-transitory computer-readable medium of claim 17 , wherein the creating of the directed graph comprises: for each source application container of the group of application containers that is identified in a list of the service affinities, for each corresponding destination application container of the group of application containers, adding an edge to the directed graph in response to identifying a pair, comprising the source application container and the destination application container, exists in a service list, and in response to determining that the edge from a first node of the directed graph that corresponds to the source application container and a second node of the directed graph that corresponds to the destination application container does not exist in the directed graph.
  19. 19 . The non-transitory computer-readable medium of claim 17 , wherein the directed graph is a first directed graph, wherein the graph nodes are first graph nodes, wherein the edges are first edges, wherein a second directed graph comprises the respective partitioned groups of graph nodes, and wherein the operations further comprise: producing the second directed graph from the first directed graph based on, performing iterations of randomly selecting a first edge of the first edges with a probability proportional to a weight of the first edge, and redirecting edges of the first edges from a destination node that corresponds to the first edge to a source node that corresponds to the first edge.
  20. 20 . The non-transitory computer-readable medium of claim 17 , wherein the operations further comprise: for each service affinity of the service affinities of a first application container, in response to determining that a second application container that corresponds to the service affinity is not placed on a same computing node as the first application container and in response to determining that the same computing node has available resources to execute the first application container and to execute the second application container, placing the second application container and the first application container on the same computing node.

Description

BACKGROUND A computer application can generally be implemented with a containerized architecture. SUMMARY The following presents a simplified summary of the disclosed subject matter in order to provide a basic understanding of some of the various embodiments. This summary is not an extensive overview of the various embodiments. It is intended neither to identify key or critical elements of the various embodiments nor to delineate the scope of the various embodiments. Its sole purpose is to present some concepts of the disclosure in a streamlined form as a prelude to the more detailed description that is presented later. An example system can operate as follows. The system can determine a directed graph, wherein respective graph nodes of the directed graph comprise respective application containers of a group of application containers that are configured to execute upon a group of computing nodes and that are part of a containerized application architecture, and wherein respective edges of the directed graph identify respective service affinities between the respective application containers. The system can partition the respective graph nodes based on the respective service affinities, to produce respective partitioned groups of graph nodes. The system can identify a placement of the respective application containers on the respective computing nodes based on the partitioned groups of graph nodes, wherein the placement satisfies a defined optimality criterion. The system can deploy the respective application containers on the respective computing nodes based on the placement. An example method can comprise creating, by a system comprising at least one processor, a directed graph, wherein respective graph nodes of the directed graph comprise respective application containers of a group of application containers that are configured to execute upon a group of computing nodes, and wherein respective edges of the directed graph identify respective service affinities between the respective application containers. The method can further comprise partitioning, by the system, the respective graph nodes based on the respective service affinities, to produce respective partitioned groups of graph nodes. The method can further comprise determining, by the system, a placement of the respective application containers on the respective computing nodes based on the partitioned groups of graph nodes, wherein the placement satisfies a criterion specifying at least a threshold performance. The method can further comprise executing, by the system, the respective application containers on the respective computing nodes based on the placement. An example non-transitory computer-readable medium can comprise instructions that, in response to execution, cause a system comprising a processor to perform operations. These operations can comprise generating a directed graph, wherein respective graph nodes of the directed graph comprise respective application containers of a group of application containers that are configured to execute upon a group of computing nodes, and wherein respective edges of the directed graph identify respective service affinities between the respective application containers. These operations can further comprise partitioning the respective graph nodes based on the respective service affinities, to produce respective partitioned groups of graph nodes. These operations can further comprise deploying the respective application containers on the respective computing nodes based on a placement of the respective application containers on the respective computing nodes, wherein the placement is based on the partitioned groups of graph nodes, and wherein the placement satisfies a criterion specifying an optimality applicable to container placement. BRIEF DESCRIPTION OF THE DRAWINGS Numerous embodiments, objects, and advantages of the present embodiments will be apparent upon consideration of the following detailed description, taken in conjunction with the accompanying drawings, in which like reference characters refer to like parts throughout, and in which: FIG. 1 illustrates an example system architecture that can facilitate workload placement in a containerized application environment, in accordance with an embodiment of this disclosure; FIG. 2 illustrates another example system architecture that can facilitate workload placement in a containerized application environment, in accordance with an embodiment of this disclosure; FIG. 3 illustrates another example system architecture that can facilitate workload placement in a containerized application environment, in accordance with an embodiment of this disclosure; FIG. 4 illustrates an example of application graph construction, and that can facilitate workload placement in a containerized application environment, in accordance with an embodiment of this disclosure; FIG. 5 illustrates an example of graph partitioning, and that can facilitate workload placement in a