Details
Description
It would be good if "lfs df" would submit multiple OST_STATFS and MDT_STATFS RPCs in parallel to the servers, instead of submitting them sequentially and waiting on them one-at-a-time. This is done internally for statfs() calls, but lfs_df() is calling llapi_obd_statfs() for each MDT and OST separately and waiting for the result.
It should be possible to fork the lfs_df() process and submit these calls in parallel (up to some maximum thread limit, like "lfs find" is doing) so that the client can wait in parallel for slow servers, and it could make a good decision on how long to wait for slow replies before skipping them.
Since some users may depend on "lfs df" output being in numerical order, it would be necessary to buffer the individual llapi_obd_statfs() results in memory until all of them succeeded or timed out, at which time they can all be printed. It could either preserve the struct obd_statfs in memory, or render them into an ASCII output buffer and discard obd_statfs immediately to reduce memory usage.
Attachments
Issue Links
- is related to
-
LU-20212 FLR-EC: verify non-write RPCs do not block client
-
- Open
-