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.
