Tom Lane wrote:

Manfred Spraul <[EMAIL PROTECTED]> writes:
Are there strategies that do not rely on a global lock? The Linux kernel uses a lazy LRU with referenced bits: on access, the referenced bit is set. The freespace logic takes pages from the end of a linked list, and checks that bit: if it's set, then the page is moved back to the top of the list. Otherwise it's a candidate for replacement.

I think this is the same idea as what I was just suggesting: add an extra check when looking for a free page, and thereby avoid having to lock/update the global datastructure during ReadBuffer.

Hmmmm ... speaking without having done in depth thought on this one:


If there would be an easy way to determine the approximate position of a CDB inside the queue, one could just forget about moving it to the MRU position if it's in the upper 3rd or so anyway.

The theory of the whole ARC strategy (which is nothing more than four LRU's with a twist) is that the access frequency of blocks is reverse proportional to their numbers (a few are high frequency used, some are medium often requested, the vast majority rather seldom). That means, that the buffers in the upper third or quarter of the T1 queue (and that's the critical one) are basically circling around each other with frequent visitors from the lower regions or other queues.

So if there would be a way to make a good guess on that relative queue position, that expensive CDB shuffeling can be avoided often.


Jan


--
#======================================================================#
# It's easier to get forgiveness for being wrong than for being right. #
# Let's break this rule - forgive me.                                  #
#================================================== [EMAIL PROTECTED] #


---------------------------(end of broadcast)--------------------------- TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]

Reply via email to