GitHub user cliffjansen opened a pull request:
https://github.com/apache/qpid-proton/pull/145
Potential chained epoll impl for PROTON-1842
Removes temp fix, adds chained/secondary epollfd_2.
Still has failure in helgrind threaderciser racecheck. Still unsure if a
problem or false positive.
Previous temp fix also has the same threaderciser error, so at least not a
regression.
I have not been able to detect any change in performance with my various
epoll proactor load tests.
Instrumented runs show the secondary/chained arming occurs about 0.1% in
proton ctest. It is closer to 0.001% in dispatch router runs under heavy load,
but that may be less indicative of the overall frequency.
Chaining is unlikely to occur if socket output does not fill the kernel
buffer (!EWOULDBLOCK), or if a write event mask is desired as a result of input
(say a flow event) and EPOLLIN is also necessary with the EPOLLOUT.
Chaining *is* likely to occur if the socket is quiet (i.e. no recent output
and waiting on EPOLLIN), and the pconnection gets a pn_connection_wake to do
enough output to fill the kernel output buffer.
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/cliffjansen/qpid-proton p1842_1
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/qpid-proton/pull/145.patch
To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:
This closes #145
----
commit 1f43f37149e56180424ba0434a98d812ed7ebfb7
Author: Cliff Jansen <cjansen@...>
Date: 2018-05-23T21:45:56Z
PROTON-1842: revert 79d9019 temporary mitigation for follow-on long term fix
commit ca5c1b55f58aecab5be3c19e14de1d799f92307d
Author: Cliff Jansen <cjansen@...>
Date: 2018-05-24T15:46:37Z
PROTON-1842: epoll proactor - add secondary/chained epollfd to maintain 1-1
count between epoll registrations and eventual callbacks on pconnections
----
---
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]