Tracking runtime concurrent dependences in java threads using thread control profiling

Abstract More than 75% of recent Java projects include some form of concurrent programming. Due to complex interactions between multi-threads, concurrent programs are often harder to understand and test than single threaded programs. To facilitate understanding and testing of concurrent programs, we developed a new profiling method called TCP (Thread Control Profiling). Outputs of TCP presents frequencies of control dependence, which includes thread creation, thread synchronization, interruption, and so on, of the executed thread. TCP first performs static analysis of detailed concurrency syntax and semantics of Java to construct the profiling graph model TCDG (Thread Control Dependence Graph). TCDG is then used for instrumentation and for generating profiles. We have evaluated TCP using a case study and a few experiments. The case study shows that TCP method can effectively prioritize test cases for testing concurrent programs. One experiment shows that outputs from TCP facilitate developers’ understanding of concurrent code. Other experiments evaluate various possible overheads introduced by the TCP method. Results show that TCP can provide rich and useful information with reasonable costs.

[1]  Felix Wolf,et al.  Space-efficient time-series call-path profiling of parallel applications , 2009, Proceedings of the Conference on High Performance Computing Networking, Storage and Analysis.

[2]  Gustavo Pinto,et al.  A large-scale study on the usage of Java's concurrent programming constructs , 2015, J. Syst. Softw..

[3]  Jörn W. Janneck,et al.  Profiling of Dataflow Programs Using Post Mortem Causation Traces , 2012, 2012 IEEE Workshop on Signal Processing Systems.

[4]  Dahlia Malkhi,et al.  Using visualization tools to understand concurrency , 1992, IEEE Software.

[5]  Yan Wang,et al.  Profiling the Responsiveness of Android Applications via Automated Resource Amplification , 2016, 2016 IEEE/ACM International Conference on Mobile Software Engineering and Systems (MOBILESoft).

[6]  Gregg Rothermel,et al.  Path profile-based dynamic impact analysis , 2002, International Conference on Software Maintenance, 2002. Proceedings..

[7]  Jingde Cheng,et al.  Program dependence analysis of concurrent logic programs and its applications , 1996, Proceedings of 1996 International Conference on Parallel and Distributed Systems.

[8]  Lauri Malmi,et al.  Visualising concurrent programs with dynamic dependence graphs , 2011, 2011 6th International Workshop on Visualizing Software for Understanding and Analysis (VISSOFT).

[9]  Arthur B. Maccabe,et al.  Online Critical Path Profiling for Parallel Applications , 2005, 2005 IEEE International Conference on Cluster Computing.

[10]  Yunhao Liu,et al.  Post-Deployment Anomaly Detection and Diagnosis in Networked Embedded Systems by Program Profiling and Symptom Mining , 2016, IEEE Transactions on Parallel and Distributed Systems.

[11]  Trishul M. Chilimbi,et al.  HOLMES: Effective statistical debugging via efficient path profiling , 2009, 2009 IEEE 31st International Conference on Software Engineering.

[12]  Jingde Cheng,et al.  A program dependence model for concurrent logic programs and its applications , 2001, Proceedings IEEE International Conference on Software Maintenance. ICSM 2001.

[13]  He Jiang,et al.  Profile directed systematic testing of concurrent programs , 2013, 2013 8th International Workshop on Automation of Software Test (AST).

[14]  Y. N. Srikant,et al.  Profiling k-Iteration Paths : A Generalization of the Ball-Larus Profiling Algorithm , 2009, 2009 International Symposium on Code Generation and Optimization.

[15]  Robert F. Roggio Performance resource profiling using a computer-based number discrimination test system , 1991, [1991] Computer-Based Medical Systems@m_Proceedings of the Fourth Annual IEEE Symposium.

[16]  Aditya Kanade,et al.  P3: partitioned path profiling , 2015, ESEC/SIGSOFT FSE.

