Abstract
A significant amount of effort in research related to software aging and rejuvenation (SAR) has been dedicated to designing, implementing, and evaluating tools for the detection of software aging in complex software systems. There are two fundamental reasons for the importance of these tools. First, these tools are required for implementing condition-based software rejuvenation in production environments. They can measure the presence of aging symptoms, such as high resource consumption or degraded performance. Moreover, jointly with aging forecasting models, they can trigger rejuvenation actions when aging symptoms point out that software aging failures are imminent. The second reason which makes these tools important is that they can be used for software aging analysis in laboratory environments, for example during stress tests before releasing a product. This can in turn pinpoint the software aging bugs (such as memory leak bugs), and provide useful information to developers to fix them.In this chapter, we review multiple prominent tools that have been adopted, both by researchers and by software developers, to detect software aging in real, complex software systems. Our selection of aging detection tools is in part based on the SAR literature, including international conferences on dependability (DSN, ISSRE, SRDS), conferences and journals on software engineering, and the WoSAR workshop, the main international event devoted to SAR research. Moreover, we complemented this selection by popular commercial tools, and by tools from technical sources by developers, such as blogs. For each tool, we analyze its internals, use cases, the aging symptoms that it addresses, and relevant applications in real case studies.We included tools for native software, such as systems software written in C and C++, which monitor resource consumption at the OS level and probe software internals, such as heap allocations. Representative tools of this kind include the SNMP-based Proactive Fault Management (PFM) tool for monitoring and detection over SNMP, Valgrind and Memcheck for user-level analysis, and SystemTap and Kprobes for kernel-level analysis. Moreover, we included tools for Java software, such as web and enterprise applications, which monitor performance and resource consumption at the JVM level. Considered tools of this kind include LeakBot, Plumbr, Eclipse Memory Analyzer, and JVMMon.
Talk to us
Join us for a 30 min session where you can share your feedback and ask us any queries you have