Description |
-
Abstract: Understanding the behavior and performance of concurrent multithreaded programs remains a difficult problem for software engineers. As software relies on the addition of multiple processors to increase throughput and execution speed, software must become increasingly multithreaded to reap the performance gains. Multithreaded programs however have to coordinate and share resources, and wh... read moreere these resources are shared (known as a critical section) becomes a potential performance bottleneck. Programmers want to maximize performance by taking extra effort to write concurrent software, but they also want to ensure that time spent in a critical section is minimized to reduce the amount of code that executes sequentially. Often times programmers favor correctness, but do not pay attention to performance within critical sections. In this dissertation critical sections are investigated specifically because high variability in their execution time can be a key component of a program not matching performance expectations. This high variability within executions of a critical section can unpredictably impede threads from making progress and be a source of software hangs. These occasional transient program hangs in critical sections interrupt a smooth user experience, and are difficult to find and reproduce as they are infrequent and hard to reproduce. Thus, there is a need to research and develop tools that can uncover new insights into critical sections. Thesis Statement: Static, dynamic, and software visualization analysis tools specifically focused on critical sections are needed to help uncover unexplored variability in critical sections to avoid unintended software hangs. This dissertation presents the discoveries I have found through a series of novel tools built to analyze concurrent Java programs. I will be presenting the following tools: 1. Iceberg, a static and dynamic program analysis tool for identifying features of critical sections in Java. 2. Critical Section Investigator, which is a tool that visualizes the call trees of executions of a various critical sections to understand where time is spent. 3. A Microarray call-graph visualization tool, which is a new visualization that helps programmers comprehend the software engineering architecture of large programs. In particular, programmers can see call graphs of large multithreaded programs. Together these new tools can be used by programmers to understand the performance of their critical sections and uncover difficult to find software hangs caused by variable performance in critical section executions.
Thesis (Ph.D.)--Tufts University, 2017.
Submitted to the Dept. of Computer Science.
Advisor: Samuel Guyer.
Committee: Kathleen Fisher, Remco Chang, Mark Hempstead, and Tao Schardl.
Keyword: Computer science.read less
|
This object is in collection