Re: [HACKERS] fork/exec for backend
От | Bruce Momjian |
---|---|
Тема | Re: [HACKERS] fork/exec for backend |
Дата | |
Msg-id | 199801250021.TAA21698@candle.pha.pa.us обсуждение исходный текст |
Ответ на | Re: [HACKERS] fork/exec for backend (Goran Thyni <goran@bildbasen.se>) |
Ответы |
Re: [HACKERS] fork/exec for backend
|
Список | pgsql-hackers |
> > > On 24 Jan 1998, Goran Thyni wrote: > > > Fork on modern unices (linux and (a think) *BSD) cost > > almost nothing (in time and memory) thanks to COW (copy-on-write). > > Exec in expensive as it breaks COW. > > Not so. Modern Unixs will share executable address space between > processes. So if you fork and exec 10 identical programs, they will share > most address space. > > 1. Code is probably not shared between postmaster and postgres > processes. I think it is shared. postmaster is a symlink to postgres, so by the time it gets to the kernel exec routines, both processes are mapped to the same inode number. > > 2. Some inits may be done once (by postmaster) and not repeated > by every child. Maybe. > > 3. (and most important) > With no exec COW is in action, meaning: > data pages in shared until changed. This would also prevent us from attaching to shared memory because it would already be in the address space. > > COW is the key to how Linux can fork faster than most unices > starts a new thread. :-) > > Again, this only applies to "modern" systems, but FreeBSD definitely has > this behaviour. > > I don't know if *BSD has COW, but if should think so. All modern Unixes have COW. -- Bruce Momjian maillist@candle.pha.pa.us
В списке pgsql-hackers по дате отправления: