Just FYI,

gettimeofday() is expensive on platforms (like FreeBSD) which actually attempt
to return very precise timestamps.



Adrian

On Tue, Apr 14, 2009, Haiping Zhao wrote:
> Niels,
> 
> I found out why. 1.4.9 has a tv_cache in gettime():
> 
> static int
> gettime(struct event_base *base, struct timeval *tp){
>         if (base->tv_cache.tv_sec) {
>                 *tp = base->tv_cache;
>                 return (0);
>         }
>    ....(omitted)...
> }
> 
> We happened to use timer as our message pump (my original statement about 
> using timer as timeout management wasn't quite right after I read the code) 
> to process some UDP packets. But then, this cached timestamp can be 1 to 3ms 
> out of date in our code. So the whole pumping was slowed down 2x. I confirmed 
> this by dumping all timeout_process()'s timestamps when an event is detected 
> as "timed-out", and all of them were shifted or lagged behind than the ones 
> collected with 1.3c build.
> 
> Anyways, I'll have to re-think our model. At the same time, may I ask why the 
> change? Was that for calling gettimeofday() less number of times to be more 
> efficient? But the code only updates base->tv_cache once per loop, each of 
> which may take several milliseconds to finish. Doesn't that leave huge space 
> for an inaccurate timestamp?
> 
> -Haiping
> 
> 
> On 4/14/09 4:59 PM, "Niels Provos" <pro...@gmail.com> wrote:
> 
> On Tue, Apr 14, 2009 at 3:37 PM, Haiping Zhao <hz...@facebook.com> wrote:
> > We have a piece of code that was using 1.3c, and when I switched it to use
> > 1.4.9-stable, I found it's 2x slower, spending almost all extra time in I/O
> > waiting. This piece of code does simple UDP handling, and we do have timers
> > going on for timeout management.
> 
> I am not aware of anything that would have made libevent slower
> between 1.3 and 1.4.  It should be slightly faster actually.
> 
> What do you mean by I/O waiting?  Your code is blocking on IO?
> 
> Niels.
> 

> _______________________________________________
> Libevent-users mailing list
> Libevent-users@monkey.org
> http://monkeymail.org/mailman/listinfo/libevent-users


-- 
- Xenion - http://www.xenion.com.au/ - VPS Hosting - Commercial Squid Support -
- $25/pm entry-level VPSes w/ capped bandwidth charges available in WA -
_______________________________________________
Libevent-users mailing list
Libevent-users@monkey.org
http://monkeymail.org/mailman/listinfo/libevent-users

Reply via email to