[ 
https://issues.apache.org/jira/browse/HBASE-20188?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16423279#comment-16423279
 ] 

huaxiang sun commented on HBASE-20188:
--------------------------------------

Hi [~stack], I was looking at tree.txt. The following concerned me, it seems 
that getMin() was taking lots of cpu time. 9.1/81.8 = 11 percent of cpu. It 
makes me wondering the fix I did for HBASE-12148 is causing trouble for write 
performance. Let me prepare a patch for undoing the change in HBASE-12148 and 
we can rerun to see if this improves, thanks.

 
{code:java}
       (t 81.8,s  0.0) 
org.apache.hadoop.hbase.regionserver.RSRpcServices::doNonAtomicRegionMutation(org.apache.hadoop.hbase.regionserver.HRegion,org.apache.hadoop.hbase.quotas.OperationQuota,org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos$RegionAction,org.apache.hadoop.hbase.CellScanner,org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos$RegionActionResult$Builder,java.util.List,long,org.apache.hadoop.hbase.regionserver.RSRpcServices$RegionScannersCloseCallBack,org.apache.hadoop.hbase.ipc.RpcCallContext,org.apache.hadoop.hbase.quotas.ActivePolicyEnforcement)

        (t 81.8,s  0.0) 
org.apache.hadoop.hbase.regionserver.RSRpcServices::doNonAtomicBatchOp(org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos$RegionActionResult$Builder,org.apache.hadoop.hbase.regionserver.HRegion,org.apache.hadoop.hbase.quotas.OperationQuota,java.util.List,org.apache.hadoop.hbase.CellScanner,org.apache.hadoop.hbase.quotas.ActivePolicyEnforcement)

         (t 81.8,s  0.0) 
org.apache.hadoop.hbase.regionserver.RSRpcServices::doBatchOp(org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos$RegionActionResult$Builder,org.apache.hadoop.hbase.regionserver.HRegion,org.apache.hadoop.hbase.quotas.OperationQuota,java.util.List,org.apache.hadoop.hbase.CellScanner,org.apache.hadoop.hbase.quotas.ActivePolicyEnforcement,boolean)

          (t 81.8,s  0.0) 
org.apache.hadoop.hbase.regionserver.HRegion::batchMutate(org.apache.hadoop.hbase.client.Mutation[],boolean,long,long)

           (t 81.8,s  0.0) 
org.apache.hadoop.hbase.regionserver.HRegion::batchMutate(org.apache.hadoop.hbase.regionserver.HRegion$BatchOperation)

            (t 81.8,s  0.0) 
org.apache.hadoop.hbase.regionserver.HRegion::doMiniBatchMutate(org.apache.hadoop.hbase.regionserver.HRegion$BatchOperation)

             (t 81.8,s  0.0) 
org.apache.hadoop.hbase.regionserver.HRegion$MutationBatchOperation::writeMiniBatchOperationsToMemStore(org.apache.hadoop.hbase.regionserver.MiniBatchOperationInProgress,org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl$WriteEntry)

              (t 81.8,s  0.0) 
org.apache.hadoop.hbase.regionserver.HRegion$BatchOperation::writeMiniBatchOperationsToMemStore(org.apache.hadoop.hbase.regionserver.MiniBatchOperationInProgress,long)

               (t 81.8,s  0.0) 
org.apache.hadoop.hbase.regionserver.HRegion$BatchOperation::visitBatchOperations(boolean,int,org.apache.hadoop.hbase.regionserver.HRegion$BatchOperation$Visitor)

                (t 81.8,s  0.0) 
org.apache.hadoop.hbase.regionserver.HRegion$BatchOperation$$Lambda$247.826973093::visit(int)

                 (t 81.8,s  0.0) 
org.apache.hadoop.hbase.regionserver.HRegion$BatchOperation::lambda$writeMiniBatchOperationsToMemStore$0(long,org.apache.hadoop.hbase.regionserver.MemStoreSizing,int)

                  (t 81.8,s  9.1) 
