You are looking at master process only?

I've been looking at branch-1 only of late.

St.Ack

On Thu, Nov 5, 2015 at 12:06 AM, Andrew Purtell <apurt...@apache.org> wrote:

> I just profiled trunk running YCSB workload A. I was looking for something
> else but found completely unexpected results.
>
> I see 60% of all allocation pressure in TLABs coming from
> ProcedureExecutors, allocating 16 GB of
> java.util.AbstractMap$SimpleImmutableEntry in this code:
>
> Stack Trace TLABs Total TLAB Size(bytes) Pressure(%)
> java.util.concurrent.ConcurrentSkipListMap$Node.createSnapshot() 11,603
> 18,402,380,120 100
>    java.util.concurrent.ConcurrentSkipListMap.firstEntry() 11,599
> 18,401,678,776 99.996
>
> org.apache.hadoop.hbase.procedure2.ProcedureFairRunQueues.nextObject()
> 11,599 18,401,678,776 99.996
>          org.apache.hadoop.hbase.procedure2.ProcedureFairRunQueues.poll()
> 11,599 18,401,678,776 99.996
>
> org.apache.hadoop.hbase.master.procedure.MasterProcedureQueue.poll() 11,599
> 18,401,678,776 99.996
>
>  org.apache.hadoop.hbase.procedure2.ProcedureExecutor.execLoop() 11,599
> 18,401,678,776 99.996
>
>
> The three ProcedureExecutor threads also consume about 60% of all CPU time,
> each about 20%. Here are the top hot code arcs from one of them:
>
> Stack Trace Sample Count Percentage(%)
> org.apache.hadoop.hbase.procedure2.ProcedureFairRunQueues.poll() 1,521
> 39.191
>    org.apache.hadoop.hbase.master.procedure.MasterProcedureQueue.poll()
> 1,521 39.191
>       org.apache.hadoop.hbase.procedure2.ProcedureExecutor.execLoop() 1,521
> 39.191
> java.lang.String$CaseInsensitiveComparator.compare(String, String) 614
> 15.821
>    java.lang.String$CaseInsensitiveComparator.compare(Object, Object) 614
> 15.821
>       java.lang.String.compareToIgnoreCase(String) 614 15.821
>          org.apache.hadoop.hbase.ServerName.compareTo(ServerName) 614
> 15.821
>             org.apache.hadoop.hbase.ServerName.compareTo(Object) 614 15.821
>                java.util.concurrent.ConcurrentSkipListMap.cpr(Comparator,
> Object, Object) 614 15.821
>
> java.util.concurrent.ConcurrentSkipListMap.findNear(Object, int,
> Comparator)
> 614 15.821
>
>  java.util.concurrent.ConcurrentSkipListMap.getNear(Object, int) 614 15.821
>
> java.util.concurrent.ConcurrentSkipListMap.higherEntry(Object) 614 15.821
>
>  org.apache.hadoop.hbase.procedure2.ProcedureFairRunQueues.nextObject() 614
> 15.821
>
> org.apache.hadoop.hbase.procedure2.ProcedureFairRunQueues.poll() 614 15.821
>
>  org.apache.hadoop.hbase.master.procedure.MasterProcedureQueue.poll() 614
> 15.821
>
> org.apache.hadoop.hbase.procedure2.ProcedureExecutor.execLoop() 614 15.821
> java.util.concurrent.ConcurrentSkipListMap$Node.createSnapshot() 468 12.059
>    java.util.concurrent.ConcurrentSkipListMap.getNear(Object, int) 468
> 12.059
>       java.util.concurrent.ConcurrentSkipListMap.higherEntry(Object) 468
> 12.059
>
>  org.apache.hadoop.hbase.procedure2.ProcedureFairRunQueues.nextObject() 468
> 12.059
>
> org.apache.hadoop.hbase.procedure2.ProcedureFairRunQueues.poll()
> 468 12.059
>
>  org.apache.hadoop.hbase.master.procedure.MasterProcedureQueue.poll() 468
> 12.059
>
> org.apache.hadoop.hbase.procedure2.ProcedureExecutor.execLoop() 468 12.059
> java.util.concurrent.ConcurrentSkipListMap.cpr(Comparator, Object, Object)
> 402 10.358
>    java.util.concurrent.ConcurrentSkipListMap.findNear(Object, int,
> Comparator) 280 7.215
>       java.util.concurrent.ConcurrentSkipListMap.getNear(Object, int) 280
> 7.215
>          java.util.concurrent.ConcurrentSkipListMap.higherEntry(Object) 280
> 7.215
>
> org.apache.hadoop.hbase.procedure2.ProcedureFairRunQueues.nextObject() 280
> 7.215
>
>  org.apache.hadoop.hbase.procedure2.ProcedureFairRunQueues.poll() 280 7.215
>
> org.apache.hadoop.hbase.master.procedure.MasterProcedureQueue.poll() 280
> 7.215
>
>  org.apache.hadoop.hbase.procedure2.ProcedureExecutor.execLoop() 280 7.215
>    java.util.concurrent.ConcurrentSkipListMap.findPredecessor(Object,
> Comparator) 122 3.144
>       java.util.concurrent.ConcurrentSkipListMap.findNear(Object, int,
> Comparator) 122 3.144
>          java.util.concurrent.ConcurrentSkipListMap.getNear(Object, int)
> 122
> 3.144
>             java.util.concurrent.ConcurrentSkipListMap.higherEntry(Object)
> 122 3.144
>
>  org.apache.hadoop.hbase.procedure2.ProcedureFairRunQueues.nextObject() 122
> 3.144
>
> org.apache.hadoop.hbase.procedure2.ProcedureFairRunQueues.poll() 122 3.144
>
>  org.apache.hadoop.hbase.master.procedure.MasterProcedureQueue.poll() 122
> 3.144
>
> org.apache.hadoop.hbase.procedure2.ProcedureExecutor.execLoop() 122 3.144
>
>
> ​Just me? Someone working on ProcedureV2 should have a look at WTH the
> ProcedureExecutors are doing. They seem to be polling the run queue
> constantly and burning up CPU. I'll try running more workloads at the next
> opportunity and see if I can repeat this or gain more insight.
>
>
> --
> Best regards,
>
>    - Andy
>
> Problems worthy of attack prove their worth by hitting back. - Piet Hein
> (via Tom White)
>

Reply via email to