I have applied your patch with minor modifications.  Applied version
attached.

I think the "pages" message:
        
        INFO:  free space map: 44 relations, 28 pages stored; 704 total pages 
used
        DETAIL:  FSM size: 1000 relations + 20000 pages = 182 kB shared memory.

should remain DEBUG2 for non-VERBOSE, and INFO for VERBOSE.  The
information is pretty complex and probably of little interest to a
typical vacuum user.  In fact, the new messages make the information
even less important because problems are now flagged.

I adjusted your output levels for the new messages.  I realize the
"checkpoint warning" is a LOG message, but it has to be because there is
no active session when a checkpoint is being run.  In the case of
VACUUM, there is an active session so I think the messages should be
sent to that session.  Sending them to the logs and not to the user
seems unusual because they are the ones who asked for the VACUUM.  I
realize they might not be able to change the server settings.
 
These new messages:
        
        NOTICE:  max_fsm_relations(1000) equals the number of relations checked
        HINT:  You have >= 44 relations.
        Consider increasing the configuration parameter "max_fsm_relations".
        NOTICE:  the number of page slots needed (704) exceeds max_fsm_pages 
(20000)
        HINT:  Consider increasing the configuration parameter 
"max_fsm_relations"
        to a value over 704.
        VACUUM

should be NOTICE.  NOTICE is for unusual events that are not warnings,
and that fits these cases.  If the administrator wants those in the
logs, he can set log_min_messages to NOTICE.

I also adjusted your output strings to more closely match our checkpoint
warning message.

Another idea would be to send the output to both the client and the logs
by default.

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

Ron Mayer wrote:
> On Sun, 27 Feb 2005, Simon Riggs wrote:
> > On Fri, 2005-02-25 at 16:48 -0800, Ron Mayer wrote:
> > > Getting closer?
> > For me, yes.  [...]
> > The not-warnings seem a little wordy for me, but they happen when and
> > how I would hope for. 
> > 
> > So, for me, it looks like a polish of final wording and commit.
> 
> Thanks for the feedback.  How about I replace the grammatically poor:
> 
>  LOG:  max_fsm_relations(%d) is equal than the number of relations vacuum 
> checked (%d)",
>  HINT:  You probably have more than %d relations. You should increase 
> max_fsm_relations. Pages needed for 
> max_fsm_pages may have been underestimated. 
> 
> with this:
> 
>  LOG:  max_fsm_relations(100) equals the number of relations checked
>  HINT:  You have >= 100 relations. You should increase max_fsm_relations.
> 
> 
> and replace this:
> 
>  LOG:  max_fsm_pages(%d) is smaller than the actual number of page slots 
> needed(%.0f)",
>  HINT:  You may want to increase max_fsm_pages to be larger than %.0f"
> 
> with the slightly smaller
> 
>  LOG:  the number of page slots needed (2832) exceeds max_fsm_pages (1601)
>  HINT:  You may want to increase max_fsm_pages to a value over 2832.
> 
> 
> These updated messages would fit on an 80-column display if the numbers 
> aren't too big.   Here's 80 characters for a quick reference.
>  
> 01234567890123456789012345678901234567890123456789012345678901234567890123456789
> The "pages needed...underestimate" in the first message was no longer 
> useful anyway; since it's no longer logging fsm_pages stuff when the
> max_fsm_relations condition occurred anyway
> 
>   Ron
> 
> The patch now looks like:
> 
> ================================================================================
> % diff -u postgresql-8.0.1/src/backend/storage/freespace/freespace.c 
> postgresql-patched/src/backend/storage/freespace/freespace.c
> --- postgresql-8.0.1/src/backend/storage/freespace/freespace.c    2004-12-31 
> 14:00:54.000000000 -0800
> +++ postgresql-patched/src/backend/storage/freespace/freespace.c    
> 2005-02-27 11:54:39.776546200 -0800
> @@ -705,12 +705,25 @@
>      /* Convert stats to actual number of page slots needed */
>      needed = (sumRequests + numRels) * CHUNKPAGES;
>  
> -    ereport(elevel,
> -            (errmsg("free space map: %d relations, %d pages stored; %.0f 
> total pages needed",
> +    ereport(INFO,
> +            (errmsg("free space map: %d relations, %d pages stored; %.0f 
> total pages used",
>                      numRels, storedPages, needed),
> -             errdetail("Allocated FSM size: %d relations + %d pages = %.0f 
> kB shared memory.",
> +             errdetail("FSM size: %d relations + %d pages = %.0f kB shared 
> memory.",
>                         MaxFSMRelations, MaxFSMPages,
>                         (double) FreeSpaceShmemSize() / 1024.0)));
> +    
> +    if (numRels == MaxFSMRelations)
> +        ereport(LOG,
> +            (errmsg("max_fsm_relations(%d) equals the number of relations 
> checked",
> +             MaxFSMRelations),
> +             errhint("You have >= %d relations. You should increase 
> max_fsm_relations.",numRels)));
> +    else
> +    if (needed > MaxFSMPages)
> +        ereport(LOG,
> +            (errmsg("the number of page slots needed (%.0f) exceeds 
> max_fsm_pages (%d)",
> +             needed,MaxFSMPages),
> +             errhint("You may want to increase max_fsm_pages to a value over 
> %.0f.",needed)));
> +
>  }
>  
>  /*
> % 
> ================================================================================
> 

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.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.37
diff -c -c -r1.37 freespace.c
*** src/backend/storage/freespace/freespace.c   31 Dec 2004 22:00:54 -0000      
1.37
--- src/backend/storage/freespace/freespace.c   12 Mar 2005 05:05:47 -0000
***************
*** 706,716 ****
        needed = (sumRequests + numRels) * CHUNKPAGES;
  
        ereport(elevel,
!                       (errmsg("free space map: %d relations, %d pages stored; 
%.0f total pages needed",
                                        numRels, storedPages, needed),
!                        errdetail("Allocated FSM size: %d relations + %d pages 
= %.0f kB shared memory.",
                                           MaxFSMRelations, MaxFSMPages,
                                           (double) FreeSpaceShmemSize() / 
1024.0)));
  }
  
  /*
--- 706,730 ----
        needed = (sumRequests + numRels) * CHUNKPAGES;
  
        ereport(elevel,
!                       (errmsg("free space map: %d relations, %d pages stored; 
%.0f total pages used",
                                        numRels, storedPages, needed),
!                        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"
+                                        "to a value over %.0f.", needed)));
  }
  
  /*
---------------------------(end of broadcast)---------------------------
TIP 6: Have you searched our list archives?

               http://archives.postgresql.org

Reply via email to