> 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

Reply via email to