Whole-program dynamic software updating

  • Authors:
  • Kristis Makris

  • Affiliations:
  • Arizona State University

  • Venue:
  • Whole-program dynamic software updating
  • Year:
  • 2009

Quantified Score

Hi-index 0.00

Visualization

Abstract

Dynamic Software Updating (DSU) aims to update an old version of an application to a new version without causing downtime. This dissertation presents a new whole-program update DSU mechanism that can apply updates which cannot be applied by other DSU mechanisms. Compared to existing work, it has two main advantages that improve the updateability of applications. First, whole-program update effects updates immediately: atomically and with bounded delay. Immediate updates are not supported by existing DSU systems, but immediate updates are necessary to safely update multi-threaded and multi-process applications without service interruption. Second, whole-program update can update functions and data that are active on the stack. To update functions active on the stack, existing update mechanisms rely on the user to anticipate the future evolution of an application, or on the application to quiesce (which may never happen). To update data active on the stack, existing update mechanisms rely on data-access indirection, which can incur unacceptable overhead. This dissertation also presents a compiler-based DSU system, called UpStare, that implements the whole-program update mechanism and offers useful safety guarantees. UpStare automatically converts applications to be updateable through source-to-source transformations. It also automatically prepares DSU patches to apply an effective mapping of the state of the old version of an application to the new state. This significantly reduces the input needed by the user in preparing an update mapping. Experience using UpStare to update real-world, multi-process server applications shows that UpStare can systematically apply safe updates with little to no user intervention for typical application use cases. However, updating an application anywhere during its execution with minimal user input needs additional analysis to verify updates are semantically safe. UpStare reports comparable or less overhead than the current state of the art and the overhead can be reduced with additional optimizations.