Details
-
Improvement
-
Resolution: Fixed
-
Major
-
Lustre 2.5.0
-
None
-
7025
Description
ldlm_poold wakes every second currently and walk list of all namespaces in the system doing some bookkeeping.
On systems with a lot of servers this client list gets quite large and it makes no sense to visit every namespace in the list if some of them don't actually have any locks.
As such I think it makes sense to only get ldlm_poold to iterate over non-empty client namespaces.
Estimates from Fujitsu indicate that on a system with 2000 OSTs just the list iteration (i.e. empty namespaces) takes 2ms which is probably excessive.
Oleg, in http://review.whamcloud.com/5624, why did you change the type of ldlm_srv_namespace_nr and ldlm_cli_namespace_nr from cfs_atomic_t to int?
Now when we call ldlm_namespace_nr_*, are we expected to be holding the ldlm_namespace_lock()?