On Fri, Jul 31, 2015 at 3:48 AM, Jim Nasby <jim.na...@bluetreble.com> wrote:

> On 7/30/15 10:54 AM, Tom Lane wrote:
>
>> =?ISO-8859-15?Q?Jos=E9_Luis_Tall=F3n?= <jltal...@adv-solutions.net>
>> writes:
>>
>>>       Since PostgreSQL lacks the resource management capabilities of the
>>> "Big Ones" ( Resource Groups - Red, WorkLoad Manager - Blue ) or the
>>> Resource Governor in MS SQL Server, we can try and approximate the
>>> requested behaviour by reducing the CPU priority ("nice") of the backend
>>> in question. Please note that we would be using scheduler priority to
>>> try and modulate I/O, though I'm aware of the limitations of this
>>> mechanism.
>>>
>>
>> This has been proposed before, and rejected before, and I'm not seeing
>> anything particularly new here.  Without a credible mechanism for
>> throttling I/O, "nice" alone does not seem very promising.
>>
>
> Some OSes respect nice when it comes to IO scheduling, so it might still
> be useful. What I'm worried about is priority inversion[1].
>
> What might be useful would be to add a set of GUCs similar to
> vacuum_cost_* that operated at the shared buffer level. Dunno where you'd
> put the sleep though (presumably all the functions where you'd put the
> accounting are too low-level to sleep in).
>

I think for I/O throttling mainly we need two different kind of
I/O limiting, one is for data/index pages and other for WAL.

It seems to me that we already have some form of throttling for
checkpoint (via checkpoint_completion_target) and similarly for
bgwriter and Vacuum, however we have nothing for WAL writing
or writes done by backends.  For WAL, Simon already proposed
some rate limiting mechanism [1] and for backend writes we can
have check for sleep after every n buffer evictions by backends
where backend needs to write the buffer.



[1] -
http://www.postgresql.org/message-id/ca+u5nmlk2dvcw7ymz_ubrnqqenmvdbvyw+ozmufbkvwbaln...@mail.gmail.com

With Regards,
Amit Kapila.
EnterpriseDB: http://www.enterprisedb.com

Reply via email to