On Thu, 26 Mar 2026 16:14:32 GMT, Francesco Nigro <[email protected]> wrote:
>> Ported from 7ac9ca128885c5dd561e6fbd6bbeaddb86d6264c to the latest upstream >> fibers branch. Adapted to the current API which renamed >> implRegister/implDeregister to implStartPoll/implStopPoll and added >> Mode/EventFD/Cleaner/PollerGroup architecture. > > Francesco Nigro has updated the pull request incrementally with one > additional commit since the last revision: > > Disable edge-triggered epoll for POLLER_PER_CARRIER mode > > Per-carrier sub-pollers have carrier affinity, which creates a > scheduling conflict with edge-triggered registrations: the sub-poller > competes with user VTs for the same carrier. By the time the sub-poller > runs, user VTs have often already consumed data via tryRead(), causing > the sub-poller to find a POLLED sentinel and waste a full park/unpark > cycle on the master (each costing an epoll_ctl). Under load this > causes a 2x throughput regression. > > VTHREAD_POLLERS mode is unaffected because its sub-pollers have no > carrier affinity and can run on any available carrier, processing > events before user VTs consume the data. This looks like a 1% improvement in ops/sec. I think we'll need to get a more real-world benchmark. Do you have something other than the micro. Do you agree with the proposal to put this in its own branch so that we can iterate on it? ------------- PR Comment: https://git.openjdk.org/loom/pull/223#issuecomment-4136918576
