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

stack commented on HBASE-7905:
------------------------------

So, uploaded a patch for current trunk that adds a fairer test to ipc.  This 
time, the creation of the protobuf Message is included in the timings.  That 
makes it fair.  We create a Put once with 1, 100, or 1000 Cells/KeyValues.  We 
then start a loop and in the loop we protobuf the put and then make an rpc 
which returns nothing.  We are measuring the convertion of the Put to a 
protobuf and then sending the protobuf'd param to the server.

Here is for current trunk (NOT cellblocking as the patch attached here 
provides):

{code}
        RpcRequestBody.Builder builder = RpcRequestBody.newBuilder();
        builder.setRequest(mr.toByteString());
        builder.setMethodName(m.getName());
        RpcRequestBody body = builder.build();
        Message response = client.call(body, address, NothingProtocol.class, 
user, 0);
{code}

mr in the above is a protobuf MultiRequest built out of the Put (The Put was 
put into a RowMutation).

Here is what we do in the patch attached here I'm trying to get committed:

{code}
        List<CellScannable> cells = new ArrayList<CellScannable>();
        Message param = 
RequestConverter.buildNoDataMultiRequest(HConstants.EMPTY_BYTE_ARRAY, rm, 
cells);
        CellScanner cellScanner = CellUtil.createCellScanner(cells);
        Pair<Message, CellScanner> response =
          client.call(m, param, cellScanner, address, NothingProtocol.class, 
user, 0);
{code}

The rm in the above is the RowMutation made with same Put.  We pass the 
MultiRequest into the call.

When I do timings passing 1, 100, 1000 cells, the cellblock, the new cellblock 
stuff is slightly slower when 1 cell but gets better the more cells you are 
carrying:

Current TRUNK:

  13/03/18 21:04:46 INFO ipc.TestIPC: Cycled 100000 time(s) with 1 cell(s) in 
11505ms
  13/03/18 21:04:14 INFO ipc.TestIPC: Cycled 100000 time(s) with 100 cell(s) in 
12218ms
  13/03/18 21:02:53 INFO ipc.TestIPC: Cycled 100000 time(s) with 1000 cell(s) 
in 25562ms

CellBlock Patch:

  13/03/18 21:07:28 INFO ipc.TestIPC: Cycled 100000 time(s) with 1 cell(s) in 
12312ms
  13/03/18 21:08:10 INFO ipc.TestIPC: Cycled 100000 time(s) with 100 cell(s) in 
12348ms
  13/03/18 21:08:52 INFO ipc.TestIPC: Cycled 100000 time(s) with 1000 cell(s) 
in 20075ms

So, its probably ok saying that this cellblock stuff attached here doesn't make 
things any worse than what we currently have.
                
> Add passing of optional cell blocks over rpc
> --------------------------------------------
>
>                 Key: HBASE-7905
>                 URL: https://issues.apache.org/jira/browse/HBASE-7905
>             Project: HBase
>          Issue Type: Sub-task
>          Components: IPC/RPC
>            Reporter: stack
>            Assignee: stack
>             Fix For: 0.95.0
>
>         Attachments: 7900v12-depends-on-8101.txt, 7905.txt, 7905v13.txt, 
> 7905v14.txt, 7905v15.txt, 7905v16.txt, 7905v17.txt, 7905v3.txt, 7905v4.txt, 
> 7905v6.txt, 7905v8.txt, 7905v9.txt, testipc_for_pre_cellblocks.txt, 
> testipc_pre_cellblocks_v2.txt
>
>
> Make it so we can pass Cells/data w/o having to bury it all in protobuf to 
> get it over the wire.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to