> What is the best way to profile some co-processor code (running on the > regionserver)? If you have done it successfully, what tips can you > offer, and what unexpected problems did you encounter? >
It depends on what exactly you want to look at, but ultimately I don't think it's too different from profiling any other remote java process. I did a fair amount of profiling of the AccessController coprocessor, and the general process I used was: 0) bring up a cluster with my cp configuration (obviously) 1) find a specific table region I was interested in 2) manually assign this region to a given region server -- you may also want to disable balancing so that your region stays put ("balance_switch false" in the shell) 3) attach your profiler to the region server 4) run your target load Only problem I ran into was that I had to hack up the hbase shell script a little bit to disable the CMS collector -- the profiler didn't work with CMS. --gh