[
https://issues.apache.org/jira/browse/HBASE-6295?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13644489#comment-13644489
]
Nicolas Liochon commented on HBASE-6295:
----------------------------------------
I've changed the per server task limit to a per region task limit.
Here is the result of a test on 5 datanodes, ec2 xlarge instances, table not
split. I've executed the test multiple times on each config.
{code}
./bin/ycsb load hbase -P workloads/workloada -s -p columnfamily=family -p
recordcount=100000000 | grep -v CLEAN | grep -v INSERT | grep -v UPDATE
{code}
without 6295
{noformat}
10 sec: 50159 operations; 5011,39 current ops/sec; [INSERT
AverageLatency(us)=184,77]
20 sec: 127679 operations; 7748,9 current ops/sec; [INSERT
AverageLatency(us)=121,76]
30 sec: 132239 operations; 455,77 current ops/sec; [INSERT
AverageLatency(us)=242,47]
40 sec: 132239 operations; 0 current ops/sec;
50 sec: 132239 operations; 0 current ops/sec;
60 sec: 132239 operations; 0 current ops/sec;
70 sec: 132239 operations; 0 current ops/sec;
80 sec: 132239 operations; 0 current ops/sec;
90 sec: 167676 operations; 3532,04 current ops/sec; [INSERT
AverageLatency(us)=1955,36]
100 sec: 250799 operations; 8308,98 current ops/sec; [INSERT
AverageLatency(us)=114,35]
110 sec: 341999 operations; 9115,44 current ops/sec; [INSERT
AverageLatency(us)=107,25]
120 sec: 428639 operations; 8660,54 current ops/sec; [INSERT
AverageLatency(us)=109,67]
130 sec: 507844 operations; 7916,54 current ops/sec; [INSERT
AverageLatency(us)=125,44]
140 sec: 588239 operations; 8035,48 current ops/sec; [INSERT
AverageLatency(us)=120,31]
150 sec: 674879 operations; 8660,54 current ops/sec; [INSERT
AverageLatency(us)=109,59]
160 sec: 729599 operations; 5469,27 current ops/sec; [INSERT
AverageLatency(us)=111,25]
170 sec: 729599 operations; 0 current ops/sec;
180 sec: 729599 operations; 0 current ops/sec;
190 sec: 729599 operations; 0 current ops/sec;
200 sec: 729599 operations; 0 current ops/sec;
210 sec: 729599 operations; 0 current ops/sec;
220 sec: 729599 operations; 0 current ops/sec;
230 sec: 819076 operations; 8926,28 current ops/sec; [INSERT
AverageLatency(us)=824,06]
240 sec: 911999 operations; 9287,66 current ops/sec; [INSERT
AverageLatency(us)=102,68]
250 sec: 998639 operations; 8659,67 current ops/sec; [INSERT
AverageLatency(us)=109,97]
260 sec: 1089839 operations; 9116,35 current ops/sec; [INSERT
AverageLatency(us)=105,23]
270 sec: 1094399 operations; 455,77 current ops/sec; [INSERT
AverageLatency(us)=219,31]
280 sec: 1094399 operations; 0 current ops/sec;
290 sec: 1094399 operations; 0 current ops/sec;
300 sec: 1098959 operations; 455,77 current ops/sec; [INSERT
AverageLatency(us)=7326,11]
310 sec: 1098959 operations; 0 current ops/sec;
320 sec: 1098959 operations; 0 current ops/sec;
330 sec: 1131203 operations; 3222,79 current ops/sec; [INSERT
AverageLatency(us)=1109,09]
2013-04-29 09:06:04,357 INFO [Thread-1] zookeeper.RecoverableZooKeeper
(RecoverableZooKeeper.java:<init>(119)) - The identifier of this process is
hconnection-0x8888e6c
2013-04-29 09:06:04,373 INFO
[Thread-1-SendThread(ip-10-68-135-50.ec2.internal:2181)] zookeeper.ClientCnxn
(ClientCnxn.java:logStartConnect(966)) - Opening socket connection to server
ip-10-68-135-50.ec2.internal/10.68.135.50:2181. Will not attempt to
authenticate using SASL (Impossible de trouver une configuration de connexion)
2013-04-29 09:06:04,380 INFO
[Thread-1-SendThread(ip-10-68-135-50.ec2.internal:2181)] zookeeper.ClientCnxn
(ClientCnxn.java:primeConnection(849)) - Socket connection established to
ip-10-68-135-50.ec2.internal/10.68.135.50:2181, initiating session
2013-04-29 09:06:04,391 INFO
[Thread-1-SendThread(ip-10-68-135-50.ec2.internal:2181)] zookeeper.ClientCnxn
(ClientCnxn.java:onConnected(1207)) - Session establishment complete on server
ip-10-68-135-50.ec2.internal/10.68.135.50:2181, sessionid = 0x13e55e55e6e000e,
negotiated timeout = 180000
340 sec: 1158239 operations; 2702,52 current ops/sec; [INSERT
AverageLatency(us)=39,33]
350 sec: 1158239 operations; 0 current ops/sec;
360 sec: 1158239 operations; 0 current ops/sec;
370 sec: 1158239 operations; 0 current ops/sec;
380 sec: 1158239 operations; 0 current ops/sec;
390 sec: 1158239 operations; 0 current ops/sec;
400 sec: 1244879 operations; 8659,67 current ops/sec; [INSERT
AverageLatency(us)=790,06]
410 sec: 1326959 operations; 8203,9 current ops/sec; [INSERT
AverageLatency(us)=52,75]
420 sec: 1326959 operations; 0 current ops/sec;
430 sec: 1326959 operations; 0 current ops/sec;
440 sec: 1326959 operations; 0 current ops/sec;
450 sec: 1326959 operations; 0 current ops/sec;
460 sec: 1326959 operations; 0 current ops/sec;
470 sec: 1349759 operations; 2279,09 current ops/sec; [INSERT
AverageLatency(us)=2868,24]
480 sec: 1527599 operations; 17775,11 current ops/sec; [INSERT
AverageLatency(us)=51,74]
490 sec: 1723679 operations; 19535,72 current ops/sec; [INSERT
AverageLatency(us)=47,81]
500 sec: 1924319 operations; 20015,96 current ops/sec; [INSERT
AverageLatency(us)=45,59]
510 sec: 2129519 operations; 20509,75 current ops/sec; [INSERT
AverageLatency(us)=44,74]
520 sec: 2307359 operations; 17776,89 current ops/sec; [INSERT
AverageLatency(us)=52,51]
530 sec: 2476079 operations; 16813,15 current ops/sec; [INSERT
AverageLatency(us)=55,7]
540 sec: 2647330 operations; 17099,45 current ops/sec; [INSERT
AverageLatency(us)=54,69]
550 sec: 2831759 operations; 18435,53 current ops/sec; [INSERT
AverageLatency(us)=45,4]
560 sec: 2831759 operations; 0 current ops/sec;
570 sec: 2831759 operations; 0 current ops/sec;
580 sec: 2831759 operations; 0 current ops/sec;
590 sec: 2831759 operations; 0 current ops/sec;
600 sec: 2831759 operations; 0 current ops/sec;
610 sec: 2831759 operations; 0 current ops/sec;
620 sec: 2963999 operations; 13217,39 current ops/sec; [INSERT
AverageLatency(us)=532,02]
630 sec: 2973119 operations; 911,64 current ops/sec; [INSERT
AverageLatency(us)=47,38]
640 sec: 2973119 operations; 0 current ops/sec;
650 sec: 2973119 operations; 0 current ops/sec;
660 sec: 2973119 operations; 0 current ops/sec;
670 sec: 2973119 operations; 0 current ops/sec;
680 sec: 2973119 operations; 0 current ops/sec;
^[( 690 sec: 2977679 operations; 455,77 current ops/sec; [INSERT
AverageLatency(us)=14205,62]
700 sec: 2977679 operations; 0 current ops/sec;
710 sec: 2977679 operations; 0 current ops/sec;
720 sec: 3005039 operations; 2734,63 current ops/sec; [INSERT
AverageLatency(us)=1225,72]
730 sec: 3032399 operations; 2734,63 current ops/sec; [INSERT
AverageLatency(us)=185,11]
740 sec: 3032399 operations; 0 current ops/sec;
750 sec: 3032399 operations; 0 current ops/sec;
760 sec: 3032399 operations; 0 current ops/sec;
770 sec: 3032399 operations; 0 current ops/sec;
780 sec: 3032399 operations; 0 current ops/sec;
790 sec: 3064319 operations; 3190,72 current ops/sec; [INSERT
AverageLatency(us)=2069,81]
800 sec: 3260399 operations; 19598,2 current ops/sec; [INSERT
AverageLatency(us)=47,44]
810 sec: 3442799 operations; 18230,88 current ops/sec; [INSERT
AverageLatency(us)=50,83]
820 sec: 3620639 operations; 17776,89 current ops/sec; [INSERT
AverageLatency(us)=52,08]
830 sec: 3757439 operations; 13673,16 current ops/sec; [INSERT
AverageLatency(us)=58,18]
{noformat}
With 6295
{noformat}
10 sec: 71333 operations; 7126,17 current ops/sec; [INSERT
AverageLatency(us)=133,8]
20 sec: 159599 operations; 8823,07 current ops/sec; [INSERT
AverageLatency(us)=95,37]
30 sec: 212639 operations; 5301,35 current ops/sec; [INSERT
AverageLatency(us)=191,39]
40 sec: 284383 operations; 7171,53 current ops/sec; [INSERT
AverageLatency(us)=145,36]
50 sec: 348278 operations; 6386,31 current ops/sec; [INSERT
AverageLatency(us)=141,91]
60 sec: 453065 operations; 10473,46 current ops/sec; [INSERT
AverageLatency(us)=92,35]
70 sec: 552922 operations; 9981,71 current ops/sec; [INSERT
AverageLatency(us)=85,67]
80 sec: 654924 operations; 10195,1 current ops/sec; [INSERT
AverageLatency(us)=104,82]
90 sec: 779759 operations; 12478,51 current ops/sec; [INSERT
AverageLatency(us)=78,21]
100 sec: 779762 operations; 0,3 current ops/sec; [INSERT
AverageLatency(us)=343108,67]
110 sec: 913636 operations; 13380,71 current ops/sec; [INSERT
AverageLatency(us)=137,26]
120 sec: 1028664 operations; 11498,2 current ops/sec; [INSERT
AverageLatency(us)=85,91]
130 sec: 1141992 operations; 11310,18 current ops/sec; [INSERT
AverageLatency(us)=86,67]
140 sec: 1274264 operations; 13213,99 current ops/sec; [INSERT
AverageLatency(us)=70,65]
150 sec: 1412375 operations; 13783,53 current ops/sec; [INSERT
AverageLatency(us)=66,98]
160 sec: 1505215 operations; 9279,36 current ops/sec; [INSERT
AverageLatency(us)=103,44]
170 sec: 1630561 operations; 12529,59 current ops/sec; [INSERT
AverageLatency(us)=79,55]
180 sec: 1709829 operations; 7922,84 current ops/sec; [INSERT
AverageLatency(us)=122,32]
190 sec: 1739109 operations; 2926,54 current ops/sec; [INSERT
AverageLatency(us)=327,26]
200 sec: 1856100 operations; 11694,42 current ops/sec; [INSERT
AverageLatency(us)=76,57]
210 sec: 1965944 operations; 10978,91 current ops/sec; [INSERT
AverageLatency(us)=90,48]
220 sec: 2089603 operations; 12352,31 current ops/sec; [INSERT
AverageLatency(us)=82,49]
230 sec: 2160518 operations; 7090,08 current ops/sec; [INSERT
AverageLatency(us)=88,86]
240 sec: 2272941 operations; 11236,68 current ops/sec; [INSERT
AverageLatency(us)=115,35]
250 sec: 2367483 operations; 9450,42 current ops/sec; [INSERT
AverageLatency(us)=69,52]
260 sec: 2451594 operations; 8406,9 current ops/sec; [INSERT
AverageLatency(us)=148,02]
270 sec: 2554506 operations; 10286,06 current ops/sec; [INSERT
AverageLatency(us)=95,37]
280 sec: 2658804 operations; 10425,63 current ops/sec; [INSERT
AverageLatency(us)=93,62]
290 sec: 2711871 operations; 5304,05 current ops/sec; [INSERT
AverageLatency(us)=73,6]
300 sec: 2764352 operations; 5242,33 current ops/sec; [INSERT
AverageLatency(us)=271,32]
310 sec: 2776791 operations; 1243,15 current ops/sec; [INSERT
AverageLatency(us)=839,36]
320 sec: 2782455 operations; 566,12 current ops/sec; [INSERT
AverageLatency(us)=1764,07]
330 sec: 2907870 operations; 12530,22 current ops/sec; [INSERT
AverageLatency(us)=83,97]
340 sec: 3050598 operations; 14267,09 current ops/sec; [INSERT
AverageLatency(us)=60,58]
350 sec: 3153205 operations; 10255,57 current ops/sec; [INSERT
AverageLatency(us)=92,51]
360 sec: 3158971 operations; 576,37 current ops/sec; [INSERT
AverageLatency(us)=1880,05]
370 sec: 3186783 operations; 2779,81 current ops/sec; [INSERT
AverageLatency(us)=350,07]
380 sec: 3190037 operations; 325,14 current ops/sec; [INSERT
AverageLatency(us)=3147,28]
390 sec: 3282451 operations; 9240,48 current ops/sec; [INSERT
AverageLatency(us)=104,57]
400 sec: 3456366 operations; 17381,07 current ops/sec; [INSERT
AverageLatency(us)=53,3]
410 sec: 3576864 operations; 12046,19 current ops/sec; [INSERT
AverageLatency(us)=72,7]
420 sec: 3743489 operations; 16654,17 current ops/sec; [INSERT
AverageLatency(us)=60,94]
430 sec: 3929387 operations; 18580,51 current ops/sec; [INSERT
AverageLatency(us)=50,29]
440 sec: 4030892 operations; 10146,44 current ops/sec; [INSERT
AverageLatency(us)=85,66]
450 sec: 4167314 operations; 13635,38 current ops/sec; [INSERT
AverageLatency(us)=73,91]
460 sec: 4296216 operations; 12883,76 current ops/sec; [INSERT
AverageLatency(us)=75,24]
470 sec: 4431010 operations; 13474,01 current ops/sec; [INSERT
AverageLatency(us)=58,89]
480 sec: 4581058 operations; 14997,3 current ops/sec; [INSERT
AverageLatency(us)=75,31]
490 sec: 4657821 operations; 7672,46 current ops/sec; [INSERT
AverageLatency(us)=113,6]
500 sec: 4751360 operations; 9350,16 current ops/sec; [INSERT
AverageLatency(us)=109]
510 sec: 4760708 operations; 934,33 current ops/sec; [INSERT
AverageLatency(us)=1038,45]
520 sec: 4828627 operations; 6789,18 current ops/sec; [INSERT
AverageLatency(us)=139,98]
530 sec: 4948462 operations; 11977,51 current ops/sec; [INSERT
AverageLatency(us)=87,31]
540 sec: 5050637 operations; 10212,39 current ops/sec; [INSERT
AverageLatency(us)=91,17]
550 sec: 5121323 operations; 7060,13 current ops/sec; [INSERT
AverageLatency(us)=142,1]
560 sec: 5168196 operations; 4684,96 current ops/sec; [INSERT
AverageLatency(us)=207,26]
570 sec: 5253669 operations; 8227,26 current ops/sec; [INSERT
AverageLatency(us)=107,41]
580 sec: 5254516 operations; 84,67 current ops/sec; [INSERT
AverageLatency(us)=3862,3]
590 sec: 5408430 operations; 15374,49 current ops/sec; [INSERT
AverageLatency(us)=111,53]
600 sec: 5468717 operations; 6027,49 current ops/sec; [INSERT
AverageLatency(us)=121,72]
610 sec: 5488564 operations; 1983,71 current ops/sec; [INSERT
AverageLatency(us)=540]
620 sec: 5503674 operations; 1510,24 current ops/sec; [INSERT
AverageLatency(us)=586,2]
630 sec: 5580591 operations; 7688,62 current ops/sec; [INSERT
AverageLatency(us)=156,3]
640 sec: 5667381 operations; 8674,66 current ops/sec; [INSERT
AverageLatency(us)=114,85]
650 sec: 5824473 operations; 15701,35 current ops/sec; [INSERT
AverageLatency(us)=58,37]
660 sec: 5863498 operations; 3900,94 current ops/sec; [INSERT
AverageLatency(us)=186,93]
670 sec: 5867286 operations; 378,61 current ops/sec; [INSERT
AverageLatency(us)=1906,5]
680 sec: 5881480 operations; 1418,83 current ops/sec; [INSERT
AverageLatency(us)=969,62]
690 sec: 5918807 operations; 3730,83 current ops/sec; [INSERT
AverageLatency(us)=300,35]
700 sec: 5926122 operations; 731,13 current ops/sec; [INSERT
AverageLatency(us)=1207,91]
710 sec: 6115204 operations; 18900,64 current ops/sec; [INSERT
AverageLatency(us)=50,77]
720 sec: 6116016 operations; 80,26 current ops/sec; [INSERT
AverageLatency(us)=12618,78]
731 sec: 6168475 operations; 5043,65 current ops/sec; [INSERT
AverageLatency(us)=194,3]
741 sec: 6169493 operations; 99,1 current ops/sec; [INSERT
AverageLatency(us)=5123,27]
751 sec: 6206016 operations; 3518,25 current ops/sec; [INSERT
AverageLatency(us)=391,2]
761 sec: 6231541 operations; 2550,46 current ops/sec; [INSERT
AverageLatency(us)=467,12]
771 sec: 6252864 operations; 2131,23 current ops/sec; [INSERT
AverageLatency(us)=430,23]
781 sec: 6304020 operations; 5104,88 current ops/sec; [INSERT
AverageLatency(us)=202,38]
791 sec: 6328025 operations; 2399,54 current ops/sec; [INSERT
AverageLatency(us)=368,89]
801 sec: 6337032 operations; 900,25 current ops/sec; [INSERT
AverageLatency(us)=1175,08]
812 sec: 6345672 operations; 863,57 current ops/sec; [INSERT
AverageLatency(us)=1005,39]
822 sec: 6369258 operations; 2339,88 current ops/sec; [INSERT
AverageLatency(us)=409,83]
832 sec: 6380343 operations; 1107,95 current ops/sec; [INSERT
AverageLatency(us)=763,3]
842 sec: 6391880 operations; 1153,24 current ops/sec; [INSERT
AverageLatency(us)=1177,43]
852 sec: 6460288 operations; 6837,38 current ops/sec; [INSERT
AverageLatency(us)=143,37]
862 sec: 6465474 operations; 504,82 current ops/sec; [INSERT
AverageLatency(us)=1027,68]
872 sec: 6496268 operations; 3078,17 current ops/sec; [INSERT
AverageLatency(us)=296,25]
882 sec: 6531310 operations; 3502,45 current ops/sec; [INSERT
AverageLatency(us)=439,09]
892 sec: 6541217 operations; 990,2 current ops/sec; [INSERT
AverageLatency(us)=873,16]
{noformat}
So, in this test
- We nearly twice faster (for some tests the gap was not that huge, but still
over 80%).
- We don't have period of 20s or more where we do nothing (hence that's likely
why we're twice faster at the end).
Bad news beeing:
- it crashes a lot, whatever the version (plain trunk or trunk with 6295).
> Possible performance improvement in client batch operations: presplit and
> send in background
> --------------------------------------------------------------------------------------------
>
> Key: HBASE-6295
> URL: https://issues.apache.org/jira/browse/HBASE-6295
> Project: HBase
> Issue Type: Improvement
> Components: Client, Performance
> Affects Versions: 0.95.2
> Reporter: Nicolas Liochon
> Assignee: Nicolas Liochon
> Labels: noob
> Attachments: 6295.v1.patch, 6295.v2.patch, 6295.v3.patch,
> 6295.v4.patch
>
>
> today batch algo is:
> {noformat}
> for Operation o: List<Op>{
> add o to todolist
> if todolist > maxsize or o last in list
> split todolist per location
> send split lists to region servers
> clear todolist
> wait
> }
> {noformat}
> We could:
> - create immediately the final object instead of an intermediate array
> - split per location immediately
> - instead of sending when the list as a whole is full, send it when there is
> enough data for a single location
> It would be:
> {noformat}
> for Operation o: List<Op>{
> get location
> add o to todo location.todolist
> if (location.todolist > maxLocationSize)
> send location.todolist to region server
> clear location.todolist
> // don't wait, continue the loop
> }
> send remaining
> wait
> {noformat}
> It's not trivial to write if you add error management: retried list must be
> shared with the operations added in the todolist. But it's doable.
> It's interesting mainly for 'big' writes
--
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