Re: Issue with the PRNG used by Postgres
От | Tom Lane |
---|---|
Тема | Re: Issue with the PRNG used by Postgres |
Дата | |
Msg-id | 4032321.1712761795@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | Re: Issue with the PRNG used by Postgres (Robert Haas <robertmhaas@gmail.com>) |
Ответы |
Re: Issue with the PRNG used by Postgres
Re: Issue with the PRNG used by Postgres |
Список | pgsql-hackers |
Robert Haas <robertmhaas@gmail.com> writes: > I'm not convinced that we should try to improve the RNG, but surely we > need to put parentheses around pg_prng_double(&pg_global_prng_state) + > 0.5. IIUC, the current logic is making us multiply the spin delay by a > value between 0 and 1 when what was intended was that it should be > multiplied by a value between 0.5 and 1.5. No, I think you are misreading it, because the assignment is += not =. The present coding is /* increase delay by a random fraction between 1X and 2X */ status->cur_delay += (int) (status->cur_delay * pg_prng_double(&pg_global_prng_state) + 0.5); which looks fine to me. The +0.5 is so that the conversion to integer rounds rather than truncating. In any case, I concur with Andres: if this behavior is anywhere near critical then the right fix is to not be using spinlocks. regards, tom lane
В списке pgsql-hackers по дате отправления: