Weekly PL reading group. This week Luis Pina will be giving a practice talk for ASPLOS. Abstract Below.
Dynamic Software Updating (DSU) is a general-purpose technique for patching stateful software without shutting it down, which enables both timely updates and non-stop service. However, applying an update could induce a long delay in service, and bugs in the update - both in the changed code and in the specification for effecting that change dynamically - may cause the updated software to crash or misbehave. This paper proposes MVEDSUa, a system that solves these problems by augmenting a DSU system with support for Multi-Version Execution (MVE). To start, MVEDSUa performs an update in parallel with the original system, thereby avoiding any service delay. Then, it monitors that the updated and original systems' responses agree when given the same inputs. Expected differences are specified by the programmer, so remaining differences signal likely errors. If the new version shows no problems, it can be installed permanently. We implemented MVEDSUa on top of Kitsune and Varan state-of-the-art DSU and MVE systems respectively, and used it to update several high-performance servers: Redis, Memcached, and VSFTPD. Our results show that MVEDSUa significantly reduces the update-time delay, imposes little overhead in steady state, and easily recovers from a variety of update-related errors.