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