From: | Ashley Cambrell <ash(at)freaky-namuh(dot)com> |
---|---|
To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
Cc: | pgsql-hackers(at)postgresql(dot)org |
Subject: | Re: 7.2 is slow? [compile problem] |
Date: | 2001-12-20 00:51:03 |
Message-ID: | 3C2135F7.5010700@freaky-namuh.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
I haven't actually tried to compile 7.2 from the CVS, but there seems to
be a problem? [maybe on my side]
make[3]: Leaving directory
`/home/ash/ash-server/Work/build/pgsql/src/backend/utils'
gcc -O2 -Wall -Wmissing-prototypes -Wmissing-declarations
-Wl,-rpath,/tmp//lib -export-dynamic access/SUBSYS.o bootstrap/SUBSYS.o
catalog/SUBSYS.o parser/SUBSYS.o commands/SUBSYS.o executor/SUBSYS.o
lib/SUBSYS.o libpq/SUBSYS.o main/SUBSYS.o nodes/SUBSYS.o
optimizer/SUBSYS.o port/SUBSYS.o postmaster/SUBSYS.o regex/SUBSYS.o
rewrite/SUBSYS.o storage/SUBSYS.o tcop/SUBSYS.o utils/SUBSYS.o -lz
-lcrypt -lresolv -lnsl -ldl -lm -lreadline -o postgres
nodes/SUBSYS.o: In function `pprint':
nodes/SUBSYS.o(.text+0xdc95): undefined reference to `MIN'
nodes/SUBSYS.o(.text+0xdcfd): undefined reference to `MIN'
collect2: ld returned 1 exit status
make[2]: *** [postgres] Error 1
make[2]: Leaving directory
`/home/ash/ash-server/Work/build/pgsql/src/backend'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/home/ash/ash-server/Work/build/pgsql/src'
make: *** [all] Error 2
In ./src/backend/nodes/print.c:
/* outdent */
if (indentLev > 0)
{
indentLev--;
indentDist = MIN(indentLev * INDENTSTOP, MAXINDENT);
}
If I add
#ifndef MIN
#define MIN(a,b) (((a)<(b)) ? (a) : (b))
#endif
to print.c it compiles fine.
Ashley Cambrell
<snip>
>
>That's annoying. The LWLock changes were intended to solve the
>inefficiency with multiple CPUs, but it seems like we still have a
>problem somewhere.
>
>Could you recompile the backend with profiling enabled and try to get
>a profile from your test case? To build a profilable backend, it's
>sufficient to do
>
> cd .../src/backend
> gmake clean
> gmake PROFILE=-pg all
> gmake install-bin
>
>(assuming you are using gcc). Then restart the postmaster, and you
>should notice "gmon.out" files being dropped into the various database
>subdirectories anytime a backend exits. Next run your test case,
>and as soon as it finishes copy the gmon.out file to a safe place.
>(You'll only be able to get the profile from the last process to exit,
>so try to make sure that this is representative. Might be worth
>repeating the test a few times to make sure that the results don't
>vary a whole lot.) Finally, do
>
> gprof .../bin/postgres gmon.out >resultfile
>
>to produce a legible result.
>
>Oh, one more thing: on Linuxen you are likely to find that all the
>reported routine runtimes are zero, rendering the results useless.
>Apply the attached patch (for 7.2beta) to fix this.
>
> regards, tom lane
>
>*** src/backend/postmaster/postmaster.c.orig Wed Dec 12 14:52:03 2001
>--- src/backend/postmaster/postmaster.c Mon Dec 17 19:38:29 2001
>***************
>*** 1823,1828 ****
>--- 1823,1829 ----
> {
> Backend *bn; /* for backend cleanup */
> pid_t pid;
>+ struct itimerval svitimer;
>
> /*
> * Compute the cancel key that will be assigned to this backend. The
>***************
>*** 1858,1869 ****
>--- 1859,1874 ----
> beos_before_backend_startup();
> #endif
>
>+ getitimer(ITIMER_PROF, &svitimer);
>+
> pid = fork();
>
> if (pid == 0) /* child */
> {
> int status;
>
>+ setitimer(ITIMER_PROF, &svitimer, NULL);
>+
> free(bn);
> #ifdef __BEOS__
> /* Specific beos backend startup actions */
>
>---------------------------(end of broadcast)---------------------------
>TIP 5: Have you checked our extensive FAQ?
>
>http://www.postgresql.org/users-lounge/docs/faq.html
>
From | Date | Subject | |
---|---|---|---|
Next Message | Andrew McMillan | 2001-12-20 00:52:28 | Re: Connection Pooling, a year later |
Previous Message | Tom Lane | 2001-12-19 23:52:27 | Re: Concerns about this release |