Scott the problem is that the memory gets higher and higher each PL/SQL procedure call.
Some “I don’t know what” is not been freed(released) from the memory after execution. There’s any way that I can see what is allocated and released when the PL/SQL procedure is called or finished ? 2009/3/31 Scott Marlowe <scott.marl...@gmail.com> > On Tue, Mar 31, 2009 at 5:44 PM, Anderson Valadares > <anderva...@gmail.com> wrote: > > I have a software developed in Delphi as a Windows Service, but, i don't > > know why, it consumns an unexpected large system memory (1.3g). > > > > The service access PostgresSQL by ODBC driver (psqlodbc_08_03_0400) and > it > > consist simply of a loop calling a procedure PL/PGSQL. How to discover > what > > is causing or why this high memory usage ? What objects are being used on > > this session ? > > > > Software developed in Delphi 7 as a windows service. > > > > PostgresSQL 8.3.6 Database with PostGis extension > > > > Server p52a > > > > S.O.: Red Hat Enterprise Linux AS release 4 (Nahant Update 1) > > > > linux 2.6.9-11.EL #1 SMP ppc64 ppc64 ppc64 GNU/Linux > > > > S.O. information > > > > top - 11:39:15 up 6 days, 19:15, 1 user, load average: 2.15, 2.02, > 1.86 > > Tasks: 127 total, 1 running, 126 sleeping, 0 stopped, 0 zombie > > Cpu(s): 9.5% us, 2.6% sy, 0.0% ni, 71.2% id, 16.3% wa, 0.1% hi, 0.2% > si > > Mem: 4107392k total, 4101520k used, 5872k free, 17708k buffers > > Swap: 2031608k total, 244k used, 2031364k free, 3091708k cached > > > > PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND > > 32662 postgres 16 0 1317m 1.3g 516m D 52.5 32.1 349:57.48 postgres > > 8953 postgres 17 0 548m 482m 479m S 33.5 12.0 2:50.09 postgres > > 1944 postgres 16 0 550m 520m 516m S 7.3 13.0 165:30.47 postgres > > 32659 postgres 15 0 544m 516m 514m S 1.3 12.9 16:42.60 postgres > > 1935 postgres 15 0 543m 514m 513m S 1.0 12.8 15:15.56 postgres > > This doesn't look bad at all. The pgsql instances are using a pretty > reasonable amount of memory for caching (somewhere in the 512Meg > range) and one long running query is using a lot more memory (in the > 600M range) Your machine has 3G of cache out of 4G of ram, and it's > using almost not swap. > > Now, when this is running next time, using psql, try something like: > > select * from pg_stat_activity where procpid=32662; > > or whatever pid is using up a fair chunk of memory to see the query > that's doing it. >