Re: [HACKERS] Clock with Adaptive Replacement

Поиск
Список
Период
Сортировка
От Andrey Borodin
Тема Re: [HACKERS] Clock with Adaptive Replacement
Дата
Msg-id 20970C0A-C17A-44D2-8DE4-F17F02EE51EF@yandex-team.ru
обсуждение исходный текст
Ответ на Re: [HACKERS] Clock with Adaptive Replacement  (Юрий Соколов <funny.falcon@gmail.com>)
Ответы Re: [HACKERS] Clock with Adaptive Replacement  (Yura Sokolov <funny.falcon@gmail.com>)
Re: [HACKERS] Clock with Adaptive Replacement  (Robert Haas <robertmhaas@gmail.com>)
Список pgsql-hackers
Hi!

4 мая 2018 г., в 16:05, Юрий Соколов <funny.falcon@gmail.com> написал(а):

I didn't suggest log scale of usages, but rather "replacement-period based" increment: usage count could be incremented at most once in NBlocks/32 replaced items. Once it is incremented, its "replacement time" is remembered, and next NBlocks/32 replacements usage count of this buffer doesn't increment.
This way, increment is synchronized with replacement activity.
But you loose difference between "touched once" and "actively used". Log scale of usage solves this: usage count grows logarithmically, but drains linearly.


Digging further, I suggest as improvement of GClock algorithm:
- placing new buffer with usage count = 0 (and next NBlock/32 replacements its usage count doesn't increased)
- increment not by 1, but by 8 (it simulates "hot queue" of popular algorithms) with limit 32.
- scan at most 25 buffers for eviction. If no buffer with zero usage count found, the least used buffer (among scanned 25) is evicted.
(new buffers are not evicted during their first NBlock/32 replacements).

I do not understand where these numbers come from...

Best regards, Andrey Borodin.

В списке pgsql-hackers по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: Draft release notes are up
Следующее
От: Yura Sokolov
Дата:
Сообщение: Re: [HACKERS] Clock with Adaptive Replacement