[
https://issues.apache.org/jira/browse/DERBY-1704?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12472717
]
Anders Morken commented on DERBY-1704:
--------------------------------------
In slightly related work, we've recently done a little testing with a
single-record select load on a trunk patched with DERBY-2107 as well as a port
of the patches to split the hash tables in the lock subsystem that you included
here.
With a separate table and index for each thread (to remove latch contention and
lock waits from the equation) we got an overall throughput increase of about
16% compared to a "single table for all threads" run (given a cache large
enough to maintain the database in-memory), and found that
org.apache.derby.impl.services.cache.Clock.find()/release() caused about 5
times more contention than the synchronization in LockSet.lockObject() and
LockSet.unlock(). That might be an indicator of where to apply the next push -
and validates the "split hashtable" approach for this workload. =)
For our part, we're proceeding to hack at latching. =)
> Allow more concurrency in the lock manager
> ------------------------------------------
>
> Key: DERBY-1704
> URL: https://issues.apache.org/jira/browse/DERBY-1704
> Project: Derby
> Issue Type: Improvement
> Components: Performance, Services
> Affects Versions: 10.2.1.6
> Reporter: Knut Anders Hatlen
> Assigned To: Knut Anders Hatlen
> Priority: Minor
> Attachments: 1cpu.png, 2cpu.png, 8cpu.png, cleanup1.diff,
> cleanup1.stat, cleanup1.v2.diff, cleanup2.diff, cleanup3.diff, cleanup3.stat,
> split-hashtables.diff, split-hashtables.stat
>
>
> I have seen indications of severe monitor contention in SinglePool
> (the current lock manager) when multiple threads access a Derby
> database concurrently. When a thread wants to lock an object, it needs
> to obtain the monitor for both SinglePool and LockSet (both of them
> are global synchronization points). This leads to poor scalability.
> We should investigate how to allow more concurrency in the lock
> manager, and either extend SinglePool or implement a new manager.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.