org.apache.hadoop.hbase.regionserver.HRegion$BatchOperation::applyFamilyMapToMemStore(java.util.Map,org.apache.hadoop.hbase.regionserver.MemStoreSizing)

                   (t 72.7,s  0.0) 
org.apache.hadoop.hbase.regionserver.HRegion::access$600(org.apache.hadoop.hbase.regionserver.HRegion,org.apache.hadoop.hbase.regionserver.HStore,java.util.List,boolean,org.apache.hadoop.hbase.regionserver.MemStoreSizing)

                    (t 72.7,s  0.0) 
org.apache.hadoop.hbase.regionserver.HRegion::applyToMemStore(org.apache.hadoop.hbase.regionserver.HStore,java.util.List,boolean,org.apache.hadoop.hbase.regionserver.MemStoreSizing)

                     (t 72.7,s  0.0) 
org.apache.hadoop.hbase.regionserver.HStore::add(java.lang.Iterable,org.apache.hadoop.hbase.regionserver.MemStoreSizing)

                      (t 72.7,s  0.0) 
org.apache.hadoop.hbase.regionserver.AbstractMemStore::add(java.lang.Iterable,org.apache.hadoop.hbase.regionserver.MemStoreSizing)

                       (t 72.7,s  0.0) 
org.apache.hadoop.hbase.regionserver.AbstractMemStore::add(org.apache.hadoop.hbase.Cell,org.apache.hadoop.hbase.regionserver.MemStoreSizing)

                        (t 72.7,s  0.0) 
org.apache.hadoop.hbase.regionserver.AbstractMemStore::internalAdd(org.apache.hadoop.hbase.Cell,boolean,org.apache.hadoop.hbase.regionserver.MemStoreSizing)

                         (t 72.7,s  0.0) 
org.apache.hadoop.hbase.regionserver.MutableSegment::add(org.apache.hadoop.hbase.Cell,boolean,org.apache.hadoop.hbase.regionserver.MemStoreSizing)

                          (t 72.7,s  0.0) 
org.apache.hadoop.hbase.regionserver.Segment::internalAdd(org.apache.hadoop.hbase.Cell,boolean,org.apache.hadoop.hbase.regionserver.MemStoreSizing)

                           (t 63.6,s  0.0) 
org.apache.hadoop.hbase.regionserver.CellSet::add(org.apache.hadoop.hbase.Cell)

                            (t 63.6,s  0.0) 
java.util.concurrent.ConcurrentSkipListMap::put(java.lang.Object,java.lang.Object)

                             (t 63.6,s  0.0) 
java.util.concurrent.ConcurrentSkipListMap::doPut(java.lang.Object,java.lang.Object,boolean)

                              (t 36.4,s  0.0) 
java.util.concurrent.ConcurrentSkipListMap::findPredecessor(java.lang.Object,java.util.Comparator)

                               (t 36.4,s  0.0) 
java.util.concurrent.ConcurrentSkipListMap::cpr(java.util.Comparator,java.lang.Object,java.lang.Object)

                                (t 36.4,s  0.0) 
org.apache.hadoop.hbase.CellComparatorImpl::compare(java.lang.Object,java.lang.Object)

                                 (t 36.4,s  0.0) 
org.apache.hadoop.hbase.CellComparatorImpl::compare(org.apache.hadoop.hbase.Cell,org.apache.hadoop.hbase.Cell)

                                  (t 36.4,s  0.0) 
org.apache.hadoop.hbase.CellComparatorImpl::compare(org.apache.hadoop.hbase.Cell,org.apache.hadoop.hbase.Cell,boolean)

                                   (t 36.4,s 36.4) 
org.apache.hadoop.hbase.CellComparatorImpl::compareRows(org.apache.hadoop.hbase.Cell,org.apache.hadoop.hbase.Cell)

                              (t 27.3,s  0.0) 
java.util.concurrent.ConcurrentSkipListMap::cpr(java.util.Comparator,java.lang.Object,java.lang.Object)

                               (t 27.3,s  0.0) 
org.apache.hadoop.hbase.CellComparatorImpl::compare(java.lang.Object,java.lang.Object)

                                (t 27.3,s  0.0) 
