Re: checkpointer continuous flushing
| От | Heikki Linnakangas |
|---|---|
| Тема | Re: checkpointer continuous flushing |
| Дата | |
| Msg-id | 55C6410F.5040604@iki.fi обсуждение исходный текст |
| Ответ на | Re: checkpointer continuous flushing (Fabien COELHO <coelho@cri.ensmp.fr>) |
| Ответы |
Re: checkpointer continuous flushing
Re: checkpointer continuous flushing Re: checkpointer continuous flushing |
| Список | pgsql-hackers |
On 07/26/2015 06:01 PM, Fabien COELHO wrote: > Attached is very minor v5 update which does a rebase & completes the > cleanup of doing a full sort instead of a chuncked sort. Some thoughts on this: * I think we should drop the "flush" part of this for now. It's not as clearly beneficial as the sorting part, and adds a great deal more code complexity. And it's orthogonal to the sorting patch, so we can deal with it separately. * Is it really necessary to parallelize the I/O among tablespaces? I can see the point, but I wonder if it makes any difference in practice. * Is there ever any harm in sorting the buffers? The GUC is useful for benchmarking, but could we leave it out of the final patch? * Do we need to worry about exceeding the 1 GB allocation limit in AllocateCheckpointBufferIds? It's enough got 2 TB of shared_buffers. That's a lot, but it's not totally crazy these days that someone might do that. At the very least, we need to lower the maximum of shared_buffers so that you can't hit that limit. I ripped out the "flushing" part, keeping only the sorting. I refactored the logic in BufferSync() a bit. There's now a separate function, nextCheckpointBuffer(), that returns the next buffer ID from the sorted list. The tablespace-parallelization behaviour in encapsulated there, keeping the code in BufferSync() much simpler. See attached. Needs some minor cleanup and commenting still before committing, and I haven't done any testing besides a simple "make check". - Heikki
Вложения
В списке pgsql-hackers по дате отправления: