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

Reply via email to