[I know I'm late and this has already been discussed by Richrad, Tom, et al., but ...]
On Tue, 21 Dec 2004 16:17:17 -0600, "Jim C. Nasby" <[EMAIL PROTECTED]> wrote: >look at where the last page you wrote out has ended up in the LRU list >since you last ran, and start scanning from there (by definition >everything after that page would have to be clean). This is a bit oversimplified, because that page will be moved to the start of the list when it is accessed the next time. A = B = C = D = E = F = G = H = I = J = K = L = m = n = o = p = q ^ would become M = A = B = C = D = E = F = G = H = I = J = K = L = n = o = p = q ^ (a-z ... known to be clean, A-Z ... possibly dirty) But with a bit of cooperation from the backends this could be made to work. Whenever a backend takes the page which is the start of the clean tail out of the list (most probably to insert it into another list or to re-insert it at the start of the same list) the clean tail pointer is advanced to the next list element, if any. So we would get M = A = B = C = D = E = F = G = H = I = J = K = L = n = o = p = q ^ As a little improvement the clean tail could be prevented from shrinking unnecessarily fast by moving the pointer to the previous list element if this is found to be clean: M = A = B = C = D = E = F = G = H = I = J = K = l = n = o = p = q ^ Maybe this approach could serve both goals, (1) keeping a number of clean pages at the LRU end of the list and (2) writing out other dirty pages if there's not much to do near the end of the list. But ... On Tue, 21 Dec 2004 10:26:48 -0500, Tom Lane <[EMAIL PROTECTED]> wrote: >Also, the cntxDirty mechanism allows a block to be dirtied without >changing the ARC state at all. ... which might kill this proposal anyway. Servus Manfred ---------------------------(end of broadcast)--------------------------- TIP 8: explain analyze is your friend