Check out the new USENIX Web site. next up previous
Next: Data Lifetimes Up: Separating Active and Inactive Previous: Separating Active and Inactive

An Adaptive Grouping Algorithm

We developed a heuristic learning method for WOLF. The tracking process implements a variation of the least-recently used algorithm with frequency information. Our algorithm is similar to virtual memory page-aging techniques.

To capture the temporal locality of file accesses, each block in the segment buffers has a reference count associated with it. This number is incremented when the block is accessed. The count is initialized to zero and is also reset to zero when the file system becomes idle for a certain period. We call this period as time-bar. It is initialized to 10 minutes1. If the age of this block exceeds current time-bar, WOLF will reset the reference count of this block to zero. WOLF only does this zero clearing in write buffers. The value of the count indicates the active level of the block in most recent active period, which starts since the time-bar. The higher the value of the count, the more active a block is. The Time-bar could be adaptively tuned for the various incoming accesses. When the system identifies that there is no significant difference among the blocks' active ratios in the reorder buffers, which means the 90% reference counts of blocks are equal, the time-bar will be doubled. If most blocks have too different active ratios, when only 10% reference counts of blocks are equal, the time-bar will be halved. The Time-bar makes the reordering buffers work heuristically for different workloads. Active data are then put into the active segment buffer, and other data in the inactive buffer.

If two blocks have the same reference counts, then spatial locality is considered. If the two blocks satisfy one of the following conditions, they will be grouped into the same segment buffer:

If none of the above conditions is true, the blocks are randomly put into buffers.

The overhead of this learning method is low. Most active blocks have no more than a hundred accesses in a short period. Only a small amount of additional bits are needed for each block. Time-bar is managed by the reordering buffer manager with little overhead. WOLF only resets the reference count in the reordering buffers.


next up previous
Next: Data Lifetimes Up: Separating Active and Inactive Previous: Separating Active and Inactive
Jun Wang 2001-10-31