Re: Changing semantics of autovacuum_cost_limit

From: Jim Nasby <decibel(at)decibel(dot)org>
To: Galy Lee <lee(dot)galy(at)oss(dot)ntt(dot)co(dot)jp>
Cc: pgsql-hackers(at)postgresql(dot)org
Subject: Re: Changing semantics of autovacuum_cost_limit
Date: 2007-04-09 20:48:34
Message-ID: 0CE347C3-6145-4C32-8E72-845F02CC55C1@decibel.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Mar 26, 2007, at 2:01 AM, Galy Lee wrote:
> As AUTOVACUUM is having multiple workers now, the semantics of
> autovacuum_cost_limit also need to be redefined.
>
> Currently, autovacuum_cost_limit is the accumulated cost that will
> cause
> one single worker vacuuming process to sleep. It is used to restrict
> the I/O consumption of a single vacuum worker. When there are N
> workers,
> the I/O consumption by autovacuum workers can be increased by N times.
> This autovacuum_cost_limit semantics produces unpredictable I/O
> consumption for multiple-autovacuum-workers.
>
> One simple idea is to set cost limit for every worker to:
> autovacuum_cost_limit / max_autovacuum_workers. But for scenarios
> which
> have fewer active workers, it is obvious unfair to active workers.
> So a
> better way is to set cost limit of every active worker to:
> autovacuum_cost_limit/autovacuum_active_workers. This ensures the I/O
> consumption of autovacuum is stable.
>
> Worker can be extended to have its own cost_limit on share memory.
> When
> a worker is brought up or a worker has finished its work, launcher
> recalculates:
>
> worker_cost_limit= (autovacuum_cost_limit/
> autovacuum_active_workers)
>
> and sets new value for each active workers.
>
> The above approach requires launcher can change cost delay setting of
> workers on-the-fly. This can be achieved by forcing VACUUM refers
> to the
> cost delay setting in its worker’s share memory every
> vacuum_delay_point.
>
> Any comments or suggestions?

Well, ideally we'd set cost limit settings on a per-tablespace
basis... but I agree that what you propose is probably the best bet
for multiple daemons short of doing per-tablespace stuff.
--
Jim Nasby jim(at)nasby(dot)net
EnterpriseDB http://enterprisedb.com 512.569.9461 (cell)

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Jim Nasby 2007-04-09 20:55:31 Re: Partitioned tables constraint_exclusion
Previous Message Jim Nasby 2007-04-09 20:39:24 Re: Effects of GUC settings on automatic replans