Hi,
It is well known that preforking is a good pratice if you want to
achieve a higher performance.
When I was asked about it I readily answered: "of course it does".
For
my surprise later, i doesn't.
With fork latencies in the range of 500 to 1500 microseconds (on
Pentium
900 MHz-class hardware!) on most modern kernels[1] I wonder whether
this
"good practice" isn't on the verge of voodoo ;-)
OK, it measures the fork instruction. But fork is using a copy-on-
write mechanism ... It means that *none* of the parent's memory pages
are copied. Each page is simply *shared* by *all* the child /until/ a
modification is made to it.Therefore this test obviously does not
take into account time taken when modifying data. And I strongly
suspect that dovecot is not only doing read-only access to memory
when running. :-/
P.S. : I'm not saying though it is mandatory to have such a mechanism
in dovecot ;)
Regards,
Sebastien
(Of course, in a http server, where you might expect thousands of
connects per second, this is another story -- which is mitigated by
HTTP
1.1, when properly streaming several requests per connection).
- ----------------
[1] <http://bulk.fefe.de/scalability/>, search "The fork benchmark"
Regards
- -- tomás
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
iD8DBQFIpR1XBcgs9XrR2kYRAqPdAJ0dbp+fUW0MpWdNvXa3SUvXP3v3eQCcCsTS
hFbhMpoG+OjI4i+za6xNn+4=
=SRgx
-----END PGP SIGNATURE-----