[
https://issues.apache.org/jira/browse/IGNITE-14341?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17539576#comment-17539576
]
Ignite TC Bot commented on IGNITE-14341:
----------------------------------------
{panel:title=Branch: [pull/9992/head] Base: [master] : No blockers
found!|borderStyle=dashed|borderColor=#ccc|titleBGColor=#D6F7C1}{panel}
{panel:title=Branch: [pull/9992/head] Base: [master] : New Tests
(105)|borderStyle=dashed|borderColor=#ccc|titleBGColor=#D6F7C1}
{color:#00008b}PDS 5{color} [[tests
42|https://ci.ignite.apache.org/viewLog.html?buildId=6577021]]
* {color:#013220}IgnitePdsTestSuite5:
BPlusTreePageMemoryImplTest.testPutRemove_1_20_mm2_1 - PASSED{color}
* {color:#013220}IgnitePdsTestSuite5:
BPlusTreePageMemoryImplTest.testPutRemove_1_20_mp2_1 - PASSED{color}
* {color:#013220}IgnitePdsTestSuite5:
BPlusTreePageMemoryImplTest.testMassiveRemove2_true_range - PASSED{color}
* {color:#013220}IgnitePdsTestSuite5:
BPlusTreePageMemoryImplTest.testMassiveRemove3_true_range - PASSED{color}
* {color:#013220}IgnitePdsTestSuite5:
BPlusTreePageMemoryImplTest.testIterateConcurrentPutRemoveRange_10 -
PASSED{color}
* {color:#013220}IgnitePdsTestSuite5:
BPlusTreePageMemoryImplTest.testPutRemove_2_40_pp2_1 - PASSED{color}
* {color:#013220}IgnitePdsTestSuite5:
BPlusTreePageMemoryImplTest.testIterateConcurrentPutRemove_10 - PASSED{color}
* {color:#013220}IgnitePdsTestSuite5:
BPlusTreePageMemoryImplTest.testBasicBatchRemove - PASSED{color}
* {color:#013220}IgnitePdsTestSuite5:
BPlusTreePageMemoryImplTest.testMassiveRemove1_true_range - PASSED{color}
* {color:#013220}IgnitePdsTestSuite5:
BPlusTreePageMemoryImplTest.testPutRemove_2_40_mp2_1 - PASSED{color}
* {color:#013220}IgnitePdsTestSuite5:
BPlusTreePageMemoryImplTest.testPutRemove_2_40_pm2_1 - PASSED{color}
... and 31 new tests
{color:#00008b}Basic 4{color} [[tests
63|https://ci.ignite.apache.org/viewLog.html?buildId=6577015]]
* {color:#013220}IgniteBasicTestSuite2:
BPlusTreeSelfTest.testMassiveRemove2_true_range - PASSED{color}
* {color:#013220}IgniteBasicTestSuite2:
BPlusTreeSelfTest.testMassiveRemove3_true_range - PASSED{color}
* {color:#013220}IgniteBasicTestSuite2:
BPlusTreeSelfTest.testIterateConcurrentPutRemoveRange_10 - PASSED{color}
* {color:#013220}IgniteBasicTestSuite2:
BPlusTreeSelfTest.testPutRemove_2_40_pp2_1 - PASSED{color}
* {color:#013220}IgniteBasicTestSuite2:
BPlusTreeSelfTest.testIterateConcurrentPutRemove_10 - PASSED{color}
* {color:#013220}IgniteBasicTestSuite2: BPlusTreeSelfTest.testBasicBatchRemove
- PASSED{color}
* {color:#013220}IgniteBasicTestSuite2:
BPlusTreeSelfTest.testMassiveRemove1_true_range - PASSED{color}
* {color:#013220}IgniteBasicTestSuite2:
BPlusTreeSelfTest.testPutRemove_2_40_mp2_1 - PASSED{color}
* {color:#013220}IgniteBasicTestSuite2:
BPlusTreeSelfTest.testPutRemove_2_40_pm2_1 - PASSED{color}
* {color:#013220}IgniteBasicTestSuite2:
BPlusTreeSelfTest.testPutRemove_2_40_mm2_1 - PASSED{color}
* {color:#013220}IgniteBasicTestSuite2:
BPlusTreeFakeReuseSelfTest.testPutRemove_2_40_mm2_1 - PASSED{color}
... and 52 new tests
{panel}
[TeamCity *--> Run :: All*
Results|https://ci.ignite.apache.org/viewLog.html?buildId=6577034&buildTypeId=IgniteTests24Java8_RunAll]
> Reduce contention in the PendingEntriesTree when cleaning up expired entries.
> -----------------------------------------------------------------------------
>
> Key: IGNITE-14341
> URL: https://issues.apache.org/jira/browse/IGNITE-14341
> Project: Ignite
> Issue Type: Improvement
> Reporter: Aleksey Plekhanov
> Assignee: Pavel Pereslegin
> Priority: Major
> Labels: ise
> Attachments: JmhCacheExpireBenchmark.java
>
> Time Spent: 20m
> Remaining Estimate: 0h
>
> Currently, there is a significant performance drop when expired entries
> concurrently evicted by threads that perform some actions with cache (see
> attached reproducer):
> {noformat}
> Benchmark Mode Cnt Score Error
> Units
> JmhCacheExpireBenchmark.putWithExpire thrpt 3 100,132 ± 21,025
> ops/ms
> JmhCacheExpireBenchmark.putWithoutExpire thrpt 3 2133,122 ± 559,694
> ops/ms{noformat}
> Root cause: pending entries tree (offheap BPlusTree) is used to track expired
> entries, after each cache operation (and by timeout thread) there is an
> attempt to evict some amount of expired entries. these entries looked up from
> the start of the pending entries tree and there is a contention on the first
> leaf page of that tree.
> All threads waiting for the same page lock:
> {noformat}
> at
> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
> at
> org.apache.ignite.internal.util.OffheapReadWriteLock.waitAcquireWriteLock(OffheapReadWriteLock.java:503)
> at
> org.apache.ignite.internal.util.OffheapReadWriteLock.writeLock(OffheapReadWriteLock.java:244)
> at
> org.apache.ignite.internal.pagemem.impl.PageMemoryNoStoreImpl.writeLock(PageMemoryNoStoreImpl.java:528)
> at
> org.apache.ignite.internal.processors.cache.persistence.tree.util.PageHandler.writeLock(PageHandler.java:422)
> at
> org.apache.ignite.internal.processors.cache.persistence.tree.util.PageHandler.writePage(PageHandler.java:350)
> at
> org.apache.ignite.internal.processors.cache.persistence.DataStructure.write(DataStructure.java:325)
> at
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.access$13200(BPlusTree.java:100)
> at
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$Remove.doRemoveFromLeaf(BPlusTree.java:4588)
> at
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$Remove.removeFromLeaf(BPlusTree.java:4567)
> at
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$Remove.tryRemoveFromLeaf(BPlusTree.java:5196)
> at
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$Remove.access$6800(BPlusTree.java:4209)
> at
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.removeDown(BPlusTree.java:2189)
> at
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.removeDown(BPlusTree.java:2165)
> at
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.removeDown(BPlusTree.java:2165)
> at
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.doRemove(BPlusTree.java:2076)
> at
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.removex(BPlusTree.java:1905)
> at
> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl.expireInternal(IgniteCacheOffheapManagerImpl.java:1426)
> at
> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl.expire(IgniteCacheOffheapManagerImpl.java:1375)
> at
> org.apache.ignite.internal.processors.cache.GridCacheTtlManager.expire(GridCacheTtlManager.java:246)
> at
> org.apache.ignite.internal.processors.cache.GridCacheUtils.unwindEvicts(GridCacheUtils.java:882){noformat}
--
This message was sent by Atlassian Jira
(v8.20.7#820007)