During GC cleanup G1 scrubs the entire remembered set, i.e. removes stale remembered set entries.
This can take a while for large remembered sets, and lengthens the GC cleanup pause a lot.
Conceptually it is not necessary to do this RSet scrubbing in the GC cleanup pause - presumably it is currently done there because after marking completed, you get the most gain out of this.
It could be done concurrently to the mutator or incrementally in other pauses.
Think of ways to distribute this work across mutator or gc time.