[
https://issues.apache.org/jira/browse/HADOOP-10286?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Erik Krogen updated HADOOP-10286:
---------------------------------
Status: Patch Available (was: Open)
Since it looks like this has been abandoned, I'm going to go ahead and take it
up ([~chrilisf] - please let me know if you have any qualms with this). I'm
attaching a v001 patch which extends the original work:
* Adds the ability to specify different client user names to use, and how many
threads to use for each of those user names. This allows us to emulate, for
example, a heavy user's impact on many lighter users.
* Wraps the proxy invocation in a RetryInvocationHandler so that it is possible
to enable IPC backoff and not have the benchmark immediately fail when a
backoff request is received.
* Adds percentile latency information via
[HdrHistogram|https://github.com/HdrHistogram/HdrHistogram].
I'm hoping to use something similar to this to demonstrate the viability of
approaches similar to those proposed in HADOOP-15016. For now, I was able to
use this benchmark to demonstrate the efficacy of IPC backoff in combination
with {{FairCallQueue}}:
{code}
> for backoff in false true; do echo "Backoff: ${backoff}";
> $HADOOP_HOME/bin/hadoop org.apache.hadoop.ipc.RPCCallBenchmark
> -Dipc.9000.callqueue.impl=org.apache.hadoop.ipc.FairCallQueue
> -Dipc.9000.backoff.enable=${backoff} -p 9000 -r 4 -c 10 -s 5 -e protobuf -t
> 120 -u c1,c2,c3,c4,c5,c6,c7,c8,c9,cBig -T 50,50,50,50,50,50,50,50,50,1000
> 2>&1 | grep "Client #"; done
Backoff: false
Client #0 (c1) : 5628.09 calls/sec 7.93ms P50 Latency
10.64ms P90 Latency 52.95ms P99 Latency
Client #1 (c2) : 5639.62 calls/sec 8.11ms P50 Latency
10.94ms P90 Latency 59.24ms P99 Latency
Client #2 (c3) : 5616.79 calls/sec 8.11ms P50 Latency
10.92ms P90 Latency 56.92ms P99 Latency
Client #3 (c4) : 5626.38 calls/sec 7.95ms P50 Latency
10.63ms P90 Latency 42.66ms P99 Latency
Client #4 (c5) : 5624.99 calls/sec 8.69ms P50 Latency
15.84ms P90 Latency 68.42ms P99 Latency
Client #5 (c6) : 5665.82 calls/sec 8.12ms P50 Latency
10.87ms P90 Latency 23.13ms P99 Latency
Client #6 (c7) : 5653.36 calls/sec 8.14ms P50 Latency
10.95ms P90 Latency 62.13ms P99 Latency
Client #7 (c8) : 5611.25 calls/sec 8.12ms P50 Latency
10.90ms P90 Latency 54.53ms P99 Latency
Client #8 (c9) : 5616.34 calls/sec 8.14ms P50 Latency
10.94ms P90 Latency 56.92ms P99 Latency
Client #9 (cBig) : 99206.13 calls/sec 8.15ms P50 Latency
10.90ms P90 Latency 56.79ms P99 Latency
Backoff: true
Client #0 (c1) : 14072.36 calls/sec 1.37ms P50 Latency
2.88ms P90 Latency 9.91ms P99 Latency
Client #1 (c2) : 14087.66 calls/sec 1.36ms P50 Latency
2.70ms P90 Latency 9.86ms P99 Latency
Client #2 (c3) : 14152.81 calls/sec 1.38ms P50 Latency
3.50ms P90 Latency 10.02ms P99 Latency
Client #3 (c4) : 13889.88 calls/sec 1.37ms P50 Latency
2.84ms P90 Latency 10.02ms P99 Latency
Client #4 (c5) : 14282.52 calls/sec 1.37ms P50 Latency
2.80ms P90 Latency 9.92ms P99 Latency
Client #5 (c6) : 14041.97 calls/sec 1.36ms P50 Latency
2.72ms P90 Latency 9.85ms P99 Latency
Client #6 (c7) : 14271.91 calls/sec 1.38ms P50 Latency
3.81ms P90 Latency 10.08ms P99 Latency
Client #7 (c8) : 14073.15 calls/sec 1.37ms P50 Latency
2.81ms P90 Latency 9.90ms P99 Latency
Client #8 (c9) : 13917.20 calls/sec 1.37ms P50 Latency
2.80ms P90 Latency 10.02ms P99 Latency
Client #9 (cBig) : 38200.69 calls/sec 4.82ms P50 Latency
9.82ms P90 Latency 878.71ms P99 Latency
{code}
One currently outstanding issue is that HdrHistogram isn't copied into the
hadoop-dist tarball so you need to manually add it to the classpath to be able
to run {{RPCCallBenchmark}}. Since it is test-only, I don't think it makes
sense for it to end up in the {{share/lib/hadoop/common}} directory, and I'm
not really sure else it would belong, so I think the current approach might be
fine. Open to suggestions here, though.
> Allow RPCCallBenchmark to benchmark calls by different users
> ------------------------------------------------------------
>
> Key: HADOOP-10286
> URL: https://issues.apache.org/jira/browse/HADOOP-10286
> Project: Hadoop Common
> Issue Type: Sub-task
> Reporter: Chris Li
> Assignee: Erik Krogen
> Priority: Minor
> Attachments: HADOOP-10286.001.patch, HADOOP-10286.patch
>
>
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]