Todd Lipcon has submitted this change and it was merged. ( http://gerrit.cloudera.org:8080/16162 )
Change subject: KUDU-636. Use Arena for EncodedKeys ...................................................................... KUDU-636. Use Arena for EncodedKeys This updates EncodedKeyBuilder, RowSetKeyProbe, and EncodedKey to always allocate from an Arena instead of from the heap. This reduces allocator contention on the write path significantly and improves memory locality. I measured by running a tserver under 'perf stat' while using perf loadgen to insert 80M rows total using 8 client threads. The CPU time on the tserver was reduced by about 20%. Before: Performance counter stats for './build/latest/bin/kudu tserver run -fs-wal-dir /tmp/ts': 269853.10 msec task-clock # 6.862 CPUs utilized 293066 context-switches # 0.001 M/sec 44541 cpu-migrations # 0.165 K/sec 2846435 page-faults # 0.011 M/sec 1110190206891 cycles # 4.114 GHz (83.33%) 201895623339 stalled-cycles-frontend # 18.19% frontend cycles idle (83.33%) 137095475307 stalled-cycles-backend # 12.35% backend cycles idle (83.32%) 894201276095 instructions # 0.81 insn per cycle # 0.23 stalled cycles per insn (83.33%) 159095264762 branches # 589.562 M/sec (83.35%) 639216492 branch-misses # 0.40% of all branches (83.35%) 255.178068000 seconds user 14.913394000 seconds sys After: Performance counter stats for './build/latest/bin/kudu tserver run -fs-wal-dir /tmp/ts': 227730.62 msec task-clock # 6.212 CPUs utilized 263824 context-switches # 0.001 M/sec 45470 cpu-migrations # 0.200 K/sec 3165436 page-faults # 0.014 M/sec 931840588715 cycles # 4.092 GHz (83.25%) 183214671009 stalled-cycles-frontend # 19.66% frontend cycles idle (83.40%) 111864991317 stalled-cycles-backend # 12.00% backend cycles idle (83.35%) 832636863971 instructions # 0.89 insn per cycle # 0.22 stalled cycles per insn (83.40%) 148228107120 branches # 650.892 M/sec (83.24%) 563344647 branch-misses # 0.38% of all branches (83.35%) 211.361472000 seconds user 16.635265000 seconds sys Change-Id: Ib46d0e2c31e03a7f319ceb0bf742e08ff74d7683 Reviewed-on: http://gerrit.cloudera.org:8080/16162 Reviewed-by: Alexey Serbin <aser...@cloudera.com> Tested-by: Todd Lipcon <t...@apache.org> --- M src/kudu/cfile/cfile-test.cc M src/kudu/client/scan_configuration.cc M src/kudu/client/write_op.cc M src/kudu/client/write_op.h M src/kudu/common/encoded_key-test.cc M src/kudu/common/encoded_key.cc M src/kudu/common/encoded_key.h M src/kudu/common/partition_pruner-test.cc M src/kudu/common/scan_spec-test.cc M src/kudu/common/scan_spec.cc M src/kudu/common/scan_spec.h M src/kudu/tablet/all_types-scan-correctness-test.cc M src/kudu/tablet/cfile_set-test.cc M src/kudu/tablet/compaction-test.cc M src/kudu/tablet/diskrowset-test-base.h M src/kudu/tablet/diskrowset-test.cc M src/kudu/tablet/memrowset-test.cc M src/kudu/tablet/row_op.h M src/kudu/tablet/rowset.h M src/kudu/tablet/tablet-decoder-eval-test.cc M src/kudu/tablet/tablet-pushdown-test.cc M src/kudu/tablet/tablet-test.cc M src/kudu/tablet/tablet.cc M src/kudu/tools/tool_action_fs.cc M src/kudu/tserver/scanners.h M src/kudu/tserver/tablet_server-test.cc M src/kudu/tserver/tablet_server_authorization-test.cc M src/kudu/tserver/tablet_service.cc 28 files changed, 265 insertions(+), 330 deletions(-) Approvals: Alexey Serbin: Looks good to me, approved Todd Lipcon: Verified -- To view, visit http://gerrit.cloudera.org:8080/16162 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-Project: kudu Gerrit-Branch: master Gerrit-MessageType: merged Gerrit-Change-Id: Ib46d0e2c31e03a7f319ceb0bf742e08ff74d7683 Gerrit-Change-Number: 16162 Gerrit-PatchSet: 5 Gerrit-Owner: Todd Lipcon <t...@apache.org> Gerrit-Reviewer: Alexey Serbin <aser...@cloudera.com> Gerrit-Reviewer: Kudu Jenkins (120) Gerrit-Reviewer: Tidy Bot (241) Gerrit-Reviewer: Todd Lipcon <t...@apache.org>