支撑Internet服务的复杂系统难于调试与分析.理解系统运行时行为是调试与分析这些复杂系统的关键.现有的技术将系统动态运行时行为用因果执行路径抽象描述,并在此基础上分析系统的行为.但是这些方法或者需要手动标注系统代码,或者需要使用者描述系统的执行结构,都需要使用者很多人工辅助.文中描述了一种自动推断复杂系统层次结构任务模型的方法.通过使用插装技术动态观察系统执行过程,文中的方法能够根据一组启发自动推断出系统运行时的任务模型,包括任务的边界和任务之间的因果依赖关系.通过使用聚类方法,能够进一步推断出任务模型的层次结构.通过在实际系统(Apache和PacificA)上应用推断方法,可以看出,使用得到的模型能够帮助理解系统的动态运行过程,并帮助分析解决系统的性能问题.
Distributed systems are hard to debug and analysis.Understanding system runtime behavior is key to system debugging and analysis.Existing works describe system runtime behavior as causal paths,but these works requires either manual annotation or developer-provided execution structures.This paper describes methodology to automatically infer hierarchical task models for complex systems.By using instrumentation,it can automatically infer task models,including task boundaries and causal relations among tasks,based a set of general heuristics. By using clustering, it further infer hierarchical structures on generated task models. By applying the inference methodology on real systems (Apache and PacificA), it concludes that the hierarchical task models help both understanding system runtime behavior and debugging performance bugs.