[
https://issues.apache.org/jira/browse/HBASE-5945?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
stack updated HBASE-5945:
-------------------------
Attachment: with_patch.png
without_patch.png
Here are results running little benchmark on end of TestIPC in its main.
It sets up the rpc doing a little echo protocol. The echo copies the cells
it receives onto the response. On cmdline say how many cycles and how many
columns. I made Cell size be about 10k and ran the test adding 10 Cells per
iteration so we are sending back and forth about 100k. This approximates a
small to medium-sized mult call. I cycled 10k times. Below are the test done
twice.
With patch, the test finishes a little sooner... about 5-10% sooner.
I ran visualvm over a minute+ against each at about same stage in test.
Without patch we use more CPU and do more GC -- just over 36% CPU vs 33% or so
and we do a bit more GC'ing... 4.1% or so vs 3.4% or so. W/o the patch, more
heap is used. See pictures. Patch seems to be improvement.
WITHOUT PATCH
durruti:hbase.git stack$ for i in 1 2 3 4 5; do time ./bin/hbase
-Dhbase.defaults.for.version.skip=true org.apache.hadoop.hbase.ipc.TestIPC
100000 10 &> /tmp/wopatch.$i.txt; done
real 0m42.843s
user 0m43.902s
sys 0m17.495s
real 0m43.357s
user 0m46.050s
sys 0m17.712s
real 0m42.595s
user 0m44.179s
sys 0m17.448s
real 0m43.320s
user 0m45.578s
sys 0m17.736s
real 0m42.647s
user 0m44.845s
sys 0m17.583s
... and again
real 0m45.868s
user 0m46.522s
sys 0m18.776s
real 0m42.764s
user 0m44.505s
sys 0m17.447s
real 0m43.080s
user 0m45.445s
sys 0m17.585s
real 0m43.261s
user 0m45.246s
sys 0m17.722s
real 0m42.592s
user 0m44.102s
sys 0m17.333s
WITH PATCH
durruti:hbase.git stack$ for i in 1 2 3 4 5; do time ./bin/hbase
-Dhbase.defaults.for.version.skip=true org.apache.hadoop.hbase.ipc.TestIPC
100000 10 &> /tmp/wpatch.$i.txt; done
real 0m38.838s
user 0m40.415s
sys 0m18.765s
real 0m37.638s
user 0m39.246s
sys 0m18.408s
real 0m38.696s
user 0m40.169s
sys 0m18.700s
real 0m37.948s
user 0m39.403s
sys 0m18.682s
real 0m38.077s
user 0m39.519s
sys 0m18.571s
...and again.
real 0m43.888s
user 0m44.394s
sys 0m21.427s
real 0m40.311s
user 0m42.553s
sys 0m19.460s
real 0m38.489s
user 0m41.097s
sys 0m18.761s
real 0m38.252s
user 0m39.603s
sys 0m18.618s
real 0m38.066s
user 0m39.656s
sys 0m18.621s
> Reduce buffer copies in IPC server response path
> ------------------------------------------------
>
> Key: HBASE-5945
> URL: https://issues.apache.org/jira/browse/HBASE-5945
> Project: HBase
> Issue Type: Improvement
> Components: IPC/RPC
> Affects Versions: 0.95.2
> Reporter: Todd Lipcon
> Assignee: stack
> Fix For: 0.96.1
>
> Attachments: 5945-in-progress.2.1.patch, 5945-in-progress.2.patch,
> 5945-in-progress.patch, 5945v2.txt, 5945v4.txt, buffer-copies.txt,
> even-fewer-copies.txt, hbase-5495.txt, with_patch.png, without_patch.png
>
>
> The new PB code is sloppy with buffers and makes several needless copies.
> This increases GC time a lot. A few simple changes can cut this back down.
--
This message was sent by Atlassian JIRA
(v6.1#6144)