Uploaded image for project: 'Lustre'
  1. Lustre
  2. LU-10619

Tiny writes improvement: Size + glimpse changes

    XMLWordPrintable

Details

    • Improvement
    • Resolution: Unresolved
    • Minor
    • None
    • Lustre 2.11.0
    • None
    • 3
    • 9223372036854775807

    Description

      The current tiny writes code (LU-9409) updates the size for each OSC object. Skipping this nets about a 15% performance improvement, probably more (maybe a lot more) for shared file writing.

      As suggested by Jinshan in https://review.whamcloud.com/#/c/27903/, we could likely skip this by changing how size works on the client.

      Specifically, we would update size only at the upper layer at the end of tiny writes - ll_tiny_write_end - storing the size in llite and doing i_size_write (because the kernel uses inode size outside of Lustre). We would have to rewrite osc_glimpse and possibly the getattr/setattr code to do the modified size handling correctly.

      Notes from Jinshan:
      "this still has significant overhead for tiny write. Have you thought about extending osc_refresh_count() -> cl_object_attr_get() to get size info from LLITE layer, therefore you don't need to call this function every single time.

      about osc_refresh_count(): when writing the last page to the OST, it needs to figure out the file size so that it knows how much data is valid in the last page. This is why OSC needs to call the function to 'refresh' count. LLITE always has uptodate file size for write therefore it doesn't need to keep the object size uptodate at OSC layer.

      Of course, if you would like to do it as I said, you need to fix osc_object_glimpse() too because the size in oinfo is not uptodate."

      Attachments

        Issue Links

          Activity

            People

              paf Patrick Farrell (Inactive)
              paf Patrick Farrell (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated: