Microservice MSCallGraph when a child has two two parents
In the paper (SoCC '21), the analysis shows that "microservice call graphs behave like a tree and many of them only contain a long chain". My question is, how should we concretely interpret the situation where a child in the call graph has two parents? I could not find a hint in the paper, so any help would be great! Thank you!
It is a good question. As Fig. 4 in the paper (SoCC’21) shows the distribution of the in-degree and out-degree of microservices, 90% of microservices have an in-degree of one and 10% of microservices have an out-degree of at least 5 in a single call graph. Therefore, microservices call graphs behave like a tree for most cases. If you want to analyze the cases one child has multiple parents, I recommend that you can study batch jobs DAG (like Huangshi Tian et al. SoCC’19), in which a child task usually fetches data from multiple parent tasks.
Hi, thanks for your explanation! Traditionally a call graph for a distributed trace is a tree. But we see the traces in the dataset (microservice call graphs in SoCC'21)are DAGs. Is this because all of the instances for one DM are merged together into one node in the call graph? This relates to the other question, the README indicates that msinstanceid should be included in the MS_CallGraph table, but the msinstanceids are not there. Are the results (of call graph structures) in the paper using the merged-together graphs or the original unmerged ones?
Thanks for your interest. In the paper, when analyzing call dependencies and topology of the call graph, we do not consider the instanceid and use the merged-together graphs as you said.