We have an experimental feature with GemFire to automate the rebalance process. This can be especially useful when using many sessions type regions that come and go.
Our documentation does describe this, so this KB article simply provides a link to the related documentation:
You can configure how frequently to run Rebalance and, using that schedule, you can determine that a Rebalance is not necessary if the data is already relatively balanced when using the configured criteria.
This is certainly worth considering - to keep the data within GemFire balanced, thus preventing many issues that can occur with load and resource exhaustion if all clients are attempting to access some subset of the servers due to any imbalance.
Another technique that requires more consideration is to determine whether it would make more sense to balance all of your partitioned regions by Bucket Count versus data size. Please read the related article below as well to determine what options may work best for your use case: