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

zhuobin zheng commented on HBASE-20673:
---------------------------------------

I Can't add attachment. So I add some info in this comment.

version: cdh5-1.2.0_5.14.4

 

-----------------------------------------------------------------------------------------------------------------------------------------------------
Profiler Info:
 ns percent samples top
 ---------- ------- ------- ---
219079399723 16.81% 21956 itable stub
187885376151 14.42% 18830 itable stub
168718141522 12.95% 16909 itable stub
149243475899 11.45% 14957 itable stub
108522505239 8.33% 10876 itable stub
 54090604368 4.15% 5421 itable stub
 45659351417 3.50% 4576 org.apache.hadoop.hbase.CellComparator.compareRows_[j]
 41398429360 3.18% 4149 itable stub
 32259010132 2.48% 3233 itable stub
 30253160585 2.32% 3032 itable stub
 10897498052 0.84% 1092 HeapRegion::block_size(HeapWord const*) const
 10467104761 0.80% 1049 org.apache.hadoop.hbase.KeyValue.getFamilyLength_[j]
 10176340086 0.78% 1020 G1ParScanThreadState::trim_queue()
 9867105912 0.76% 989 G1ParScanThreadState::copy_to_survivor_space(InCSetState, 
oopDesc*, markOopDesc*)
 9768378849 0.75% 979 itable stub

 

-----------------------------------------------------------------------------------------------------------------------------------------------------
Jstack Info:

"RpcServer.RW.fifo.Q.write.handler=73,queue=1,port=60020" #133 daemon prio=5 
os_prio=0 tid=0x00007faad0097800 nid=0x403d runnable [0x00007faaceeec000]
 java.lang.Thread.State: RUNNABLE
 at org.apache.hadoop.hbase.CellComparator.compareRows(CellComparator.java:186)
 at org.apache.hadoop.hbase.CellComparator.compare(CellComparator.java:63)
 at org.apache.hadoop.hbase.KeyValue$KVComparator.compare(KeyValue.java:2020)
 at org.apache.hadoop.hbase.KeyValue$KVComparator.compare(KeyValue.java:1897)
 at 
java.util.concurrent.ConcurrentSkipListMap.cpr(ConcurrentSkipListMap.java:655)
 at 
java.util.concurrent.ConcurrentSkipListMap.doPut(ConcurrentSkipListMap.java:899)
 at 
java.util.concurrent.ConcurrentSkipListMap.put(ConcurrentSkipListMap.java:1581)
 at 
org.apache.hadoop.hbase.regionserver.CellSkipListSet.add(CellSkipListSet.java:134)
 at 
org.apache.hadoop.hbase.regionserver.DefaultMemStore.addToCellSet(DefaultMemStore.java:242)
 at 
org.apache.hadoop.hbase.regionserver.DefaultMemStore.internalAdd(DefaultMemStore.java:276)
 at 
org.apache.hadoop.hbase.regionserver.DefaultMemStore.add(DefaultMemStore.java:233)
 at org.apache.hadoop.hbase.regionserver.HStore.add(HStore.java:686)
 at 
org.apache.hadoop.hbase.regionserver.HRegion.applyFamilyMapToMemstore(HRegion.java:3807)
 at 
org.apache.hadoop.hbase.regionserver.HRegion.doMiniBatchMutation(HRegion.java:3280)
 at org.apache.hadoop.hbase.regionserver.HRegion.batchMutate(HRegion.java:2944)
 at org.apache.hadoop.hbase.regionserver.HRegion.batchMutate(HRegion.java:2886)
 at 
org.apache.hadoop.hbase.regionserver.RSRpcServices.doBatchOp(RSRpcServices.java:765)
 at 
org.apache.hadoop.hbase.regionserver.RSRpcServices.doNonAtomicRegionMutation(RSRpcServices.java:716)
 at 
org.apache.hadoop.hbase.regionserver.RSRpcServices.multi(RSRpcServices.java:2146)
 at 
org.apache.hadoop.hbase.protobuf.generated.ClientProtos$ClientService$2.callBlockingMethod(ClientProtos.java:33656)
 at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2191)
 at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:112)
 at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:183)
 at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:163)


"RpcServer.RW.fifo.Q.write.handler=71,queue=8,port=60020" #131 daemon prio=5 
os_prio=0 tid=0x00007faad0093800 nid=0x403b runnable [0x00007faacf0ee000]
 java.lang.Thread.State: RUNNABLE
 at 
org.apache.hadoop.hbase.CellComparator.compareColumns(CellComparator.java:157)
 at 
