clusterdata icon indicating copy to clipboard operation
clusterdata copied to clipboard

Microservice MSCallGraph when a child has two two parents

Open MaxLanLiu opened this issue 3 years ago • 3 comments

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!

fan-in

MaxLanLiu avatar Feb 18 '22 15:02 MaxLanLiu

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.

niewuya avatar Feb 22 '22 13:02 niewuya

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?

MaxLanLiu avatar Feb 24 '22 19:02 MaxLanLiu

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.

niewuya avatar Mar 01 '22 09:03 niewuya