Citations

... If we are able to bring the CPU overhead of our system (the no write case) down such that it plus the CPU time involved in actually doing the write is less than a rotational delay, then we should see almost a factor of two improvement, since we will avoid missing a disk revolution. We have observed such a speedups before using similar benchmarks [9]. For clues about how to reduce our overheads, we first note that the overheads without durability are minimal, thus speeding up Java or making write logging faster will have little effect. ...
... Prior to this work, one of the authors participated in the Venari project [5] , of which one goal was to provide transactions for Standard ML (SML). A discussion of the low-level aspects that system (called Sidney) can be found in Net- tles [9]. Not surprisingly, our current work draws strongly on this prior work. ...
Conference Paper
Jest is a Java VM extended to support transactions and general-purpose persistence. Jest allows Java programmers to manipulate any object using transactions and provides resilience to machine failure for these objects. Jest extends Java's current emphasis on safety and reliability to the safe and consistent management of permanent state. Our additions include syntax for transactions and run-time support for durability and atomicity. General-purpose persistence-the ability to make arbitrary kinds of objects persistent-is a key aspect of the design. We provide orthogonal persistence in which any object can be made persistent without regard to type. We do this using persistence-by-reachability, in which an object becomes persistent if it is reachable from a special persistent root. An important aim of our implementation is to explore the techniques and tradeoffs that arise when implementing persistence in a runtime system based on mark-and-compact collection. Having previously studied designs based on copying collection, this work allows us to explore additional parts of the persistence design space. Details of the implementation are provided in the paper. We have tested Jest on a debit-credit benchmark derived from TPC-B. Our system achieves a rate of 83 TPS, very close to the limits allowed by our disk and underlying logging system. Tests of the Java compiler compiling itself both with and without our extensions, suggest that, for applications that do not use transactions, our extensions result in a slowdown of about 7% compared to the original Java implementation. We suggest several possible ways of improving this result
... If we are able to bring the CPU overhead of our system (the no write case) down such that it plus the CPU time involved in actually doing the write is less than a rotational delay, then we should see almost a factor of two improvement, since we will avoid missing a disk revolution. We have observed such a speedups before using similar benchmarks [9]. ...
... Prior to this work, one of the authors participated in the Venari project [5], of which one goal was to provide transactions for Standard ML (SML). A discussion of the low-level aspects that system (called Sidney) can be found in Nettles [9]. Not surprisingly, our current work draws strongly on this prior work. ...
Article
We present a design and implementation of transactions and general-purpose persistence for Java. These additions allow Java programmers to manipulate any Java object using transactions and provide resilience from machine failure for these objects. This extends the range of Java applicability into domains where reliability is of paramount concern; for example, network-based banking. Our design and implementation is a significant addition to Java. It extends Java's current emphasis on safety and reliability to the safe and consistent management of permanent state. Our additions take the form of syntactic extensions for transactions and runtime system support for durability and atomicity. Support for general-purpose persistence, the ability to arbitrary kinds of objects persistent, is a key aspect of the design. We provide orthogonal persistence, in which any object can be made persistent, without regard to type. We also provide persistence-by-reachability, in which an object becomes pe...
Conference Paper
Comparative experimentation is increasingly important in computer science, but performing such experiments can be challenging. The paper presents a set of experiments that compare the performance of two persistent storage managers, and answer the question of whether the safer storage manager has performance comparable to the less safe one. This comparison was difficult for a number of reasons, among them: relatively few programs using either storage manager existed and no established benchmarks existed, and the two techniques are incompatible at the source code level, thus making a direct comparison impossible. In particular one storage manager used a malloc-and-free style of dynamic storage allocation, while the other used a high performance concurrent garbage collector. A number of approaches were used to overcome this difficulty. The most novel approach involved tracing the memory management of a production program that used the malloc-and-free based storage manager and then replaying the trace in an environment that allowed garbage collection and malloc-and-free to be compared. The study represents the most extensive study of a garbage collected persistent storage system to date
Article
Flash memory is a solid-state semiconductor memory technology that has interesting price, performance, and semantic tradeoffs. We've developed Gordon, a generalpurpose persistence system for Standard ML, that uses Flash mapped into the virtual address space as its stable storage medium. Flash supports a write-once/bulk erase interface which makes it difficult to support update-in-place semantics. In addition, Flash chips are only guaranteed to survive a limited number of erase cycles. Gordon has been designed to overcome these difficulties, and our performance analysis demonstrates good performance and reasonable lifetimes for appropriate application domains. 1 Introduction Flash RAM is a semiconductor memory which offers significant new price, performance, and semantic tradeoffs for the "main" memory of computer systems. Flash has read performance and density comparable to DRAM, but unlike DRAM, data stored in Flash is stable and is not lost on power failure. Compared to disk, the m...