Efficient Incremental Checkpointing of Java Programs
Abstract
This paper presents a user-driven language-level approach to the checkpointing of Java programs. First, we describe how to systematically associate increment- al checkpoints with Java classes. While being safe, the genericity of this solution induces a substantial execution overhead. Second, to solve the dilemma between genericity and performance, we use automatic program specialization to transform the generic checkpointing procedures into highly optimized ones. Specialization exploits two kinds of information: (i) structural properties about the program classes, (ii) knowledge of unmodified data structures in a specific program phase. The latter information allows us to generate phase-specific checkpointing procedures. We evaluate our approach on two benchmarks, a realistic application which consists of a program analysis engine, and a synthetic program which can serve as a metric. Specialization gives a speedup proportional to the complexity of object structure and the modification pattern. Measured speedups are up to 15.