Hi: Thanks for Jov's reply. I traced it again, and found they are really for autovacuum. I found that some will call proc_exit() from within AutoVacLauncherMain function, some will call proc_exit() from within AutoVacWorkerMain function.
But I wonder why not using only a few daemon , instead of making those processes be short life. 2013/5/24 Jov <am...@amutu.com> > the process you see may be autovacuum worker process,you can tune the > log_autovacuum_min_duration > to log the autovacuum activities and check if the pids match > http://www.postgresql.org/docs/9.2/static/runtime-config-autovacuum.html > > > 2013/5/24 高健 <luckyjack...@gmail.com> > >> Hello all: >> >> I found that during postgresql running, there are so many processes >> being created and then died. >> I am interested in the reason. >> >> Here is the detail: >> I installed from postgresql-9.2.1.tar.bz2. >> I put some debug code in fd.c 's PathNameOpenFile function: >> >> fprintf(stderr,"+++While Calling PathNameOpenFile pid=%d.....",getpid(); >> fprintf(stderr,"VfdCache Address is: %p \n\n",VfdCache); >> >> When it run, I open two termianal using psql(pid=22109 and pid=22114), >> then I can got information like this: >> [postgres@lex pgsql]$ ./bin/pg_ctl -D ./data start >> server starting >> [postgres@lex pgsql]$ LOG: database system was shut down at 2013-05-24 >> 09:28:59 CST >> LOG: autovacuum launcher started >> +++While Calling PathNameOpenFile pid=22106.....VfdCache Address is: >> 0xbfb3320 >> >> LOG: database system is ready to accept connections >> +++While Calling PathNameOpenFile pid=22109.....VfdCache Address is: >> 0xbfb2de0 >> >> +++While Calling PathNameOpenFile pid=22109.....VfdCache Address is: >> 0xbfb2de0 >> >> +++While Calling PathNameOpenFile pid=22109.....VfdCache Address is: >> 0xbfb2de0 >> >> +++While Calling PathNameOpenFile pid=22109.....VfdCache Address is: >> 0xbfb2de0 >> >> +++While Calling PathNameOpenFile pid=22109.....VfdCache Address is: >> 0xbfb2de0 >> >> +++While Calling PathNameOpenFile pid=22109.....VfdCache Address is: >> 0xbfb2de0 >> >> +++While Calling PathNameOpenFile pid=22109.....VfdCache Address is: >> 0xbfb2de0 >> >> +++While Calling PathNameOpenFile pid=22109.....VfdCache Address is: >> 0xbfb2de0 >> >> +++While Calling PathNameOpenFile pid=22109.....VfdCache Address is: >> 0xbfb2de0 >> >> +++While Calling PathNameOpenFile pid=22109.....VfdCache Address is: >> 0xbfb2de0 >> >> +++While Calling PathNameOpenFile pid=22109.....VfdCache Address is: >> 0xbfb2de0 >> >> +++While Calling PathNameOpenFile pid=22109.....VfdCache Address is: >> 0xbfb2de0 >> >> +++While Calling PathNameOpenFile pid=22109.....VfdCache Address is: >> 0xbfb2de0 >> >> +++While Calling PathNameOpenFile pid=22109.....VfdCache Address is: >> 0xbfb2de0 >> >> +++While Calling PathNameOpenFile pid=22109.....VfdCache Address is: >> 0xbfb2de0 >> >> +++While Calling PathNameOpenFile pid=22114.....VfdCache Address is: >> 0xbfba400 >> >> +++While Calling PathNameOpenFile pid=22114.....VfdCache Address is: >> 0xbfba400 >> >> +++While Calling PathNameOpenFile pid=22114.....VfdCache Address is: >> 0xbfba400 >> >> +++While Calling PathNameOpenFile pid=22114.....VfdCache Address is: >> 0xbfba400 >> >> +++While Calling PathNameOpenFile pid=22120.....VfdCache Address is: >> 0xbfe6700 >> >> +++While Calling PathNameOpenFile pid=22120.....VfdCache Address is: >> 0xbfe6700 >> >> +++While Calling PathNameOpenFile pid=22120.....VfdCache Address is: >> 0xbfe6700 >> >> +++While Calling PathNameOpenFile pid=22127.....VfdCache Address is: >> 0xbfe6700 >> >> +++While Calling PathNameOpenFile pid=22127.....VfdCache Address is: >> 0xbfe6700 >> >> +++While Calling PathNameOpenFile pid=22127.....VfdCache Address is: >> 0xbfe6700 >> >> +++While Calling PathNameOpenFile pid=22134.....VfdCache Address is: >> 0xbfe6700 >> >> +++While Calling PathNameOpenFile pid=22134.....VfdCache Address is: >> 0xbfe6700 >> >> +++While Calling PathNameOpenFile pid=22134.....VfdCache Address is: >> 0xbfe6700 >> >> +++While Calling PathNameOpenFile pid=22142.....VfdCache Address is: >> 0xbfe6700 >> >> +++While Calling PathNameOpenFile pid=22142.....VfdCache Address is: >> 0xbfe6700 >> >> +++While Calling PathNameOpenFile pid=22142.....VfdCache Address is: >> 0xbfe6700 >> >> +++While Calling PathNameOpenFile pid=22149.....VfdCache Address is: >> 0xbfe6700 >> >> +++While Calling PathNameOpenFile pid=22149.....VfdCache Address is: >> 0xbfe6700 >> >> +++While Calling PathNameOpenFile pid=22149.....VfdCache Address is: >> 0xbfe6700 >> >> +++While Calling PathNameOpenFile pid=22156.....VfdCache Address is: >> 0xbfe6700 >> >> +++While Calling PathNameOpenFile pid=22156.....VfdCache Address is: >> 0xbfe6700 >> >> +++While Calling PathNameOpenFile pid=22156.....VfdCache Address is: >> 0xbfe6700 >> >> +++While Calling PathNameOpenFile pid=22165.....VfdCache Address is: >> 0xbfe6700 >> >> +++While Calling PathNameOpenFile pid=22165.....VfdCache Address is: >> 0xbfe6700 >> >> +++While Calling PathNameOpenFile pid=22165.....VfdCache Address is: >> 0xbfe6700 >> >> +++While Calling PathNameOpenFile pid=22171.....VfdCache Address is: >> 0xbfe6700 >> >> +++While Calling PathNameOpenFile pid=22171.....VfdCache Address is: >> 0xbfe6700 >> >> +++While Calling PathNameOpenFile pid=22171.....VfdCache Address is: >> 0xbfe6700 >> >> +++While Calling PathNameOpenFile pid=22178.....VfdCache Address is: >> 0xbfe6700 >> >> +++While Calling PathNameOpenFile pid=22178.....VfdCache Address is: >> 0xbfe6700 >> >> +++While Calling PathNameOpenFile pid=22178.....VfdCache Address is: >> 0xbfe6700 >> >> >> But when I grep process information using ps command, I can't find >> process such like 22120,22127,22134,22142,22149,22156,22178. >> And the output is growing longer and longer... >> >> [root@lex ~]# ps -ef | grep post >> root 4641 4621 0 08:28 pts/3 00:00:00 su - postgres >> postgres 4642 4641 0 08:28 pts/3 00:00:00 -bash >> root 4709 4688 0 08:28 pts/4 00:00:00 su - postgres >> postgres 4710 4709 0 08:28 pts/4 00:00:00 -bash >> root 4772 4751 0 08:29 pts/5 00:00:00 su - postgres >> postgres 4773 4772 0 08:29 pts/5 00:00:00 -bash >> postgres 22101 1 0 09:45 pts/3 00:00:00 >> /usr/local/pgsql/bin/postgres -D ./data >> postgres 22103 22101 0 09:45 ? 00:00:00 postgres: checkpointer >> process >> postgres 22104 22101 0 09:45 ? 00:00:00 postgres: writer process >> >> postgres 22105 22101 0 09:45 ? 00:00:00 postgres: wal writer >> process >> postgres 22106 22101 0 09:45 ? 00:00:00 postgres: autovacuum >> launcher process >> postgres 22107 22101 0 09:45 ? 00:00:00 postgres: stats collector >> process >> postgres 22108 4710 0 09:45 pts/4 00:00:00 ./psql >> postgres 22109 22101 0 09:45 ? 00:00:00 postgres: postgres >> postgres [local] idle >> postgres 22113 4773 0 09:46 pts/5 00:00:00 ./psql >> postgres 22114 22101 0 09:46 ? 00:00:00 postgres: postgres >> postgres [local] idle >> root 22187 6429 0 09:55 pts/6 00:00:00 grep post >> [root@lex ~]# >> >> So I think that some process is created and then quickly died . But would >> somebody can kindly say what are the purpose of those process? >> How about using one worker process and keep it be alive? >> > > > > -- > Jov > blog: http:amutu.com/blog <http://amutu.com/blog> >