TY - JOUR
T1 - Efficient and Flexible Architectural Support for Dynamic Monitoring
AU - Zhou, Yuanyuan
AU - Zhou, Pin
AU - Qin, Feng
AU - Liu, Wei
AU - Torrellas, Josep
N1 - Copyright:
Copyright 2019 Elsevier B.V., All rights reserved.
PY - 2005
Y1 - 2005
N2 - Recent impressive performance improvements in computer architecture have not led to significant gains in the case of debugging. Software debugging often relies on inserting run-time software checks. In many cases, however, it is hard to find the root cause of a bug. Moreover, program execution typically slows down significantly, often by 10—100 times. To address this problem, this paper introduces the intelligent watcher (iWatcher), a novel architectural scheme to monitor dynamic execution automatically, flexibly, and with minimal overhead. iWatcher associates program-specified monitoring functions with memory locations. When any such location is accessed, the monitoring function is automatically triggered with low overhead. To further reduce overhead and support rollback, iWatcher can optionally leverage thread-level speculation (TLS). The iWatcher architecture can be used to detect various bugs, including buffer overflow, accessing freed locations, memory leaks, stack-smashing and value-invariant violations. To evaluate iWatcher, we use seven applications with various real and injected bugs. Our results show that iWatcher detects many more software bugs than Valgrind, a well-known open-source bug detector. Moreover, iWatcher only induces a 0.1—179% execution overhead, which is orders of magnitude less than Valgrind. Our sensitivity study shows that even with 20% of the dynamic loads monitored in a program, iWatcher adds only 72—182% overhead. Finally, TLS is effective at reducing overheads for programs with substantial monitoring.
AB - Recent impressive performance improvements in computer architecture have not led to significant gains in the case of debugging. Software debugging often relies on inserting run-time software checks. In many cases, however, it is hard to find the root cause of a bug. Moreover, program execution typically slows down significantly, often by 10—100 times. To address this problem, this paper introduces the intelligent watcher (iWatcher), a novel architectural scheme to monitor dynamic execution automatically, flexibly, and with minimal overhead. iWatcher associates program-specified monitoring functions with memory locations. When any such location is accessed, the monitoring function is automatically triggered with low overhead. To further reduce overhead and support rollback, iWatcher can optionally leverage thread-level speculation (TLS). The iWatcher architecture can be used to detect various bugs, including buffer overflow, accessing freed locations, memory leaks, stack-smashing and value-invariant violations. To evaluate iWatcher, we use seven applications with various real and injected bugs. Our results show that iWatcher detects many more software bugs than Valgrind, a well-known open-source bug detector. Moreover, iWatcher only induces a 0.1—179% execution overhead, which is orders of magnitude less than Valgrind. Our sensitivity study shows that even with 20% of the dynamic loads monitored in a program, iWatcher adds only 72—182% overhead. Finally, TLS is effective at reducing overheads for programs with substantial monitoring.
KW - Design
KW - Reliability
UR - http://www.scopus.com/inward/record.url?scp=34547197629&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=34547197629&partnerID=8YFLogxK
U2 - 10.1145/1061267.1061269
DO - 10.1145/1061267.1061269
M3 - Article
AN - SCOPUS:34547197629
SN - 1544-3566
VL - 2
SP - 3
EP - 33
JO - ACM Transactions on Architecture and Code Optimization
JF - ACM Transactions on Architecture and Code Optimization
IS - 1
ER -