[
https://issues.apache.org/jira/browse/HBASE-15536?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15219295#comment-15219295
]
stack commented on HBASE-15536:
-------------------------------
Running this compare from HBASE-10156
{code}
$ for i in 1 3 5 10 25 50 100 200; do for j in 1; do perf stat ./bin/hbase
--config /home/stack/conf_hbase
org.apache.hadoop.hbase.wal.WALPerformanceEvaluation -threads $i -iterations
1000000 -keySize 50 -valueSize 100 &> "/tmp/nopatch2${i}.${j}.txt"; done; done
{code}
Here is table of completion times (I mangled recording 200 threads w/ no patch):
||Threads||Defaul||Async||Diff||
|1|837|228|3.7x|
|3|647|274|2.4x|
|5|609|310|2x|
|10|916|376|2.5x|
|25|1177|556|2.1x|
|50|1463|828|1.8x|
|100|1902|1382|1.4x|
|200|-|2445|-|
Comparing perf stat for ten threads, you can see the async is doing less work.
Here is the default WAL provider stat output:
{code}
4016 Performance counter stats for './hbase/bin/hbase --config
/home/stack/conf_hbase org.apache.hadoop.hbase.wal.WALPerformanceEvaluation
-threads 10 -iterations 1000000 -keySize 50 -valueSize 100':
4017
4018 3473402.908284 task-clock (msec) # 3.791 CPUs utilized
4019 79,614,165 context-switches # 0.023 M/sec
4020 4,927,049 cpu-migrations # 0.001 M/sec
4021 1,390,882 page-faults # 0.400 K/sec
4022 7,457,646,572,542 cycles # 2.147 GHz
4023 <not supported> stalled-cycles-frontend
4024 <not supported> stalled-cycles-backend
4025 2,088,450,796,192 instructions # 0.28 insns per cycle
4026 340,979,920,761 branches # 98.169 M/sec
4027 5,330,989,389 branch-misses # 1.56% of all branches
4028
4029 916.241768049 seconds time elapsed
{code}
Here is running with async enabled:
{code}
1050 Performance counter stats for './hbase/bin/hbase --config
/home/stack/conf_hbase org.apache.hadoop.hbase.wal.WALPerformanceEvaluation
-threads 10 -iterations 1000000 -keySize 50 -valueSize 100':
1051
1052 2624320.161261 task-clock (msec) # 6.964 CPUs utilized
1053 13,097,786 context-switches # 0.005 M/sec
1054 202,869 cpu-migrations # 0.077 K/sec
1055 968,708 page-faults # 0.369 K/sec
1056 6,814,056,657,994 cycles # 2.597 GHz
1057 <not supported> stalled-cycles-frontend
1058 <not supported> stalled-cycles-backend
1059 1,577,447,250,139 instructions # 0.23 insns per cycle
1060 244,194,003,573 branches # 93.050 M/sec
1061 2,927,181,625 branch-misses # 1.20% of all branches
1062
1063 376.825234068 seconds time elapsed
{code}
80M context-switches vs 13M, 7.5B cycles vs 6.8B. There is loads of work to be
done in here -- our numbers for ins per cycle are pretty abysmal -- but seems
like clear benefit to running async provider though it doesn't look much when
you look at macro-level with YCSB load with 50 threads.
> Make AsyncFSWAL as our default WAL
> ----------------------------------
>
> Key: HBASE-15536
> URL: https://issues.apache.org/jira/browse/HBASE-15536
> Project: HBase
> Issue Type: Sub-task
> Reporter: Duo Zhang
>
> As it should be predicated on passing basic cluster ITBLL
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)