@InProceedings{wu:thrashing, author = {Kun-Lung Wu and Philip S. Yu and James Z. Teng}, title = {Performance Comparison of Thrashing Control Policies for Concurrent Mergesorts with Parallel Prefetching}, booktitle = {Proceedings of the 1993 ACM SIGMETRICS Conference on Measurement and Modeling of Computer Systems}, year = {1993}, pages = {171--182}, keywords = {disk prefetching, parallel I/O, disk caching, sorting, pario-bib}, comment = {They discuss prefetching and caching in database machines where mergesorts merge several input streams, each from its own disk, to one output stream, to its own disk. There are concurrent merges going on. A merge can cause thrashing when writes grab a clean buffer that holds an unused prefetch, thus forcing the block to later be read again. They consider several policies to handle this, but it seemed to me like they missed an obvious alternative, that may have been better: whenever you need a clean buffer to write into, but all the clean buffers hold unused-prefetched blocks, stall and wait while the dirty blocks are flushed (presumably started earlier when the clean-block count got too low). It seems better to wait for a half-finished write than to toss out a prefetched block and later have to read it again. Their simulations show that their techniques help a lot.} }