Leif Jackson wrote:
Ok, so you are using thread pools to implement persistent connections.
I would still like to hear more details about the "60% speedup" of the
threaded pop3 daemon vs the non-threaded. Exactly what was 60% faster?
I still think that the Multi-Process Model can be just as effective as a
threaded model with the benefit of simplified code.
Yeah, the overhead of fork and not having to have shared memory segments
is where i see the speedup. I belive the rest of the speedup comes from
chaning out Glist and some other things. But I have some neat things up my
sleave..etc. I accualy think I just found a faster mime parser that is
GPL'ed than GMime. it is stable and well tested as well as thread-safe
which GMime may or maynot be acording to thier docs...etc. I will see what
I feel like when I get to that point.. :) The other library is called EPS:
http://www.inter7.com/index.php?page=eps
I guess the mime stuff is a RFC...etc.
Interesting, I look forward to hearing about this new parser. I'm sure
there is room for improvement in our parsing routines.
While the overhead of creating a new thread is less than the overhead of
calling fork, I still don't think this will buy us much since the fork
call typically doesn't account for a significant percentage of the work
done after connection, and even if it did, preforking can handle a lot
of this. Again there is a distinction between the workload a light http
server that doesn't to much thinking vs. an IMAP server that does a lot
of work during the average connection so as to make the fork overhead
negligible.
As for the overhead of shared memory segments, I claim no expertiece
here, but I'm surprised to hear that this is a performance bottleneck.
Are you sure?
Yeah I know not thinking that at all, I am doing it for someone else
weather or not the dbmail developers decied to use any or all of it. So it
works out for all of us :) You can thank my customer more they are the
ones paying me to fiddle with it :P
Well I would think I speak for the whole community when I say that we
would like to benefit from you work :-). One general comment which I
think was alluded to earlier in this thread. If you want to get some of
this applied, I think it best to separate out different parts of the
patch. It may not make sense for you right now if you are trying to
throw together a proof of concept but in the long run all the GMime
changes etc, should probably be made separate from the threading changes.