let me take a look, but branch-1 and master should be the same on the proc stuff
Matteo On Thu, Nov 5, 2015 at 10:23 AM, Stack <[email protected]> wrote: > 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 <[email protected]> > 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) > > >
