site_archiver@lists.apple.com Delivered-To: darwin-dev@lists.apple.com Dave, kqueue is not select/poll. Regards, John Falling You - exploring the beauty of voice and sound http://www.fallingyou.com _______________________________________________ Do not post admin requests to the list. They will be ignored. Darwin-dev mailing list (Darwin-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/darwin-dev/site_archiver%40lists.appl... To better understand what I mean by that, consider calling kevent() once per FD you allocate and only use kevent() to add to the kqueue. I'm using the EV_SET macro to add to the queue, but my understanding is that it's calling kevent() to do it. Then, as a part of your event loop, only fetch one event with kevent () and process it. This is exactly what i'm doing ... but I don't see how specifying a timespec with 0 makes kevent() return an event for some FD i've never heard of. If I specify NULL, or a timespec with non-0 (tv_sec = 1, for instance), then it works. I just want to understand the API, is all. Also, I expanded my kqueue test to use sockets as well as files, and i'm seeing a couple of interesting things: a.) when it works, my dinky little 1.5ghz 12" PowerBook G4 can process hundreds of thousands of events per second (socket reads is what i'm testing right now), but b.) it seems kinda iffy e.g. if I set ulimit -n to 10010 and run my test with 10000 FDs (sockets), it will almost always make my PowerBook bring up the spinning beach ball for everything, and I can't ctrl-C in terminal windows anymore, can't check mail, can't select any menu item, can't ping it from another machine, etc. After I force restart (by holding down the power button), if I set ulimit -n to 5010 and try my test with 5000 FDs (sockets), it will sometimes work (and give me really good numbers), but sometimes bring up the spinning beachball for everything like 10000 did. This is running OSX 10.4.6, using Apple's gcc4.0.0, with 1.25MB RAM. On my dual 2ghz G5 (still running 10.3.9 for other reasons), it acts much worse -- it locks the whole thing up, and the fans get louder and louder and louder until I force restart it. It very well may be that i'm doing something wrong, but other stuff i've read about kqueues say how much better they are at doing select ()-y type things for large numbers of descriptors e.g. for building very scaleable server applications that can handle thousands / tens of thousands of simultaneous active connections. Like I said, i'm just trying to understand the API. This email sent to site_archiver@lists.apple.com
participants (1)
-
jmzorko@mac.com