HAC: hybrid adaptive caching for distributed storage systems

This paper presents HAC, a novel technique for managing the client cache in a distributed, persistent object storage system. HAC is a hybrid between page and object caching that combines the virtues of both while avoiding their disadvantages. It achieves the low miss penalties of a page-caching system, but is able to perform well even when locality is poor, since it can discard pages while retaining their hot objects. It realizes the potentially lower miss rates of object-caching systems, yet avoids their problems of fragmentation and high overheads. Furthermore, HAC is adaptive: when locality is good it behaves like a page-caching system, while if locality is poor it behaves like an object-caching system. It is able to adjust the amount of cache space devoted to pages dynamically so that space in the cache can be used in the way that best matches the needs of the application. The paper also presents results of experiments that indicate that HAC outperforms other object storage systems across a wide range of cache sizes and workloads; it performs substantially better on the expected workloads, which have low to moderate locality. Thus we show that our hybrid, adaptive approach is the cache management technique of choice for distributed, persistent object systems.

[1]  Dennis Shasha,et al.  2Q: A Low Overhead High Performance Buffer Management Replacement Algorithm , 1994, VLDB.

[2]  James W. Stamos,et al.  Static grouping of small objects to enhance performance of a paged virtual memory , 1984, TOCS.

[3]  Matthew Addison Blaze Caching in large-scale distributed file systems , 1993 .

[4]  David J. DeWitt,et al.  Implementing crash recovery in QuickStore: a performance study , 1995, SIGMOD '95.

[5]  Roger King,et al.  Self-adaptive, on-line reclustering of complex object data , 1994, SIGMOD '94.

[6]  David J. DeWitt,et al.  A status report on the OO7 OODBMS benchmarking effort , 1994, OOPSLA '94.

[7]  David J. DeWitt,et al.  QuickStore: A high performance mapped object store , 1994, SIGMOD '94.

[8]  David J. DeWitt,et al.  The 007 Benchmark , 1993, SIGMOD '93.

[9]  O. Deux,et al.  The Story of O2 , 1990, IEEE Trans. Knowl. Data Eng..

[10]  Robert E. Gruber,et al.  Optimism vs. locking: a study of concurrency control for client-server object-oriented databases , 1997 .

[11]  Donald Kossmann Efficient main-memory management of persistent objects , 1995, Berichte aus der Informatik.

[12]  Andreas Reuter,et al.  Transaction Processing: Concepts and Techniques , 1992 .

[13]  Michael J. Carey,et al.  Fine-grained sharing in a page server OODBMS , 1994, SIGMOD '94.

[14]  Dennis Shasha,et al.  2Q: A low overhead high performance buffer replacement algorithm , 1994 .

[15]  Randy H. Katz,et al.  Exploiting inheritance and structure semantics for effective clustering and buffering in an object-oriented DBMS , 1989, SIGMOD '89.

[16]  Marvin H. Solomon,et al.  A trace-based simulation of pointer swizzling techniques , 1995, Proceedings of the Eleventh International Conference on Data Engineering.

[17]  Won Kim,et al.  Architecture of the ORION Next-Generation Database System , 1990, IEEE Trans. Knowl. Data Eng..

[18]  N. S. Barnett,et al.  Private communication , 1969 .

[19]  Liuba Shrira,et al.  Opportunistic log: efficient installation reads in a reliable storage server , 1994, OSDI '94.

[20]  Andrew C. Myers,et al.  References to remote mobile objects in Thor , 1993, LOPL.

[21]  J. T. Robinson,et al.  Data cache management using frequency-based replacement , 1990, SIGMETRICS '90.

[22]  Jack A. Orenstein,et al.  The ObjectStore database system , 1991, CACM.

[23]  T. Kaehler,et al.  LOOM: large object-oriented memory for Smalltalk-80 systems , 1989 .

[24]  Mark S. Day,et al.  Client cache management in a distributed object database , 1995 .

[25]  Alfons Kemper,et al.  Dual-Buffering Strategies in Object Bases , 1994, VLDB.

[26]  David J. DeWitt,et al.  The oo7 Benchmark , 1993, SIGMOD Conference.

[27]  David J. DeWitt,et al.  Shoring up persistent applications , 1994, SIGMOD '94.

[28]  David J. DeWitt,et al.  A Status Report on the oo7 OODBMS Benchmarking Effort , 1994, OOPSLA.

[29]  Gerhard Weikum,et al.  The LRU-K page replacement algorithm for database disk buffering , 1993, SIGMOD Conference.

[30]  Jacob Stein,et al.  The GemStone object database management system , 1991, CACM.

[31]  Miguel Castro,et al.  Safe and efficient sharing of persistent objects in Thor , 1996, SIGMOD '96.

[32]  Jeffrey C. Mogul,et al.  Performance Implications of Multiple Pointer Sizes , 1995, USENIX.

[33]  Robert Gruber,et al.  Efficient optimistic concurrency control using loosely synchronized clocks , 1995, SIGMOD '95.

[34]  David J. DeWitt,et al.  A Performance Study of Alternative Object Faulting and Pointer Swizzling Strategies , 1992, VLDB.

[35]  Miguel Castro,et al.  Lazy Reference Counting for Transactional Storage Systems , 1997 .

[36]  J. Eliot B. Moss Design of the Mneme persistent object store , 1990, TOIS.

[37]  Guido Moerkotte,et al.  On the cost of monitoring and reorganization of object bases for clustering , 1996, SGMD.

[38]  Jeffrey F. Naughton,et al.  On the performance of object clustering techniques , 1992, SIGMOD '92.

[39]  Peter Boehler Bishop,et al.  Computer systems with a very large address space and garbage collection , 1977 .

[40]  J. Eliot B. Moss,et al.  Working with Persistent Objects: To Swizzle or Not to Swizzle , 1992, IEEE Trans. Software Eng..

[41]  Vivek Singhal,et al.  Texas: An Efficient, Portable Persistent Store , 1992, POS.

[42]  Sanjay Ghemawat,et al.  The Modified Object Buffer: A Storage Management Technique for Object-Oriented Databases , 1995 .

[43]  David J. DeWitt,et al.  Storage management for objects in EXODUS , 1989 .

[44]  J. O'Toole,et al.  Shared data management needs adaptive methods , 1995, Proceedings 5th Workshop on Hot Topics in Operating Systems (HotOS-V).