Postgresql and resource isolation

Started by Garber, Mikhailover 18 years ago6 messagesgeneral
Jump to latest
#1Garber, Mikhail
mgarber@amazon.com

Hello,

We are considering using Postgresql for rather large project and I have questions about where it stands in respect to the following.

Consider these two features already found in major commercial products.

A) "resource governor" - the ability to configure how much resources (IO per second, CPU slices) particular users or sessions are allowed to use

B) ability to collect statistics about how much IO and CPU particular users and sessions actually use

I understand that I should be able to get at least some IO data by querying pg_stat_* views, but what about getting numbers about CPU usage?
And more general question - what are the plans to support these and similar features in Postgresql?

Thanks!

#2Joshua D. Drake
jd@commandprompt.com
In reply to: Garber, Mikhail (#1)
Re: Postgresql and resource isolation

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On Thu, 15 Nov 2007 10:12:51 -0800
"Garber, Mikhail" <mgarber@amazon.com> wrote:

Hello,

We are considering using Postgresql for rather large project and I
have questions about where it stands in respect to the following.

Consider these two features already found in major commercial
products.

A) "resource governor" - the ability to configure how much resources
(IO per second, CPU slices) particular users or sessions are allowed
to use

That is controlled from the operating system.

B) ability to collect statistics about how much IO and CPU particular
users and sessions actually use

That one is a little tougher. The database will provide you what
relations are being used and how much. It will not tell you "which"
user did the work.

But again, if you are looking at controlling the instance itself that
is an Operating system problem not a database problem.

I understand that I should be able to get at least some IO data by
querying pg_stat_* views, but what about getting numbers about CPU
usage? And more general question - what are the plans to support
these and similar features in Postgresql?

I can't speak definitely about your request but I can say I would vote
against much of it. I don't care what user is abusing the system. I
care what process is abusing the system and what that process is doing.

I can get that now between the statistics collection of PostgreSQL and
the standard operating system tools already provided to me.

Sincerely,

Joshua D. Drake

Thanks!

---------------------------(end of
broadcast)--------------------------- TIP 4: Have you searched our
list archives?

http://archives.postgresql.org/

- --

=== The PostgreSQL Company: Command Prompt, Inc. ===
Sales/Support: +1.503.667.4564 24x7/Emergency: +1.800.492.2240
PostgreSQL solutions since 1997 http://www.commandprompt.com/
UNIQUE NOT NULL
Donate to the PostgreSQL Project: http://www.postgresql.org/about/donate
PostgreSQL Replication: http://www.commandprompt.com/products/

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)

iD4DBQFHPI2nATb/zqfZUUQRAgllAJoCzCH3mbt0j1ZGTeOWI70j15Lu5gCWJd6h
wNIo7HHbQtqkbRpN+i2UXQ==
=m4hI
-----END PGP SIGNATURE-----

#3Andrew Sullivan
ajs@crankycanuck.ca
In reply to: Garber, Mikhail (#1)
Re: Postgresql and resource isolation

On Thu, Nov 15, 2007 at 10:12:51AM -0800, Garber, Mikhail wrote:

A) "resource governor" - the ability to configure how much resources (IO
per second, CPU slices) particular users or sessions are allowed to use

PostgreSQL is not like several other commercial systems, in that it doesn't
"take over" the OS as some others do. So it sort of can't do some of these
things.

Moreover, there is a possible problem with putting in these governors, which
is called priority inversion. Because Postgres has quite advanced
concurrency control, it is possible for a user who has been "throttled" to
restrict the ability of others to do their work, too. A paper discussed not
long ago in one of the mailing lists, however, suggests this problem isn't
as bad as some (including me) historically thought. I can't put my fingers
on it this minute, but a little digging in the archives for "nice settings"
or something similar ought to turn it up.

And more general question - what are the plans to support these and
similar features in Postgresql?

If someone comes along with an implementation that doesn't impose serious
costs on the rest of the system, I'd be surprised if people balked. But I
know of nobody working on it today.

--
Andrew Sullivan
Old sigs will return after re-constitution of blue smoke

#4Trevor Talbot
quension@gmail.com
In reply to: Joshua D. Drake (#2)
Re: Postgresql and resource isolation

On 11/15/07, Joshua D. Drake <jd@commandprompt.com> wrote:

A) "resource governor" - the ability to configure how much resources
(IO per second, CPU slices) particular users or sessions are allowed
to use

That is controlled from the operating system.

What OSes support this?

#5Joshua D. Drake
jd@commandprompt.com
In reply to: Trevor Talbot (#4)
Re: Postgresql and resource isolation

Trevor Talbot wrote:

On 11/15/07, Joshua D. Drake <jd@commandprompt.com> wrote:

A) "resource governor" - the ability to configure how much resources
(IO per second, CPU slices) particular users or sessions are allowed
to use

That is controlled from the operating system.

What OSes support this?

Well I know that FreeBSD through Jails and Linux through Xen can give
you fine grained control over how much resources a particular instance
can use.

My understanding is that Solaris Zones also give you quite a bit of
control but someone else would have to comment on that.

Sincerely,

Joshua D. Drake

Show quoted text
#6Trevor Talbot
quension@gmail.com
In reply to: Joshua D. Drake (#5)
Re: Postgresql and resource isolation

On 11/15/07, Joshua D. Drake <jd@commandprompt.com> wrote:

Well I know that FreeBSD through Jails and Linux through Xen can give
you fine grained control over how much resources a particular instance
can use.

I hadn't seen the new limits in jail, the CPU limiting in particular
is neat. I'm not familiar with Xen's capabilities, but neither one
will actually work for this scenario, since both can only contain an
entire database cluster. In order to get per-session resource
throttiling, it would at least need to support limits on a per-process
basis. Per-user would require grouping several postgres processes,
although this doesn't seem to be as pressing a need (limit number of
connections instead, etc). There doesn't seem to be an answer to I/O
throttling either.

Even if an OS does supply these capabilities, it would seem to require
cooperation from postgres.

My understanding is that Solaris Zones also give you quite a bit of
control but someone else would have to comment on that.

I'd be interested in hearing about Solaris too, it seems to get a lot
of neat capabilities that don't show up elsewhere.