rpc: fix service lookup to use the proper lock type
rpc: fix service lookup to use the proper lock type

Looking up the RPC service in the service map was using an exclusive
lock rather than a per-CPU read-lock.

Fixing this yielded a ~5% improvement on the average throughput
of rpc-bench. I ran:

rpc-bench --server-reactors 96 --async-call-concurrency 100 \
  -worker-threads 40 -client-threads 48 -run-seconds 1 \
  --gtest_filter=\*Async --gtest_repeat=100 2>&1 | tee /tmp/log

before and after the change. Running 100 short benchmarks is preferable
to a long one since this benchmark has quite a bit of variability
depending on reactor thread hashing, etc. I grepped out the reqs/sec
number and then ran a t-test using R:

data:  d.before and d.after
t = -4.538, df = 165.27, p-value = 1.088e-05
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -59048.87 -23244.07
sample estimates:
mean of x mean of y
 785314.9  826461.4

Special thanks to Sergei Politov from Yugabyte for finding this.

Change-Id: I871765dffc5208dbdfc6b7f9f7fa2160611631b9
Reviewed-on: http://gerrit.cloudera.org:8080/8478
Tested-by: Kudu Jenkins
Reviewed-by: Alexey Serbin <864f6b82bd94e8dda64141d4274519ee66e0102e@cloudera.com>

InspurUSA/kudu,cloudera/kudu,cloudera/kudu,EvilMcJerkface/kudu,andrwng/kudu,InspurUSA/kudu,helifu/kudu,EvilMcJerkface/kudu,helifu/kudu,cloudera/kudu,andrwng/kudu,andrwng/kudu,helifu/kudu,InspurUSA/kudu,helifu/kudu,InspurUSA/kudu,helifu/kudu,EvilMcJerkface/kudu,EvilMcJerkface/kudu,cloudera/kudu,EvilMcJerkface/kudu,cloudera/kudu,helifu/kudu,InspurUSA/kudu,InspurUSA/kudu,andrwng/kudu,andrwng/kudu,EvilMcJerkface/kudu,cloudera/kudu,InspurUSA/kudu,cloudera/kudu,andrwng/kudu,andrwng/kudu,cloudera/kudu,EvilMcJerkface/kudu,EvilMcJerkface/kudu,helifu/kudu,InspurUSA/kudu,andrwng/kudu,helifu/kudu,helifu/kudu,EvilMcJerkface/kudu,cloudera/kudu,InspurUSA/kudu,andrwng/kudu