Buggy Darwin?

Marc Lehmann schmorp at schmorp.de
Sun Jun 10 11:05:25 CEST 2012

On Sat, Jun 09, 2012 at 03:30:17PM -0700, Godfrey van der Linden <gvdl at mac.com> wrote:
> Just tripped over your library today and I like what your doing; I was stunned by how slow libevent was, 6 times less throughput than my simple hand rolled pthread condition based loop, wtf. For multi thread queueing.

I doubt libev will be a lot faster, certainly now on os x.

> > Libev tries to work around this by not using kqueue by default on this rotten platform, but of course you can still ask for it when creating a loop - embedding a socket-only kqueue loop into a select-based one is probably going to work well.
> Two things, I used to be a kernel developer at Apple and don't like to see my kernel do this sort of thing badly. Have you raised bugs?

Many people have raised bugs with apple. I am surprised you don't know that
apple handles bugs by makign them private and, in the next version, break it
even more?

The kqueue problems are known to apple for many years, all that has happened
is that they additionally broke poll in some recent os x release (by making
it use kqueue).

Given that select is also broken because it doesn't work with n > 1023 by
default, I doubt apple gives a shit :)

> Secondly, I'm working on some open source code and I'd like to integrate
> kqueues into its implementation on the mac,

Just to make it clear - apple fights and actively tries to hurt free
software. I am not intersted in supporting apple in any way in this, so a
long time ago I decided not to invest more time into apple than necessary.

> I'd like to track directory modifications. Do you remember what the
> problems were that you were having? I haven't found any problems with
> EVFILT_VNODE yet and I know EVFILT_MACH is OK and you say the sockets
> are OK, how about the signals?

Last I looked, it requires you to keep fd's open to the objects you
watch, that is, kqueue doesn't watch "paths", but "vnodes", while libev
specifially watches a path (thats the onyl thign that can be done portably).

That's a dsign issue in kqueue, not a bug.

                The choice of a       Deliantra, the free code+content MORPG
      -----==-     _GNU_              http://www.deliantra.net
      ----==-- _       generation
      ---==---(_)__  __ ____  __      Marc Lehmann
      --==---/ / _ \/ // /\ \/ /      schmorp at schmorp.de
      -=====/_/_//_/\_,_/ /_/\_\

More information about the libev mailing list