About shared cache invalidation mechanism - Mailing list pgsql-hackers

From huaicheng Li
Subject About shared cache invalidation mechanism
Date
Msg-id CANr0WEcSf=t5qU_Cw1S9B-gU7RwtK=cmeorGPGM-KxNLHNO4PQ@mail.gmail.com
Whole thread Raw
Responses Re: About shared cache invalidation mechanism
List pgsql-hackers
<div dir="ltr"><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">​I know that all invalid cache
messagesare stored in the shmInvalidationBuffer ring buffer and that they should be consumed by all other backends to
keeptheir own cache fresh. Since there may be some "stragglers" which process the SI message quite slow, we use
*catchup*interrupt(signal) to accelerate their cosuming shared invalid messages. Here comes my questions :</div><div
class="gmail_default"style="font-family:arial,helvetica,sans-serif">(1). When the current number of messages in the
shmInvalidationBufferexceeds a threshold, it needs to be cleaned up by using SICleanupQueue. After that, if the number
stillexceeds MAXNUMMESSAGES/2, threshold will be calculated by the following formula:</div><div class="gmail_default"
style="font-family:arial,helvetica,sans-serif"><spanstyle="background-color:rgb(243,243,243)"><font
color="#ff0000">Threshold= (numMsgs/CLEANUP_QUANTUM + 1) * CLEANUP_QUANTUM</font></span></div><div
class="gmail_default"style="font-family:arial,helvetica,sans-serif"><span
style="background-color:rgb(255,255,255)">(2).For those slow backends, if their *nextMsgNum* value is less than
*lowbound*,they will be reset, and the *lowbound* is calculated by</span></div><div class="gmail_default"
style="font-family:arial,helvetica,sans-serif"><spanstyle="background-color:rgb(255,255,255)"><font
color="#ff0000">lowbound= maxMsgNum - MAXNUMMESSAGES + minFree,</font></span></div><div class="gmail_default"
style="font-family:arial,helvetica,sans-serif"><spanstyle="background-color:rgb(255,255,255)">and if their *nextMsgNum*
valueis less than *minsig*, they will get catchup signals to speed up, *minsig* is calculated by</span></div><div
class="gmail_default"style="font-family:arial,helvetica,sans-serif"><span
style="background-color:rgb(255,255,255)"><fontcolor="#ff0000">minsig = maxMsgNum -
MAXNUMMESSAGES/2</font></span></div><divclass="gmail_default" style="font-family:arial,helvetica,sans-serif"><span
style="background-color:rgb(255,255,255)"><br/></span></div><div class="gmail_default"
style="font-family:arial,helvetica,sans-serif"><spanstyle="background-color:rgb(255,255,255)">Here, I want to ask why
threshold,lowbound and minsig are calculated like that ? Do the three formulas have any performance considerations when
designed? I have searched through the old mail list archives, but found nothing about these(these changes emerged in
pg8.4firstly), any help would be appreciated.</span></div></div> 

pgsql-hackers by date:

Previous
From: Amit Kapila
Date:
Subject: Re: Extra functionality to createuser
Next
From: Pavel Stehule
Date:
Subject: Re: plpgsql_check_function - rebase for 9.3