About shared cache invalidation mechanism
От | huaicheng Li |
---|---|
Тема | About shared cache invalidation mechanism |
Дата | |
Msg-id | CANr0WEcSf=t5qU_Cw1S9B-gU7RwtK=cmeorGPGM-KxNLHNO4PQ@mail.gmail.com обсуждение исходный текст |
Ответы |
Re: About shared cache invalidation mechanism
|
Список | 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 по дате отправления: