Today Simon Marlow merged Bryan O'Sullivan and my I/O manager patches into the main GHC tree. All the tests pass, and it’s performing well.
The new I/O manager is primarily useful in high-performance server applications, where the server maintains many open connections simultaneously and only a small number of those connections are active at any given time. This is the common case for most web applications. As a bonus, timeouts are also handled more efficiently: you can have many more threads calling e.g. threadDelay simultaneously than before.
You don’t need to do change any code to see benefit from the new I/O manager: any code that uses forkIO and runs on a system that supports epoll or kqueue should scale better in terms of the number of open file descriptors.
The limit on number of open file descriptors is also gone: you can now have more than 1024 open file descriptors.
If you find any bugs, please use the GHC bug tracker to report them to me, “tibbe”.
Awesome! Very exciting!
ReplyDeleteCongratulations - great news!
ReplyDeleteVery nice, Farsan
ReplyDelete