darshan-hpc / darshan

Darshan I/O characterization tool
Other
55 stars 27 forks source link

WIP: enhanced Lustre module #991

Open shanedsnyder opened 1 month ago

shanedsnyder commented 1 month ago

This PR revamps Darshan's Lustre module to account for new Lustre features, including progressive file layouts (PFL), file level redundancy (FLR), data-on-MDT (DOM), and self extending layouts (SEL).

This update is mainly to modify Lustre file records so that they can describe multi-component Lustre layouts. To support this, Lustre module file records now have the following format:

   base_record; # Darshan record ID + rank
   num_comps; # number of Lustre components
   comp_list; # list of fixed-length component descriptions
   ost_list; # list of OST IDs associated with components above

For each component, Darshan collects the following parameters:

    STRIPE_SIZE
    STRIPE_WIDTH
    STRIPE_PATTERN  /* e..g, RAID0 (for traditional striping), MDT (for data-on-MDT), etc. */
    FLAGS  /* e.g., "init", "stale", "preferrd", "preferwr", etc. */
    EXT_START  /* starting extent */
    EXT_END  /* ending extent */
    MIRROR_ID
    POOL_NAME

We are using essentially the same Lustre API we have used in recent versions for querying striping info (i.e., llapi_layout_get_by_xattr(), llapi_layout_stripe_size_get(), etc.), but we have updated this code to be aware that file layouts are composed of 1 or more components (i.e., using llapi_layout_comp_use()) and to query more info (e.g., llapi_layout_comp_extent_get()).

Some more detailed comments on these changes:

PR is marked WIP until the following is resolved: