Log-Based Architectures: Using Chip Multiprocessors to Help Software Behave Correctly

38
Опубликовано 7 сентября 2016, 16:27
Software tends to misbehave more often than we would like due to bugs and security attacks. The good news is that there are a variety of dynamic program monitoring tools (which we call lifeguards) that can detect and sometimes repair these problems at runtime. The bad news, however, is that these lifeguards (e.g., Valgrind) often slow down execution by an order of magnitude or more, thereby limiting their usefulness. With the emergence of chip multiprocessing as the dominant computing platform, the raw horsepower for performing these monitoring tasks may exist on-chip. In order for the lifeguards to effectively exploit this raw horsepower, however, they need two forms of additional support: the ability to unobtrusively observe the dynamic behavior of the monitored application, and the ability to rewind that application for the sake of repairing a problem. In this joint project that we recently started at Intel Research Pittsburgh and Carnegie Mellon University, we are exploring whether this support can be provided by a single new architectural mechanism: a log that is captured by the hardware, managed by the system, and exposed to the lifeguard software. Our initial results using three diverse lifeguards demonstrate an order-of-magnitude speedup relative to equivalent tools written in Valgrind. Our design also includes a prediction-based compression scheme that reduces the log-related bandwidth and storage requirements by an order of magnitude, to less than one byte per instruction.
автотехномузыкадетское