favor kgio_wait_readable for single FD over select
commitea730f93b20ef582128f7c664f7b57953f855a09
authorEric Wong <e@80x24.org>
Thu, 7 May 2015 20:24:18 +0000 (7 20:24 +0000)
committerEric Wong <e@80x24.org>
Thu, 7 May 2015 20:26:44 +0000 (7 20:26 +0000)
tree822ad16dcf6543ab4b619199dbddd1cab83fbdd9
parentf9d5a1961ab818776546186dbc99e10ae4c527dd
favor kgio_wait_readable for single FD over select

kgio_wait_readable is superior for single FDs in that it may use the
ppoll syscall on Linux via Ruby, making it immune to the slowdown
high FDs with select() and the array allocations enforced by the
Ruby wrapper interface.

Note: IO#wait in the io/wait stdlib has the same effect, but as of
2.2 still needlessly checks the FIONREAD ioctl.  So avoid needing to
force a new require on users which also incur shared object loading
costs.  The longer term plan is to rely entirely on Ruby IO
primitives entirely and drop kgio, but that won't happen until we
can depend on Ruby 2.3 for exception-free accept_nonblock
(which will be released December 2015).
lib/unicorn/http_server.rb