You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hbase.apache.org by "Matteo Bertozzi (JIRA)" <ji...@apache.org> on 2015/06/15 18:45:00 UTC

[jira] [Created] (HBASE-13903) Speedup IdLock

Matteo Bertozzi created HBASE-13903:
---------------------------------------

             Summary: Speedup IdLock
                 Key: HBASE-13903
                 URL: https://issues.apache.org/jira/browse/HBASE-13903
             Project: HBase
          Issue Type: Improvement
          Components: regionserver
    Affects Versions: 0.98.13, 1.1.0, 1.0.1, 2.0.0
            Reporter: Matteo Bertozzi
            Assignee: Matteo Bertozzi
            Priority: Minor
             Fix For: 2.0.0, 1.2.0


while testing the read path, I ended up with the profiler showing a lot of time spent in IdLock.
The IdLock is used by the HFileReader and the BucketCache, so you'll see a lot of it when you have an hotspot on a hfile.
we end up locked by that synchronized() and with too many calls to map.putIfAbsent()
{code}
public Entry getLockEntry(long id) throws IOException {
  while ((existing = map.putIfAbsent(entry.id, entry)) != null) {
    synchronized (existing) {
      ...
    }
    // If the entry is not locked, it might already be deleted from the
    // map, so we cannot return it. We need to get our entry into the map
    // or get someone else's locked entry.
  }
}

public void releaseLockEntry(Entry entry) {
  synchronized (entry) {
    ...
  }
}
{code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)