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


Reply via email to