Description
For distributed load balance of client-side LMV operations such as df/statfs() (lmv_select_statfs_mdt()) and DNE3 MDT mkdir balancing (lmv_qos_rr_index), the clients currently use the hash/modulo of their first NID to provide a decentralized mechanism to distribute clients across all configured MDTs.
In general this mechanism works reasonably well, but in some cases can produce pathalogical results (e.g. if each client has 8 network interfaces and the interface assigned a Lustre NID are all multiples of 8).
To combat such aliasing issues, one option would be to assign each new client connection a sequential integer from MDT0000 to provide a more uniformly distributed index number that can be used to distribute the client RPCs across MDTs (or other items). While this may suffer from other types of aliasing (e.g. if the first node from each rack is assigned to a job), it is likely to provide more uniform distribution than purely the NID value.