Re: Proposal: backend "niceness" / session_priority

From: Amit Kapila <amit(dot)kapila16(at)gmail(dot)com>
To: Jim Nasby <Jim(dot)Nasby(at)bluetreble(dot)com>
Cc: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, José Luis Tallón <jltallon(at)adv-solutions(dot)net>, Pg Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Proposal: backend "niceness" / session_priority
Date: 2015-07-31 13:40:42
Message-ID: CAA4eK1JAm9EFbTCdR48rwhVnttTdcTWw4CgNSW0OVAVCfvn=ww@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Fri, Jul 31, 2015 at 3:48 AM, Jim Nasby <Jim(dot)Nasby(at)bluetreble(dot)com> wrote:

> On 7/30/15 10:54 AM, Tom Lane wrote:
>
>> =?ISO-8859-15?Q?Jos=E9_Luis_Tall=F3n?= <jltallon(at)adv-solutions(dot)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+OZmUfBKvWBALnARw@mail.gmail.com

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

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Shulgin, Oleksandr 2015-07-31 13:45:43 Re: deparsing utility commands
Previous Message Michael Paquier 2015-07-31 13:11:53 Re: Doubt about AccessExclusiveLock in ALTER TABLE .. SET ( .. );