openonload-20101111 Release Notes ================================= These release notes describe the major new features, and known limitations and bugs. ---------------------------------------- TX latency improvement ---------------------- This release includes an improvement to the TX path that takes 0.5us off the TX latency. To enable this feature, set the following option: export EF_TX_PUSH=1 For some applications there can be a small penalty in terms of maximum message rate. This improvement is enabled by default when using the ef_vi layer directly. Pass flag EF_VI_TX_PUSH_DISABLE to ef_vi_alloc() to disable. ---------------------------------------- Epoll ----- Latest: This release fixes several bugs in the epoll implementation relative to the previous (20100923) release. Edge-triggered epoll now works, and the behaviour for TCP sockets more closely matches the Linux kernel. poll() is still likely to give superior performance in many cases, because the epoll interface requires locking in order to protect its internal state, which imposes extra overhead. Epoll acceleration can be disabled at runtime with EF_UL_EPOLL=0. In that case epoll continues to work, but is handled in the kernel, and the interrupt avoidance features of Onload are reduced. This is likely to be a win for apps that don't require spinning and have many sockets in the epoll set. We plan to do further work on epoll in the near future to address the limitations outlined below. Known limitations: - Files are removed from the epoll set when the file descriptor is closed, rather than when the last reference to the file goes away. - With EPOLLET and EPOLLONESHOT, the Onload implementation can return more than one event if mixing accelerated and non-accelerated paths on a socket. - Scalability when there are large numbers of sockets is relatively poor. - Deadlock is possible if a process fork()s concurrently with invoking epoll calls.