In the attached log (refinement.tar.bz2) we see a number of places where there is a surprising sequence of deactivations of concurrent refinment threads even though there are many buffers available (far more than the reported deactivation threshold), followed quickly by reactivations of those same threads.
Unnecessary cycling between active and inactive is wasteful of cycles.
More importantly, the unusual deactivations seem be related to requests to pause concurrent refinement in order to initiate a collection pause, and this state cycling may be delaying that desired GC pause.
The attached script (find_unusual_deactivation_activation_seq.py) can be applied to a log made with -Xlog:gc*,gc+refine=debug to print the first of each problematic deactivations.