org.apache.hadoop.hbase.CellComparatorImpl::compare(org.apache.hadoop.hbase.Cell,org.apache.hadoop.hbase.Cell)

                                 (t 27.3,s  0.0) 
org.apache.hadoop.hbase.CellComparatorImpl::compare(org.apache.hadoop.hbase.Cell,org.apache.hadoop.hbase.Cell,boolean)

                                  (t 27.3,s  0.0) 
org.apache.hadoop.hbase.CellComparatorImpl::compareRows(org.apache.hadoop.hbase.Cell,org.apache.hadoop.hbase.Cell)

                                   (t 18.2,s 18.2) 
org.apache.hadoop.hbase.util.ByteBufferUtils::compareTo(java.nio.ByteBuffer,int,int,java.nio.ByteBuffer,int,int)

                                   (t  9.1,s  0.0) 
org.apache.hadoop.hbase.ByteBufferKeyValue::getRowLength()

                                    (t  9.1,s  0.0) 
org.apache.hadoop.hbase.ByteBufferKeyValue::getRowLen()

                                     (t  9.1,s  0.0) 
org.apache.hadoop.hbase.util.ByteBufferUtils::toShort(java.nio.ByteBuffer,int)

                                      (t  9.1,s  0.0) 
org.apache.hadoop.hbase.util.UnsafeAccess::toShort(java.nio.ByteBuffer,int)

                                       (t  9.1,s  9.1) 
org.apache.hadoop.hbase.util.UnsafeAccess::getAsShort(java.nio.ByteBuffer,int)

                           (t  9.1,s  0.0) 
org.apache.hadoop.hbase.regionserver.Segment::updateMetaInfo(org.apache.hadoop.hbase.Cell,boolean,boolean,org.apache.hadoop.hbase.regionserver.MemStoreSizing)

                            (t  9.1,s  0.0) 
org.apache.hadoop.hbase.regionserver.TimeRangeTracker::includeTimestamp(org.apache.hadoop.hbase.Cell)

                             (t  9.1,s  0.0) 
org.apache.hadoop.hbase.regionserver.TimeRangeTracker::includeTimestamp(long)

                              (t  9.1,s  9.1) 
org.apache.hadoop.hbase.regionserver.TimeRangeTracker$SyncTimeRangeTracker::getMin(){code}

> [TESTING] Performance
> ---------------------
>
>                 Key: HBASE-20188
>                 URL: https://issues.apache.org/jira/browse/HBASE-20188
>             Project: HBase
>          Issue Type: Umbrella
>          Components: Performance
>            Reporter: stack
>            Assignee: stack
>            Priority: Blocker
>             Fix For: 2.0.0
>
>         Attachments: CAM-CONFIG-V01.patch, ITBLL2.5B_1.2.7vs2.0.0_cpu.png, 
> ITBLL2.5B_1.2.7vs2.0.0_gctime.png, ITBLL2.5B_1.2.7vs2.0.0_iops.png, 
> ITBLL2.5B_1.2.7vs2.0.0_load.png, ITBLL2.5B_1.2.7vs2.0.0_memheap.png, 
> ITBLL2.5B_1.2.7vs2.0.0_memstore.png, ITBLL2.5B_1.2.7vs2.0.0_ops.png, 
> ITBLL2.5B_1.2.7vs2.0.0_ops_NOT_summing_regions.png, YCSB_CPU.png, 
> YCSB_GC_TIME.png, YCSB_IN_MEMORY_COMPACTION=NONE.ops.png, YCSB_MEMSTORE.png, 
> YCSB_OPs.png, YCSB_in-memory-compaction=NONE.ops.png, YCSB_load.png, 
> flamegraph-1072.1.svg, flamegraph-1072.2.svg, tree.txt
>
>
> How does 2.0.0 compare to old versions? Is it faster, slower? There is rumor 
> that it is much slower, that the problem is the asyncwal writing. Does 
> in-memory compaction slow us down or speed us up? What happens when you 
> enable offheaping?
> Keep notes here in this umbrella issue. Need to be able to say something 
> about perf when 2.0.0 ships.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to