On Tue, Dec 10, 2024 at 6:32 PM Andrey M. Borodin <x4...@yandex-team.ru> wrote:
>
>
>
> > On 10 Dec 2024, at 15:39, Yura Sokolov <y.soko...@postgrespro.ru> wrote:
> >
> > It is not critical bug, since it doesn't hurt correctness just performance. 
> > In worst case only one bank will be used.
>
> Ugh... yeah. IMO the problem is that we do not have protection that rejects 
> values that are not power of 2.
> If other values given system operates as if there are 2^(popcount(n)-1) 
> banks. So if we just round down value to nearest power of 2 - we will help 
> incorrectly configured systems to use proper amount of memory and keep 
> performance of properly configured systems.
>
> IMO doing modulo is not necessary. And hash function is pure waste of CPU 
> cycles.


IIUC, we do check that it should be in multiple of bank size (i.e.)
which is multiple of 2, right?  Am I missing something?

/*
* Helper function for GUC check_hook to check whether slru buffers are in
* multiples of SLRU_BANK_SIZE.
*/
bool
check_slru_buffers(const char *name, int *newval)
{
/* Valid values are multiples of SLRU_BANK_SIZE */
if (*newval % SLRU_BANK_SIZE == 0)
return true;

GUC_check_errdetail("\"%s\" must be a multiple of %d", name,
SLRU_BANK_SIZE);
return false;
}



-- 
Regards,
Dilip Kumar
EnterpriseDB: http://www.enterprisedb.com


Reply via email to