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-----