Hbal usually performs complex sequence of moves during cluster balancing in order to achieve local optimal cluster state. Unfortunately, each move may take significant amount of time. Thus, during the sequence of moves the situation on cluster may change (e.g., because of adding new instance or because of instance or node parameters change) and desired moves can become unprofitable.
Usually disk moves become a bottleneck and require sufficient amount of time. Instance move improvements considers disk moves speed in more details. Currently, hbal has a --no-disk-moves option preventing disk moves during cluster balancing in order to perform fast (but of course non optimal) balancing. It may be useful, but ideally we need to find a balance between optimal configuration and time to reach this configuration.
Allowing only profitable enough disk moves may become a first step to reach a compromise between moves speed and optimal scoring. This can be implemented by introducing --avoid-disk-moves *FACTOR* option which will admit disk moves only if the gain in the cluster metrics is FACTOR times higher than the gain achievable by non disk moves.