Details
-
Improvement
-
Resolution: Fixed
-
Minor
-
None
-
14163
Description
lctl set_param should have an option to set a parameter across multiple matched files in parallel. For instance, if you execute this lctl set_param command:
lctl set_param [parallel-option] ldlm.namespaces.*osc*.lru_size=clear
it should write "clear" to the files matching the given parameter pattern in parallel.
This enhancement is required to speed up clearing of Lustre caches. When there are many OSTs, executing
lctl set_param ldlm.namespaces.*.lru_size=clear
takes a long time, and there is no reason that the lru_size files can't be written to in parallel. Then the work can be done on each OST in parallel.
For example, with 16 OSTs, it takes 5.4 seconds to clear caches across all namespaces. This could be sped up by parallelizing the write to lru_size across the namespaces.
If this enhancement is added, then LU-3970 can also be resolved.
Attachments
Issue Links
- is related to
-
LU-3970 Add procfs interface for clearing lustre caches in parallel
-
- Resolved
-
I've attached a quick test script which demonstrates the performance difference between parallel and serial set_param when canceling unused locks across many namespaces by writing to lru_size. It also includes other functional tests of lctl set_param -p that I used as I was developing. I'm hoping there already exist enough tests in sanity.sh and others that will verify the {set,get,list}_param functionality.
I've also attached sample output from the test script showing the results of running it on a VM. In that sample output, a serial set_param took 4.175 seconds, while a parallel set_param took 0.401 seconds.