[gambit-list] Edge triggered I/O with libevent
Adam Langley
alangley at gmail.com
Fri Aug 19 09:54:22 EDT 2005
Gambit uses the select call on POSIX systems to multiplex IO
operations. This is fine for small numbers of file descriptors, but
falls apart quickly with large numbers[1].
libevent[2] is a wrapper library around a number of modern IO
multiplexing systems (epoll on Linux, kqueue on the BSDs as well as
poll and select).
Attached is a patch which converts Gambit to using edge triggered I/O
with epoll and libevent. This also requires a patch (attached) of
libevent since the standard distribution doesn't include edge
triggering support and the upstream appears to be on holiday.
(epoll is required because I don't have a BSD box on which to develop
edge triggering support for kqueue)
This patch (for Gambit) preprocesses away to nothing unless
--enable-libevent is passed to the configure script. (Note that, since
this patches the configure.ac script, you'll need to run autoconf to
regenerate).
I hope I've not broken anything, but at this stage I've only tested
that the console and tcp ports work.
This patch (in the future) should also allow people, who write
programs which use socket calls directly, to integrate into the main
event loop at some point.
Testing is more than welcome and, if you find a form of IO which is
broken, please email me.
[1] http://monkey.org/~provos/libevent/libevent-benchmark2.jpg
[2] http://monkey.org/~provos/libevent/
--
Adam Langley agl at imperialviolet.org
http://www.imperialviolet.org (+44) (0)7906 332512
PGP: 9113 256A CC0F 71A6 4C84 5087 CDA5 52DF 2CB6 3D60
-------------- next part --------------
A non-text attachment was scrubbed...
Name: libevent-1.1a-edge.agl.patch
Type: application/octet-stream
Size: 6833 bytes
Desc: not available
URL: <http://mailman.iro.umontreal.ca/pipermail/gambit-list/attachments/20050819/41729ce0/attachment.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: gambit-4b14-libevent-1-agl.patch
Type: application/octet-stream
Size: 30133 bytes
Desc: not available
URL: <http://mailman.iro.umontreal.ca/pipermail/gambit-list/attachments/20050819/41729ce0/attachment-0001.obj>
More information about the Gambit-list
mailing list