org.apache.hadoop.hbase.CellComparator.compareWithoutRow(CellComparator.java:224)
 at org.apache.hadoop.hbase.CellComparator.compare(CellComparator.java:66)
 at org.apache.hadoop.hbase.KeyValue$KVComparator.compare(KeyValue.java:2020)
 at org.apache.hadoop.hbase.KeyValue$KVComparator.compare(KeyValue.java:1897)
 at 
java.util.concurrent.ConcurrentSkipListMap.cpr(ConcurrentSkipListMap.java:655)
 at 
java.util.concurrent.ConcurrentSkipListMap.doPut(ConcurrentSkipListMap.java:899)
 at 
java.util.concurrent.ConcurrentSkipListMap.put(ConcurrentSkipListMap.java:1581)
 at 
org.apache.hadoop.hbase.regionserver.CellSkipListSet.add(CellSkipListSet.java:134)
 at 
org.apache.hadoop.hbase.regionserver.DefaultMemStore.addToCellSet(DefaultMemStore.java:242)
 at 
org.apache.hadoop.hbase.regionserver.DefaultMemStore.internalAdd(DefaultMemStore.java:276)
 at 
org.apache.hadoop.hbase.regionserver.DefaultMemStore.add(DefaultMemStore.java:233)
 at org.apache.hadoop.hbase.regionserver.HStore.add(HStore.java:686)
 at 
org.apache.hadoop.hbase.regionserver.HRegion.applyFamilyMapToMemstore(HRegion.java:3807)
 at 
org.apache.hadoop.hbase.regionserver.HRegion.doMiniBatchMutation(HRegion.java:3280)
 at org.apache.hadoop.hbase.regionserver.HRegion.batchMutate(HRegion.java:2944)
 at org.apache.hadoop.hbase.regionserver.HRegion.batchMutate(HRegion.java:2886)
 at 
org.apache.hadoop.hbase.regionserver.RSRpcServices.doBatchOp(RSRpcServices.java:765)
 at 
org.apache.hadoop.hbase.regionserver.RSRpcServices.doNonAtomicRegionMutation(RSRpcServices.java:716)
 at 
org.apache.hadoop.hbase.regionserver.RSRpcServices.multi(RSRpcServices.java:2146)
 at 
org.apache.hadoop.hbase.protobuf.generated.ClientProtos$ClientService$2.callBlockingMethod(ClientProtos.java:33656)
 at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2191)
 at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:112)
 at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:183)
 at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:163)

-----------------------------------------------------------------------------------------------------------------------------------------------------
KeyValue Type Analyze:
Env: All Cell no tag.
Read Situation: 
NUM Compare Left Compare Right 
22 Compare: org.apache.hadoop.hbase.KeyValue 
org.apache.hadoop.hbase.NoTagsKeyValue
211 Compare: org.apache.hadoop.hbase.KeyValue 
org.apache.hadoop.hbase.KeyValue$KeyOnlyKeyValue
116743 Compare: org.apache.hadoop.hbase.NoTagsKeyValue 
org.apache.hadoop.hbase.NoTagsKeyValue

Write Situation:
NUM Compare Left Compare Right 
90597 Compare: org.apache.hadoop.hbase.KeyValue org.apache.hadoop.hbase.KeyValue

Situation Analyze:
Why Read almost NoTagsKeyValue?
https://github.com/apache/hbase/blob/branch-1.2/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/HFileReaderV3.java#L206

Why Read Has Some KeyValue, or KeyOnlyKeyValue?
some Block Seek. check cell. will create this instance in code.

Why Write all KeyValue Instance?
https://github.com/apache/hbase/blob/branch-1.2/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/DefaultMemStore.java#L311

 

-----------------------------------------------------------------------------------------------------------------------------------------------------
KeyValue implements too many interface.
public class KeyValue implements Cell, HeapSize, Cloneable, SettableSequenceId, 
SettableTimestamp {

 


-----------------------------------------------------------------------------------------------------------------------------------------------------
And I try to change write KeyValue to NoTag, So in the situation All Cell no 
tag. almost compare cell is NoTagKeyValue

 

 

> Reduce the number of Cell implementations; the profusion is distracting to 
> users and JIT
> ----------------------------------------------------------------------------------------
>
>                 Key: HBASE-20673
>                 URL: https://issues.apache.org/jira/browse/HBASE-20673
>             Project: HBase
>          Issue Type: Sub-task
>          Components: Performance
>            Reporter: Michael Stack
>            Assignee: Michael Stack
>            Priority: Major
>         Attachments: 0001-current.patch, 0001-current.patch, hits.20673.png
>
>
> We have a wild blossom of Cell implementations in hbase. Purge the bulk of 
> them. Make it so we do one type well. JIT gets confused if it has an abstract 
> or an interface and then the instantiated classes are myriad (megamorphic).



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to