You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@trafodion.apache.org by "Alice Chen (JIRA)" <ji...@apache.org> on 2015/07/22 20:20:35 UTC

[jira] [Created] (TRAFODION-1257) LP Bug: 1461155 - CPU consumption increases dramatically for larger transaction

Alice Chen created TRAFODION-1257:
-------------------------------------

             Summary: LP Bug: 1461155 - CPU consumption increases dramatically for larger transaction
                 Key: TRAFODION-1257
                 URL: https://issues.apache.org/jira/browse/TRAFODION-1257
             Project: Apache Trafodion
          Issue Type: Bug
          Components: dtm
            Reporter: Hans Zeller
            Priority: Critical


What I am seeing is the region server 100% busy when we have larger transactions, with thousands of rows. It seems that the CPU cycles are almost all spent in org.apache.hadoop.hbase.client.Mutation.getFamilyMap(Mutation.java:276). I found this by doing several jstack calls on the region server.

Here is the full stack trace:

                at org.apache.hadoop.hbase.client.Mutation.getFamilyMap(Mutation.java:276)
     at org.apache.hadoop.hbase.regionserver.transactional.TrxTransactionState$WriteAction.getKeyValues(TrxTransactionState.java:910)
     - locked <0x00000000dd583978> (a org.apache.hadoop.hbase.regionserver.transactional.TrxTransactionState$WriteAction)
     at org.apache.hadoop.hbase.regionserver.transactional.TrxTransactionState.getAllKVs(TrxTransactionState.java:551)
     - locked <0x00000000d55751b8> (a org.apache.hadoop.hbase.regionserver.transactional.TrxTransactionState)
     at org.apache.hadoop.hbase.regionserver.transactional.TrxTransactionState.access$100(TrxTransactionState.java:66)
     at org.apache.hadoop.hbase.regionserver.transactional.TrxTransactionState$TransactionScanner.<init>(TrxTransactionState.java:616)
     at org.apache.hadoop.hbase.regionserver.transactional.TrxTransactionState.getScanner(TrxTransactionState.java:494)
     at org.apache.hadoop.hbase.coprocessor.transactional.TrxRegionEndpoint.getScanner(TrxRegionEndpoint.java:3847)
     at org.apache.hadoop.hbase.coprocessor.transactional.TrxRegionEndpoint.get(TrxRegionEndpoint.java:3813)
     at org.apache.hadoop.hbase.coprocessor.transactional.TrxRegionEndpoint.checkAndPut(TrxRegionEndpoint.java:3749)
     at org.apache.hadoop.hbase.coprocessor.transactional.TrxRegionEndpoint.checkAndPut(TrxRegionEndpoint.java:1163)
     at org.apache.hadoop.hbase.coprocessor.transactional.generated.TrxRegionProtos$TrxRegionService.callMethod(TrxRegionProtos.java:28462)
     at org.apache.hadoop.hbase.regionserver.HRegion.execService(HRegion.java:5685)
     at org.apache.hadoop.hbase.regionserver.HRegionServer.execServiceOnRegion(HRegionServer.java:3421)
     at org.apache.hadoop.hbase.regionserver.HRegionServer.execService(HRegionServer.java:3403)
     at org.apache.hadoop.hbase.protobuf.generated.ClientProtos$ClientService$2.callBlockingMethod(ClientProtos.java:29929)
     at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2031)
     at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:108)
     at org.apache.hadoop.hbase.ipc.RpcExecutor.consumerLoop(RpcExecutor.java:116)
     at org.apache.hadoop.hbase.ipc.RpcExecutor$1.run(RpcExecutor.java:96)
     at java.lang.Thread.run(Thread.java:745)

Some performance measurements:

   Number of rows   time without    time with
    inserted        transaction    transaction
   --------------   ------------   -----------
        10,000            9 sec        33 sec
       100,000           45 sec      3612 sec

Testcase:

cqd attempt_esp_parallelism 'off';

drop table txninsert;
create table txninsert(id int not null,
                       ts int not null,
                       a int,
                       b int,
                       c char(500),
                       primary key (id, ts));

-- use this to enable/disable DTM transactions
-- cqd TRAF_NO_DTM_XN 'on';
-- cqd TRAF_NO_DTM_XN reset;

prepare s1 from
insert
into txninsert
select num/10, mod(num,10), num, 1, cast(num as char(10))
from (select 10000*e4 +
             1000*e3 + 100*e2 + 10*e1 + e0
      from (values (0)) seed(s)
      transpose 0,1,2,3,4,5,6,7,8,9 as e0
      transpose 0,1,2,3,4,5,6,7,8,9 as e1
      transpose 0,1,2,3,4,5,6,7,8,9 as e2
      transpose 0,1,2,3,4,5,6,7,8,9 as e3
      transpose 0,1,2,3,4,5,6,7,8,9 as e4
     ) t(num);

explain options 'f' s1;
execute s1;



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