Abstract
The so-called 'read' and 'write' barriers present an obstacle to the efficient
execution of persistent programs that use a volatile object buffer, nonvolatile object store memory model. The barriers, implemented as checks
added to the code, are required to ensure that objects are moved from store to
buffer before being used and, if updated in the buffer, that they are written
back on periodic checkpoints.
Static read and write barrier optimisations are identified that require runtime guarantees on certain objects' remaining resident in the buffer. These
objects are said to be 'pinned'. Object pinning conflicts with the buffer
manager's freedom to evict objects from the buffer when it is full . A contract
between the buffer manager and the code optimiser guarantees a minimum
level of pinning for each thread. Beyond this guarantee, heuristics added to
the buffer manager allow adjustment of the level of pinning for each thread
according to the prevailing collection and individual states of threads, to
minimise pinning vs object management conflicts. Optimisation of the
write barrier additionally requires the buffer manager to uphold certain
guarantees across checkpoint operations.
This paper presents the design of buffer management mechanisms to
uphold the pinning and update guarantees and identifies the heuristics used to
adjust the level of pinning allocated to each thread. Details of the
mechanisms' implementation in the PJama system are given. Measurements
show that the additional functionality does not represent a significant
overhead to the operation of the system, when running the OO7 benchmark.
execution of persistent programs that use a volatile object buffer, nonvolatile object store memory model. The barriers, implemented as checks
added to the code, are required to ensure that objects are moved from store to
buffer before being used and, if updated in the buffer, that they are written
back on periodic checkpoints.
Static read and write barrier optimisations are identified that require runtime guarantees on certain objects' remaining resident in the buffer. These
objects are said to be 'pinned'. Object pinning conflicts with the buffer
manager's freedom to evict objects from the buffer when it is full . A contract
between the buffer manager and the code optimiser guarantees a minimum
level of pinning for each thread. Beyond this guarantee, heuristics added to
the buffer manager allow adjustment of the level of pinning for each thread
according to the prevailing collection and individual states of threads, to
minimise pinning vs object management conflicts. Optimisation of the
write barrier additionally requires the buffer manager to uphold certain
guarantees across checkpoint operations.
This paper presents the design of buffer management mechanisms to
uphold the pinning and update guarantees and identifies the heuristics used to
adjust the level of pinning allocated to each thread. Details of the
mechanisms' implementation in the PJama system are given. Measurements
show that the additional functionality does not represent a significant
overhead to the operation of the system, when running the OO7 benchmark.
Original language | English |
---|---|
Title of host publication | Advances in Persistent Object Systems |
Subtitle of host publication | POS-8 and PJAVA-3 |
Editors | Ron Morrison, Mick Jordan, Malcolm Atkinson |
Publisher | Morgan Kauffman Publishers |
Pages | 51-63 |
ISBN (Print) | 1-55860-585-1 |
Publication status | Published - 1998 |
Externally published | Yes |