Hi,
Memcached currently use timers in libevent to keep the "current time"
variable up to date (and to run deferred deletes every 5. seconds).
These timers are added to the main-base used by thread 0, so that
thread 0 will get these timer-callbacks. This sounds like a good idea,
but there is one problem with this. Libevent will read out the system
time _every time_ it will look for new IO-requests (in order to notify
underlaying IO subsystem for how long it should wait for IO-requests).
I created a small prototype today that creates a "maintenance-thread"
whose sole purpose is to update the "clock" and run deferred deletes,
and hence remove all of the clock_gettime-calls from libevent.
So I guess my questions is: What is the status of the single-threaded
version? Should my patch support both the singlethreaded version
(meaning that I have to keep the old version), or should I just post a
patch that use a dedicated thread for timers?
Trond