|If we assume a steady flow of news into the newsbase, and that expire
|is run regularly, the most efficient filling method is to use the
|_smallest_ free space in the news base that will hold the article
|rather than the _first_ free space. In the long run, this will
|produce the minimum amount of wasted space that cannot hold an
|article. I don't know if Yarn uses this method, but I wouldn't be
|surprised if it did. Especially considering your observations.
Many studies of free-space reuse and management were done by Knuth
and others in the late sixties / early seventies. Comparing first fit,
best fit and worst fit it was clear that, in the long run, worst fit (use
the biggest block of free space) will provide the best results. This is
because the best fit algorithm will usually leave tiny fragments of
free space which are unlikely to be of any use, while worst fit will
leave sizeable chunks of free memory which are more likely to be
large enough to be useful later on. But in most applications, first fit
is good enough so that the extra overhead from searching for the
biggest block may not be worth the bother.
With expire run every night just before the downloading of news,
my newsbase seems to be reasonably stable in the 40-50MB area.
If the newsbase seems to grow or not to shrink when an unusual
amount of articles have been deleted, the reason may be that an
article copied to a folder with very long retention period is the
last item in the newsbase. Since expire will not compress the base,
it will never shrink below the end of that last article.
Keep in mind that too much shrinking and growing of the base will
slow down the system by increased fragmentation. This will be
very bad on a FAT system, but will also occur on an HPFS drive.