> Hi,
> 
> When administering my mailing lists, my attention was drawn to this pull 
> request: https://github.com/openjdk/jdk/pull/28575, which tries to tackle 
> this scaling problem. Although it was dismissed, I remembered that I was 
> dealing with a similar problem in the past, so I looked closely...
> 
> Here's an alternative take at the problem. It reuses a maintained public 
> component of JDK, the LongAdder, so in this respect, it does not add 
> complexity and maintainance burden. It also does not change the internal API 
> of the MemorySessionImpl. The size of the patch is also smaller.
> 
> For experimenting and benchmarking, I created a separate impmenetation of 
> just the acquire/release/close logic with existing "simple" and this new 
> "striped" implementations here:
> 
> https://github.com/plevart/acquire-release-close
> 
> Running it on my 8 core (16 threads) Linux PC, it gives promising results 
> without regression for single-threaded use:
> 
> 
> ** Simple, measure run #1...
> concurrency: 1, nanos: 39909697 (x 1.0)
> concurrency: 2, nanos: 164735444 (x 4.127704702944751)
> concurrency: 4, nanos: 394283724 (x 9.87939657873123)
> concurrency: 8, nanos: 672278915 (x 16.84500172978011)
> concurrency: 16, nanos: 2169282886 (x 54.3547821473062)
> ** Simple, measure run #2...
> concurrency: 1, nanos: 40318379 (x 1.0)
> concurrency: 2, nanos: 163438657 (x 4.053701092496799)
> concurrency: 4, nanos: 399382210 (x 9.905710991009832)
> concurrency: 8, nanos: 694862623 (x 17.23438888750959)
> concurrency: 16, nanos: 2182386494 (x 54.12882531810121)
> ** Simple, measure run #3...
> concurrency: 1, nanos: 39871197 (x 1.0)
> concurrency: 2, nanos: 168843686 (x 4.234728292707139)
> concurrency: 4, nanos: 375489497 (x 9.417562683156966)
> concurrency: 8, nanos: 675885694 (x 16.951728186138983)
> concurrency: 16, nanos: 2083500812 (x 52.255787856080666)
> ** end.
> 
> ** Striped, measure run #1...
> concurrency: 1, nanos: 36698350 (x 1.0)
> concurrency: 2, nanos: 47349695 (x 1.290240433152989)
> concurrency: 4, nanos: 58622304 (x 1.5974098018030782)
> concurrency: 8, nanos: 60548173 (x 1.6498881557345222)
> concurrency: 16, nanos: 70607406 (x 1.9239940215295783)
> ** Striped, measure run #2...
> concurrency: 1, nanos: 37217044 (x 1.0)
> concurrency: 2, nanos: 38610020 (x 1.0374284427317764)
> concurrency: 4, nanos: 39166893 (x 1.0523912914738742)
> concurrency: 8, nanos: 51778829 (x 1.3912665659314587)
> concurrency: 16, nanos: 70277394 (x 1.8883120862581133)
> ** Striped, measure run #3...
> concurrency: 1, nanos: 37589735 (x 1.0)
> concurrency: 2, nanos: 38748261 (x 1.03...

Peter Levart has updated the pull request incrementally with one additional 
commit since the last revision:

  8371260: Fix wrong VarHandle usage, remove unneeded fullFence from justClose()

-------------

Changes:
  - all: https://git.openjdk.org/jdk/pull/29866/files
  - new: https://git.openjdk.org/jdk/pull/29866/files/bced1b62..1a3b0cf7

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=29866&range=02
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=29866&range=01-02

  Stats: 5 lines in 1 file changed: 0 ins; 1 del; 4 mod
  Patch: https://git.openjdk.org/jdk/pull/29866.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/29866/head:pull/29866

PR: https://git.openjdk.org/jdk/pull/29866

Reply via email to