Thread: Many instances of postgres.exe
Hi
While looking at an error message for iexplore.exe, I noticed, on Task Manager, that there are 5 or more instances of postgres.exe running. Each instance is consuming between 7 to 10 megs of resources, for a total of almost 50 megs.
Is this normal behavour?
If so, could someone enlighten me as to the purpose?
Bob
2009/10/15 Bob Pawley <rjpawley@shaw.ca>: > Hi > > While looking at an error message for iexplore.exe, I noticed, on Task > Manager, that there are 5 or more instances of postgres.exe running. Each > instance is consuming between 7 to 10 megs of resources, for a total of > almost 50 megs. > > Is this normal behavour? yes > If so, could someone enlighten me as to the purpose? Its good that it uses more than one process, because each task then is separated from other tasks by the operating system's memory management. I.e. if one crashes, the others stay up. This is good design as opposed to hugely multi-threaded apps where one little bug can bring everything down. The memory used is configurable, you can set up the amount of caching, but actually I am not sure exactly how much memory is used for what purpose. However, I set up my server with larger cache than standard. It has a load of memory though... 50Mb is very little memory considering you are talking about a professional database system.... > Bob -- Brian Modra Land line: +27 23 5411 462 Mobile: +27 79 69 77 082 5 Jan Louw Str, Prince Albert, 6930 Postal: P.O. Box 2, Prince Albert 6930 South Africa http://www.zwartberg.com/
Bob Pawley wrote: > Hi > > While looking at an error message for iexplore.exe, I noticed, on Task > Manager, that there are 5 or more instances of postgres.exe running. > Each instance is consuming between 7 to 10 megs of resources, for a > total of almost 50 megs. > > Is this normal behavour? > > If so, could someone enlighten me as to the purpose? A) much of that memory is shared by them. task manager doesn't account for shared memory B) on a Linux or Unix system, we might see something like.... $ ps uww -U postgres USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND postgres 3279 0.0 0.5 152036 6000 ? S Sep29 2:59 /usr/bin/postmaster -p 5432 -D /var/lib/pgsql/data postgres 3587 0.0 0.0 13056 704 ? Ss Sep29 0:04 postgres: logger process postgres 3630 0.0 10.4 152192 108508 ? Ss Sep29 0:20 postgres: writer process postgres 3631 0.0 0.0 152192 980 ? Ss Sep29 0:01 postgres: wal writer process postgres 3632 0.0 0.2 153348 2072 ? Ss Sep29 13:08 postgres: autovacuum launcher process postgres 3633 0.1 0.1 14196 1500 ? Ss Sep29 36:59 postgres: stats collector process postgres 27452 0.0 0.1 152740 2028 ? Ss 09:04 0:00 postgres: squeals squeals [local] idle the first one is the postmaster process, then there is the 'logger', the 'writer', the 'write ahead log writer', the 'autovacuum launcher' and hte 'stats collector'. Finally, the last process 27452 is a user connection to database squeals by local user squeals, which is idle. the first 6 of these will always be running, then one additional process for each active database connection. While the VIRTUAL size (VSZ) of most of them is 150MB 'each' on my system, you'll note the RESIDENT SET SIZE (RSS) is 6M, 700k, 100M, 1M, 2M, 1,5M, 2M. This is much more representive of the actual memory usage.
Bob,
--
GHUM Harald Massa
persuadere et programmare
Harald Armin Massa
Spielberger Straße 49
70435 Stuttgart
0173/9409607
no fx, no carrier pigeon
-
%s is too gigantic of an industry to bend to the whims of reality
While looking at an error message for iexplore.exe, I noticed, on Task Manager, that there are 5 or more instances of postgres.exe running. Each instance is consuming between 7 to 10 megs of resources, for a total of almost 50 megs.Is this normal behavour?
5 instances is the default when nothing has connected.
Reason: statwriter, autovacuum, ... are all separate processes. For every additional connection there is another process, also giving a postgres.exe
What most likely is "wrong" are those "50 megs", as I guess you are looking at the default task manager.
Within those 50MB the PostgreSQL shared memory is counted (number of processes) time. That is: If there are 8MB of shared memory configured, you will see them as 40MB with 5 running processes.
Look within "View", "Select other columns" to find other memory columns.
best wishes,
Harald
--
GHUM Harald Massa
persuadere et programmare
Harald Armin Massa
Spielberger Straße 49
70435 Stuttgart
0173/9409607
no fx, no carrier pigeon
-
%s is too gigantic of an industry to bend to the whims of reality
On Thu, Oct 15, 2009 at 12:07 PM, Brian Modra <brian@zwartberg.com> wrote:
It's not actually using up that much memory. Windows (and linux for that matter) think Postgres is using up that much per process, but in actuality, most of that is shared memory between them. So if you have 5 @ 10 MB a piece, you may only have 12 - 20 MB in use.
+1
Every time you connect to postgres, your connection gets a new postgres.exe (plus there are a few system ones). So 5 connections = 5 postgres.exe + a few (3 or 4) system processes. It's normal, it allows the OS to schedule who does what work. If you have multiple processors, you get nice parallelism without postgres having to be threaded internally.
--Scott
2009/10/15 Bob Pawley <rjpawley@shaw.ca>:> Hi
>
> While looking at an error message for iexplore.exe, I noticed, on Task
> Manager, that there are 5 or more instances of postgres.exe running. Each
> instance is consuming between 7 to 10 megs of resources, for a total of
> almost 50 megs.
It's not actually using up that much memory. Windows (and linux for that matter) think Postgres is using up that much per process, but in actuality, most of that is shared memory between them. So if you have 5 @ 10 MB a piece, you may only have 12 - 20 MB in use.
>yes
> Is this normal behavour?
+1
> If so, could someone enlighten me as to the purpose?
Every time you connect to postgres, your connection gets a new postgres.exe (plus there are a few system ones). So 5 connections = 5 postgres.exe + a few (3 or 4) system processes. It's normal, it allows the OS to schedule who does what work. If you have multiple processors, you get nice parallelism without postgres having to be threaded internally.
--Scott