Table of Contents
Fetching ...

A Microservice Graph Generator with Production Characteristics

Fanrong Du, Jiuchen Shi, Quan Chen, Li Li, Minyi Guo

TL;DR

This work tackles the challenge of benchmarking production-scale microservice applications by capturing production-level characteristics in synthetic graphs. It introduces the Service Dependency Graph Generator (DGG), a two-part system where the Data Handler builds fine-grained, weighted call graphs and clusters dependency graphs, and the Graph Generator uses random graph models that account for repeated calls and sibling-influence to produce realistic call graphs and their merges. Case studies on Alibaba and Meta traces show that DGG-generated graphs closely mirror real-world topologies, with significant gains in resource efficiency—up to 44.8% in CPU core-hours—when fine-grained call-graph construction is integrated into dynamic resource scaling while preserving QoS. The approach yields realistic benchmarks and supports more accurate evaluation and optimization of microservice resource management in production-like environments.

Abstract

A production microservice application may provide multiple services, queries of a service may have different call graphs, and a microservice may be shared across call graphs. It is challenging to improve the resource efficiency of such complex applications without proper benchmarks, while production traces are too large to be used in experiments. To this end, we propose a Service Dependency Graph Generator (DGG) that comprises a Data Handler and a Graph Generator, for generating the service dependency graphs of benchmarks that incorporate production-level characteristics from traces. The data handler first constructs fine-grained call graphs with dynamic interface and repeated calling features from the trace and merges them into dependency graphs, and then clusters them into different categories based on the topological and invocation types. Taking the organized data and the selected category, the graph generator simulates the process of real microservices invoking downstream microservices using a random graph model, generates multiple call graphs, and merges the call graphs to form the small-scale service dependency graph with production-level characteristics. Case studies show that DGG's generated graphs are similar to real traces in terms of topologies. Moreover, the resource scaling based on DGG's fine-grained call graph constructing increases the resource efficiency by up to 44.8% while ensuring the required QoS.

A Microservice Graph Generator with Production Characteristics

TL;DR

This work tackles the challenge of benchmarking production-scale microservice applications by capturing production-level characteristics in synthetic graphs. It introduces the Service Dependency Graph Generator (DGG), a two-part system where the Data Handler builds fine-grained, weighted call graphs and clusters dependency graphs, and the Graph Generator uses random graph models that account for repeated calls and sibling-influence to produce realistic call graphs and their merges. Case studies on Alibaba and Meta traces show that DGG-generated graphs closely mirror real-world topologies, with significant gains in resource efficiency—up to 44.8% in CPU core-hours—when fine-grained call-graph construction is integrated into dynamic resource scaling while preserving QoS. The approach yields realistic benchmarks and supports more accurate evaluation and optimization of microservice resource management in production-like environments.

Abstract

A production microservice application may provide multiple services, queries of a service may have different call graphs, and a microservice may be shared across call graphs. It is challenging to improve the resource efficiency of such complex applications without proper benchmarks, while production traces are too large to be used in experiments. To this end, we propose a Service Dependency Graph Generator (DGG) that comprises a Data Handler and a Graph Generator, for generating the service dependency graphs of benchmarks that incorporate production-level characteristics from traces. The data handler first constructs fine-grained call graphs with dynamic interface and repeated calling features from the trace and merges them into dependency graphs, and then clusters them into different categories based on the topological and invocation types. Taking the organized data and the selected category, the graph generator simulates the process of real microservices invoking downstream microservices using a random graph model, generates multiple call graphs, and merges the call graphs to form the small-scale service dependency graph with production-level characteristics. Case studies show that DGG's generated graphs are similar to real traces in terms of topologies. Moreover, the resource scaling based on DGG's fine-grained call graph constructing increases the resource efficiency by up to 44.8% while ensuring the required QoS.

Paper Structure

This paper contains 38 sections, 3 theorems, 4 equations, 14 figures, 4 tables, 1 algorithm.

Key Result

Proposition 5.1

Let $M_k$ represent the number of vertices at the $k$-th level of the call graph. We denote $P_{\text{gen\_width}}(M_k = m_k)$ as the probability that the $k$-th level of the call graph has $m_k$ vertices according to a random graph model, and $P_{\text{real\_width}}(M_k = m_k)$ as the probability t

Figures (14)

  • Figure 1: An example service dependency graph and its three call graphs.
  • Figure 2: Total number of queries and call graph queries over time for the service S_130831269 in the Alibaba trace.
  • Figure 3: Distribution of children set sizes for microservices.
  • Figure 4: An example of a sibling set influence.
  • Figure 5: Design overview of DGG.
  • ...and 9 more figures

Theorems & Definitions (3)

  • Proposition 5.1
  • Proposition 5.2
  • Proposition 5.3