[ https://issues.apache.org/jira/browse/OAK-3330?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14727206#comment-14727206 ]
Michael Dürig commented on OAK-3330: ------------------------------------ Caching all segments of the current tar writer improves the situation quite a bit. With below configuration of {{SegmentCompactionIT}} I was able to write 2.5 GB of content vs. 5.8 GB of content with the cache. In the former case the {{FileStore}} monitor was fully contented while in the latter no lock was contended more then 4%. {code} private volatile int lockWaitTime = 60; private volatile int maxReaders = 10; private volatile int maxWriters = 16; private volatile long maxStoreSize = 120000000000L; private volatile int maxBlobSize = 10000; private volatile int maxStringSize = 10000; private volatile int maxReferences = 10; private volatile int maxWriteOps = 10000; private volatile int maxNodeCount = 1000; private volatile int maxPropertyCount = 1000; private volatile int nodeRemoveRatio = 10; private volatile int propertyRemoveRatio = 10; private volatile int nodeAddRatio = 40; private volatile int addStringRatio = 20; private volatile int addBinaryRatio = 0; private volatile int compactionInterval = 120; {code} > FileStore lock contention with concurrent writers > ------------------------------------------------- > > Key: OAK-3330 > URL: https://issues.apache.org/jira/browse/OAK-3330 > Project: Jackrabbit Oak > Issue Type: Improvement > Components: segmentmk > Reporter: Michael Dürig > Assignee: Michael Dürig > Labels: compaction > > Concurrently writing to the file store can lead to a sever lock contention in > {{FileStore#readSegment}}. That method searches the current {{TarWriter}} > instance for the segment once it could not be found in any of the > {{TarReader}} instances. This is the point where synchronizes on the > {{FileStore}} instance, which leads to the contention. > The effect is only observable once the segment cache becomes full and reads > actually need to go to the file store. Thus a possible improvement could be > to pin segments from the current tar writer to the cache. Alternatively we > could try to ease locking by employing read/write locks where possible. -- This message was sent by Atlassian JIRA (v6.3.4#6332)