Re: [GENERAL] A way to let Vacuum warn if FSM settings are

From: Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us>
To: PostgreSQL-patches <pgsql-patches(at)postgresql(dot)org>
Cc: Simon Riggs <simon(at)2ndquadrant(dot)com>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Ron Mayer <rm_pg(at)cheapcomplexdevices(dot)com>
Subject: Re: [GENERAL] A way to let Vacuum warn if FSM settings are
Date: 2005-04-07 19:17:26
Message-ID: 200504071917.j37JHQG28303@candle.pha.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-patches


I never heard any discussion on whether this should be backpatched to
8.0.X. Should it?

---------------------------------------------------------------------------

pgman wrote:
> Simon Riggs wrote:
> > On Mon, 2005-03-14 at 01:40 -0500, Tom Lane wrote:
> > > Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us> writes:
> > > > Ron Mayer wrote:
> > > >> My reasoning why I thought the log file was more useful was
> > > >> that only an admin with access to the log files could really
> > > >> do anything about the message anyway.
> > >
> > > > The log file is useful, but I think showing the VACUUM user is _more_
> > > > useful than the log file.
> > >
> > > I think that reasoning is fundamentally unsound, because (a) a lot of
> > > people already do vacuuming via a cron job or autovacuum, and (b)
> > > autovacuum is definitely the wave of the future. So it's foolish
> > > to design this messaging around the assumption that there will be
> > > a human attentive to the on-line output from VACUUM. We should be
> > > ensuring that the message gets into the postmaster log --- whether
> > > it gets sent to the client is secondary.
> >
> > Personally, I prefer the postmaster log as the place for this.
> >
> > However, whilst vacuum exists as a separate command, there will be an
> > argument to return a message back to the person running it; we cannot
> > assume that people would be inattentive.
> >
> > Possibly the deciding factor should be whether autovacuum makes it fully
> > into becoming a special backend anytime soon, since in that case only
> > the log would remain as an option for reporting this message, in that
> > case.
> >
> > Can we have both?
>
> Sure. It is very easy and in fact looks even cleaner than the original
> code because now the optional stuff is in its own function.
>
> Patch attached and applied.
>
> --
> Bruce Momjian | http://candle.pha.pa.us
> pgman(at)candle(dot)pha(dot)pa(dot)us | (610) 359-1001
> + If your life is a hard drive, | 13 Roberts Road
> + Christ can be your backup. | Newtown Square, Pennsylvania 19073

> Index: src/backend/storage/freespace/freespace.c
> ===================================================================
> RCS file: /cvsroot/pgsql/src/backend/storage/freespace/freespace.c,v
> retrieving revision 1.38
> diff -c -c -r1.38 freespace.c
> *** src/backend/storage/freespace/freespace.c 12 Mar 2005 05:21:52 -0000 1.38
> --- src/backend/storage/freespace/freespace.c 14 Mar 2005 20:04:00 -0000
> ***************
> *** 221,226 ****
> --- 221,228 ----
> * FSMHeader->relHash */
>
>
> + static void CheckFreeSpaceMapStatistics(int elevel, int numRels,
> + double needed);
> static FSMRelation *lookup_fsm_rel(RelFileNode *rel);
> static FSMRelation *create_fsm_rel(RelFileNode *rel);
> static void delete_fsm_rel(FSMRelation *fsmrel);
> ***************
> *** 711,726 ****
> errdetail("FSM size: %d relations + %d pages = %.0f kB shared memory.",
> MaxFSMRelations, MaxFSMPages,
> (double) FreeSpaceShmemSize() / 1024.0)));
> !
> ! if (numRels == MaxFSMRelations)
> ! ereport(NOTICE,
> (errmsg("max_fsm_relations(%d) equals the number of relations checked",
> MaxFSMRelations),
> errhint("You have >= %d relations.\n"
> "Consider increasing the configuration parameter \"max_fsm_relations\".",
> numRels)));
> else if (needed > MaxFSMPages)
> ! ereport(NOTICE,
> (errmsg("the number of page slots needed (%.0f) exceeds max_fsm_pages (%d)",
> needed,MaxFSMPages),
> errhint("Consider increasing the configuration parameter \"max_fsm_relations\"\n"
> --- 713,736 ----
> errdetail("FSM size: %d relations + %d pages = %.0f kB shared memory.",
> MaxFSMRelations, MaxFSMPages,
> (double) FreeSpaceShmemSize() / 1024.0)));
> !
> ! CheckFreeSpaceMapStatistics(NOTICE, numRels, needed);
> ! /* Print to server logs too because is deals with a config variable. */
> ! CheckFreeSpaceMapStatistics(LOG, numRels, needed);
> ! }
> !
> ! static void
> ! CheckFreeSpaceMapStatistics(int elevel, int numRels, double needed)
> ! {
> ! if (numRels == MaxFSMRelations)
> ! ereport(elevel,
> (errmsg("max_fsm_relations(%d) equals the number of relations checked",
> MaxFSMRelations),
> errhint("You have >= %d relations.\n"
> "Consider increasing the configuration parameter \"max_fsm_relations\".",
> numRels)));
> else if (needed > MaxFSMPages)
> ! ereport(elevel,
> (errmsg("the number of page slots needed (%.0f) exceeds max_fsm_pages (%d)",
> needed,MaxFSMPages),
> errhint("Consider increasing the configuration parameter \"max_fsm_relations\"\n"

--
Bruce Momjian | http://candle.pha.pa.us
pgman(at)candle(dot)pha(dot)pa(dot)us | (610) 359-1001
+ If your life is a hard drive, | 13 Roberts Road
+ Christ can be your backup. | Newtown Square, Pennsylvania 19073

Responses

Browse pgsql-patches by date

  From Date Subject
Next Message Tom Lane 2005-04-07 19:25:41 Re: [GENERAL] A way to let Vacuum warn if FSM settings are low. [final?]
Previous Message Lionel Bouton 2005-04-07 09:14:30 BUG #1588: pg_autovacuum sleep parameter overflow