Lazy Reference Counting for Transactional Storage Systems

Hac is a novel technique for managing the client cache in a distributed, persistent object storage system. In a companion paper, we showed that it outperforms other techniques across a wide range of cache sizes and workloads. This report describes Hac’s solution to a specifi c problem: how to discard indirection table entries in an indirect pointer swizzling scheme. Hac uses lazy reference counting to solve this problem. Instead of eagerly updating reference counts when objects are modifi ed and eagerly freeing unreferenced entries, which can be expensive, we perform these operations lazily in the background while waiting for replies to fetch and commit requests. Furthermore, we introduce a number of additional optimizations to reduce the space and time overheads of maintaining reference counts. The net eff ect is that the overhead of lazy reference counting is low.