[17]  Eileen Kraemer,et al.  Design and Evaluation of a Diagrammatic Notation to Aid in the Understanding of Concurrency Concepts , 2007, 29th International Conference on Software Engineering (ICSE'07).

[18]  Anastasia Ailamaki,et al.  Tolerating Dependences Between Large Speculative Threads Via Sub-Threads , 2006, 33rd International Symposium on Computer Architecture (ISCA'06).

[19]  Allen D. Malony,et al.  Phase-Based Parallel Performance Profiling , 2005, PARCO.

[20]  Dimitris Gritzalis,et al.  Automated exploit detection using path profiling: The disposition should matter, not the position , 2015, 2015 12th International Joint Conference on e-Business and Telecommunications (ICETE).

[21]  Jakob Rehof,et al.  Context-Bounded Model Checking of Concurrent Software , 2005, TACAS.

[22]  Trishul M. Chilimbi,et al.  Preferential path profiling: compactly numbering interesting paths , 2007, POPL '07.

[23]  Jianjun Zhao,et al.  Multithreaded dependence graphs for concurrent Java programs , 1999, 1999 Proceedings International Symposium on Software Engineering for Parallel and Distributed Systems.

[24]  Xiangyu Zhang,et al.  Extending path profiling across loop backedges and procedure boundaries , 2004, International Symposium on Code Generation and Optimization, 2004. CGO 2004..

[25]  Subhajit Roy,et al.  Pertinent path profiling: Tracking interactions among relevant statements , 2013, Proceedings of the 2013 IEEE/ACM International Symposium on Code Generation and Optimization (CGO).

[26]  Antonino Tumeo,et al.  Performance estimation for task graphs combining sequential path profiling and control dependence regions , 2009, 2009 7th IEEE/ACM International Conference on Formal Methods and Models for Co-Design.

[27]  Osamu Mizuno,et al.  A selective software testing method based on priorities assigned to functional modules , 2001, Proceedings Second Asia-Pacific Conference on Quality Software.

[28]  Feng Qin,et al.  GMProf: A low-overhead, fine-grained profiling approach for GPU programs , 2012, 2012 19th International Conference on High Performance Computing.

[29]  Ulrich Finkler,et al.  An Analytic Framework for Detailed Resource Profiling in Large and Parallel Programs and Its Application for Memory Use , 2010, IEEE Transactions on Computers.

[30]  Hareton K. N. Leung,et al.  Profiling selected paths with loops , 2014, Science China Information Sciences.

[31]  Michael D. Bond,et al.  Targeted path profiling: lower overhead path profiling for staged dynamic optimization systems , 2004, International Symposium on Code Generation and Optimization, 2004. CGO 2004..

[32]  Nathan R. Tallent,et al.  Scalable Identification of Load Imbalance in Parallel Executions Using Call Path Profiles , 2010, 2010 ACM/IEEE International Conference for High Performance Computing, Networking, Storage and Analysis.

[33]  Jianjun Zhao,et al.  Slicing concurrent Java programs , 1999, Proceedings Seventh International Workshop on Program Comprehension.

[34]  James E. Smith,et al.  Relational profiling: enabling thread-level parallelism in virtual machines , 2000, MICRO 33.

[35]  Gilles Pokam,et al.  Concurrent predicates: A debugging technique for every parallel programmer , 2013, Proceedings of the 22nd International Conference on Parallel Architectures and Compilation Techniques.

[36]  Michael D. Smith,et al.  Better global scheduling using path profiles , 1998, Proceedings. 31st Annual ACM/IEEE International Symposium on Microarchitecture.

[37]  Rajiv Gupta,et al.  Path profile guided partial redundancy elimination using speculation , 1998, Proceedings of the 1998 International Conference on Computer Languages (Cat. No.98CB36225).

[38]  Zhenbang Chen,et al.  P-Tracer: Path-Based Performance Profiling in Cloud Computing Systems , 2012, 2012 IEEE 36th Annual Computer Software and Applications Conference.

[39]  Rajiv Gupta,et al.  Path profile guided partial dead code elimination using predication , 1997, Proceedings 1997 International Conference on Parallel Architectures and Compilation Techniques.

[40]  Dona Burkard,et al.  A Memory Access Pattern-Based Program Profiling System for Dynamic Parallelism Prediction , 2016, 2016 IEEE Trustcom/BigDataSE/ISPA.

[41]  Durga Prasad Mohapatra,et al.  Context Sensitive Dynamic Slicing of Concurrent Aspect-Oriented Programs , 2014, 2014 21st Asia-Pacific Software Engineering Conference.

[42]  James R. Larus,et al.  Optimally profiling and tracing programs , 1994, TOPL.

[43]  E. J. Younger,et al.  Understanding concurrent programs using program transformations , 1993, [1993] IEEE Second Workshop on Program Comprehension.

[44]  Guoqing Xu,et al.  Understanding and overcoming parallelism bottlenecks in ForkJoin applications , 2017, 2017 32nd IEEE/ACM International Conference on Automated Software Engineering (ASE).

[45]  Bixin Li,et al.  Profiling all paths: A new profiling technique for both cyclic and acyclic paths , 2012, J. Syst. Softw..

[46]  Andreas Zeller,et al.  Profiling Java programs for parallelism , 2009, 2009 ICSE Workshop on Multicore Software Engineering.

[47]  Thomas Ball,et al.  Slicing Programs with Arbitrary Control-flow , 1993, AADEBUG.

[48]  Abhinav Bhatele,et al.  LibPowerMon: A Lightweight Profiling Framework to Profile Program Context and System-Level Metrics , 2016, 2016 IEEE International Parallel and Distributed Processing Symposium Workshops (IPDPSW).