> 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. ------------- Changes: - all: https://git.openjdk.org/loom/pull/223/files - new: https://git.openjdk.org/loom/pull/223/files/28755d93..7e36c5fe Webrevs: - full: https://webrevs.openjdk.org/?repo=loom&pr=223&range=03 - incr: https://webrevs.openjdk.org/?repo=loom&pr=223&range=02-03 Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod Patch: https://git.openjdk.org/loom/pull/223.diff Fetch: git fetch https://git.openjdk.org/loom.git pull/223/head:pull/223 PR: https://git.openjdk.org/loom/pull/223
