Architecture of the PEVM: A High-Performance Orthogonally Persistent Java™ Virtual Machine
Lecture Notes in Computer Science
This paper describes the design and implementation of the PEVM, a new scalable, high-performance implementation of orthogonal persistence for the Java™ platform (OPJ). The PEVM is based on the Sun Microsystems Laboratories Virtual Machine for Research (ResearchVM), which features an optimizing Just-In-Time compiler, exact generational garbage collection, and fast thread synchronization. It also uses a new, scalable persistent object store designed to manage more than 80GB of objects. The PEVM
... approximately ten times faster than previous OPJ implementations and can run significantly larger programs. It is faster than or comparable in performance to several commercial persistence solutions for the Java platform. Despite the PEVM's speed and scalability, its implementation is simpler than our previous OPJ implementation (e.g., just 43% of the VM source patches needed by our previous OPJ implementation). Its speed and simplicity are largely due to our pointer swizzling strategy, the ResearchVM's exact memory management, and a few simple but effective mechanisms. For example, we implement some key data structures in the Java™ programming language since this automatically makes them persistent. The Forest project at Sun Microsystems Laboratories and the Persistence and Distribution Group at Glasgow University are developing orthogonal persistence for the Java platform (OPJ) [AM95]. This gives programs, with only minor source file changes, the illusion of a very large object heap containing objects that are automatically saved to stable storage, typically on disk, and fetched from stable storage into virtual memory on demand [JA00]. The PEVM is our most recent OPJ implementation. Based on our experience with our previous PJama system ("PJama Classic") [DA97], we wanted a system with more performance, scalability, and maintainability to support our development of OPJ and a related project that is investigating controlled sharing and concurrency control through transactions [Day00]. The PEVM is based on the high performance Sun Microsystems Laboratories Virtual Machine for Research ("ResearchVM") 1 , which includes an optimizing Just-In-Time (JIT) compiler [DA99], fast thread synchronization [ADG£ 99], and exact generational garbage collection. It is also based on the Sphere recoverable persistent object store from Glasgow University [Pri00] [PAD£ 97] . Sphere is intended specifically to overcome the store-related limitations we experienced with PJama Classic. It can store up to ¤ ¦ ¥ § objects, or about 80GB with 40 byte objects. This paper describes the design and implementation of the PEVM. Our design goals are listed in Section 2. Section 3 outlines and describes in detail the PEVM's architecture. This is followed by a section that discusses the performance of the PEVM, another that describes related work, and then by a summary and conclusion section.