Results 1 -
8 of
8
HAC: Hybrid Adaptive Caching for Distributed Storage Systems
- In Proc. 17th ACM Symp. on Operating System Principles (SOSP
, 1997
"... 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 syst ..."
Abstract
-
Cited by 41 (10 self)
- Add to MetaCart
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
Providing Persistent Objects in Distributed Systems
- IN EUROPEAN CONFERENCE FOR OBJECT-ORIENTED PROGRAMMING (ECOOP
, 1999
"... THOR is a persistent object store that provides a powerful programming model. THOR ensures that persistent objects are accessed only by calling their methods and it supports atomic transactions. The result is a system that allows applications to share objects safely across both space and time. Th ..."
Abstract
-
Cited by 38 (11 self)
- Add to MetaCart
THOR is a persistent object store that provides a powerful programming model. THOR ensures that persistent objects are accessed only by calling their methods and it supports atomic transactions. The result is a system that allows applications to share objects safely across both space and time. The paper
JPS: A Distributed Persistent Java System
- MASSACHUSETTS INSTITUTE OF TECHNOLOGY
, 1998
"... Distributed persistent object systems provide a convenient environment for applications that need to manage complex long-lived data. Since Java has no persistence model built into it, the tremendous growth in the popularity of Java has generated a lot of interest in systems that add persistence to J ..."
Abstract
-
Cited by 16 (6 self)
- Add to MetaCart
Distributed persistent object systems provide a convenient environment for applications that need to manage complex long-lived data. Since Java has no persistence model built into it, the tremendous growth in the popularity of Java has generated a lot of interest in systems that add persistence to Java. This thesis presents the design, implementation and performance evaluation of a Java Persistent Store called JPS. JPS is an efficient distributed persistent Java system built on top of the Thor object-oriented database. JPS provides
Improving 64-bit Java IPF performance by compressing heap references
- In CGO. IEEE Computer Society
, 2004
"... 64-bit processor architectures like the Intel ® Itanium® Processor Family are designed for large applications that need large memory addresses. When running applications that fit within a 32-bit address space, 64-bit CPUs are at a disadvantage compared to 32-bit CPUs because of the larger memory foo ..."
Abstract
-
Cited by 11 (0 self)
- Add to MetaCart
64-bit processor architectures like the Intel ® Itanium® Processor Family are designed for large applications that need large memory addresses. When running applications that fit within a 32-bit address space, 64-bit CPUs are at a disadvantage compared to 32-bit CPUs because of the larger memory footprints for their data. This results in worse cache and TLB utilization, and consequently lower performance because of increased miss ratios. This paper considers software techniques for virtual machines that allow 32-bit pointers to be used on 64bit CPUs for managed runtime applications that do not need the full 64-bit address space. We describe our pointer compression techniques and discuss our experience implementing these for Java 1 applications. In addition, we give performance results with our techniques for both the SPEC JVM98 and SPEC JBB2000 benchmarks. We demonstrate a 12 % performance improvement on SPEC JBB2000 and a reduction in the number of garbage collections required for a given heap size. 1.
Vertical Object Layout and Compression for Fixed Heaps
- In Compilers, Architectures, and Synthesis for Embedded Systems
, 2007
"... Research into embedded sensor networks has placed increased focus on the problem of developing reliable and flexible software for microcontroller-class devices. Languages such as nesC [8] and Virgil [14] have brought higher-level programming idioms to this lowest layer of software, thereby adding ex ..."
Abstract
-
Cited by 5 (2 self)
- Add to MetaCart
Research into embedded sensor networks has placed increased focus on the problem of developing reliable and flexible software for microcontroller-class devices. Languages such as nesC [8] and Virgil [14] have brought higher-level programming idioms to this lowest layer of software, thereby adding expressiveness. Both languages are marked by the absence of dynamic memory allocation, which removes the need for a runtime system to manage memory. To provide data structures, nesC offers modules, and Virgil offers the application an opportunity to allocate and initialize objects during compilation. This paper explores techniques for compressing fixed object heaps with the goal of reducing the RAM footprint of a program. We explore table-based compression and introduce a novel form of object layout called vertical object layout. We provide experimental results that measure the impact on RAM size, code size, and execution time for a set of Virgil programs. Our results show that compressed vertical layout has better execution time and code size than tablebased compression while achieving more than 20 % heap reduction on 6 of 12 benchmark programs.
Lazy Schema Evolution in Object-Oriented Databases
, 2001
"... ... of long-lived objects shared by many programs. At any point in time, the database obeys some schema. Over time, the system is likely to experience schema changes. The requirement for both good performance and sound semantics has made schema evolution a long-standing challenge. When and how to ev ..."
Abstract
-
Cited by 4 (0 self)
- Add to MetaCart
... of long-lived objects shared by many programs. At any point in time, the database obeys some schema. Over time, the system is likely to experience schema changes. The requirement for both good performance and sound semantics has made schema evolution a long-standing challenge. When and how to evolve existing objects to conform to a new schema is at the core of the problem. This thesis addresses this problem with both semantics analysis and an implementation. First, we
Object-Relative Addressing: Compressed Pointers in 64-Bit Java Virtual Machines
"... Abstract. 64-bit address spaces come at the price of pointers requiring twice as much memory as 32-bit address spaces, resulting in increased memory usage. This paper reduces the memory usage of 64-bit pointers in the context of Java virtual machines through pointer compression, called Object-Relati ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
Abstract. 64-bit address spaces come at the price of pointers requiring twice as much memory as 32-bit address spaces, resulting in increased memory usage. This paper reduces the memory usage of 64-bit pointers in the context of Java virtual machines through pointer compression, called Object-Relative Addressing (ORA). The idea is to compress 64-bit raw pointers into 32-bit offsets relative to the referencing object’s virtual address. Unlike previous work on the subject using a constant base address for compressed pointers, ORA allows for applying pointer compression to Java programs that allocate more than 4GB of memory. Our experimental results using Jikes RVM and the SPECjbb and DaCapo benchmarks on an IBM POWER4 machine show that the overhead introduced by ORA is statistically insignificant on average compared to raw 64-bit pointer representation, while reducing the total memory usage by 10 % on average and up to 14.5 % for some applications. 1
Prepared using speauth.cls [Version: 2002/09/23 v2.2] 64-bit versus 32-bit Virtual Machines for Java
"... The Java language thanks its popularity to its platform independence, making it useful in a lot of technologies ranging from embedded devices to high-performance systems. The platform independent property of Java, which is visible at the Java bytecode level, is only made possible thanks to the avail ..."
Abstract
- Add to MetaCart
The Java language thanks its popularity to its platform independence, making it useful in a lot of technologies ranging from embedded devices to high-performance systems. The platform independent property of Java, which is visible at the Java bytecode level, is only made possible thanks to the availability of a Virtual Machine (VM) that needs to be designed specifically for each underlying hardware platform. More specifically, the same Java bytecode should run properly on both a 32-bit or a 64-bit VM. In this paper, we compare the behavioral characteristics of 32-bit versus 64-bit virtual machines using a large set of Java benchmarks. This is done using the Jikes Research VM as well as the IBM JDK 1.4.0 production VM on a PowerPC-based IBM machine. By running the PowerPC machine in both 32-bit and 64-bit mode we are able to compare 32-bit versus 64-bit VMs. We conclude that the space an object takes in the heap in 64-bit mode is 39.3 % larger on average than in 32-bit mode. We identify three reasons for this: (i) the larger pointer size, (ii) the increased header and (iii) the increased alignment. The minimally required heap size is 51.1 % larger on average in 64-bit than in 32-bit mode. From our experimental setup using hardware performance monitors, we observe that 64-bit computing typically results in a significantly larger number of data cache misses at all levels of the memory hierarchy. In addition, we also observe that when a sufficiently large heap is available, the IBM JDK 1.4.0 VM is 1.7 % slower on average in 64-bit mode than in 32-bit mode. key words:

