I am beginning to worry about a corner case of object ageing. I have a tentative solution, but I would appreciate some advice.
The odd corner case goes as follows:
I do not, in general, know of a solution to this problem. My main concern is that as the in-core object cache grows large, making N passes (N the number of generations before kickout) becomes expensive.
I am therefore contemplating the following change:
Rather than consider all nodes (pages), the ager will divide node space (page space) into windows of W objects. When asked to perform ageing, it will consider only the next W objects in node space (page space). It will therefore consider at most (N-1)*W objects before kicking something out. Once an object has been selected for termination (sic), the ager will advance the window by W objects.
In effect, I am proposing a poor-man's binning strategy.
Does anyone know of a reason to shun this solution?
shap