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

Connect readahead to prep_partial_page to improve small (< 1 page) write performance

Details

    • Bug
    • Resolution: Fixed
    • Minor
    • Lustre 2.11.0
    • None
    • 3
    • 9223372036854775807

    Description

      When writing to a region of a file less than file size (either an already existing file or a shared file with multiple writers), writes of less than one page in size must first read in that page.

      This results in extremely poor performance. For the random I/O case, there's no easy improvements available, but the sequential case can benefit enormously by using readahead to bring in those pages.

      This can be done by using the normal read code w/readahead from the ll_prepare_partial_page function. This works well in the sequential case (3-10x performance improvement) and has no effect on the random case.

      Patch & benchmark #s forthcoming shortly.

      Attachments

        Issue Links

          Activity

            [LU-9618] Connect readahead to prep_partial_page to improve small (< 1 page) write performance

            Minh Diep (minh.diep@intel.com) uploaded a new patch: https://review.whamcloud.com/31012
            Subject: LU-9618 clio: Use readahead for partial page write
            Project: fs/lustre-release
            Branch: b2_10
            Current Patch Set: 1
            Commit: bf77ac10092f22bfbae5873cc3c87425ccb8444c

            gerrit Gerrit Updater added a comment - Minh Diep (minh.diep@intel.com) uploaded a new patch: https://review.whamcloud.com/31012 Subject: LU-9618 clio: Use readahead for partial page write Project: fs/lustre-release Branch: b2_10 Current Patch Set: 1 Commit: bf77ac10092f22bfbae5873cc3c87425ccb8444c
            pjones Peter Jones added a comment -

            ok sounds good. Your review of the LU-8964 patch would be much appreciated.

            pjones Peter Jones added a comment - ok sounds good. Your review of the LU-8964 patch would be much appreciated.

            Ah, no, it's fine. It's just a little complicated - LU-8964 removes the readahead code in Lustre, which this patch uses. Once LU-8964 lands, either as part of that landing or later, the code from this patch will have to be modified to use the kernel readahead infrastructure so we can keep this feature. My musing was about how best to do that. (But we can't make that change to this patch until LU-8964 lands.)

            Does that make sense? It's probably on Dmitry to fix it as part of landing LU-8964 now, but I can help too as desired.

            Short version:
            This patch introduces an additional user of code LU-8964 will remove. So the code this patch changed will have to be modified when LU-8964 lands. My musing was on how to do that.

            paf Patrick Farrell (Inactive) added a comment - Ah, no, it's fine. It's just a little complicated - LU-8964 removes the readahead code in Lustre, which this patch uses. Once LU-8964 lands, either as part of that landing or later, the code from this patch will have to be modified to use the kernel readahead infrastructure so we can keep this feature. My musing was about how best to do that. (But we can't make that change to this patch until LU-8964 lands.) Does that make sense? It's probably on Dmitry to fix it as part of landing LU-8964 now, but I can help too as desired. Short version: This patch introduces an additional user of code LU-8964 will remove. So the code this patch changed will have to be modified when LU-8964 lands. My musing was on how to do that.
            pjones Peter Jones added a comment -

            Patrick

            As you will have seen this has landed to master. I saw your most recent musings in gerrit and wondered if you are ok with this or would prefer this reverted while you think some more?

            Peter

            pjones Peter Jones added a comment - Patrick As you will have seen this has landed to master. I saw your most recent musings in gerrit and wondered if you are ok with this or would prefer this reverted while you think some more? Peter

            Oleg Drokin (oleg.drokin@intel.com) merged in patch https://review.whamcloud.com/27544/
            Subject: LU-9618 clio: Use readahead for partial page write
            Project: fs/lustre-release
            Branch: master
            Current Patch Set:
            Commit: b7d38ece00135e74a627a9702d6dadff10c3c89d

            gerrit Gerrit Updater added a comment - Oleg Drokin (oleg.drokin@intel.com) merged in patch https://review.whamcloud.com/27544/ Subject: LU-9618 clio: Use readahead for partial page write Project: fs/lustre-release Branch: master Current Patch Set: Commit: b7d38ece00135e74a627a9702d6dadff10c3c89d

            Patrick Farrell (paf@cray.com) uploaded a new patch: https://review.whamcloud.com/27544
            Subject: LU-9618 clio: Use readahead for partial page write
            Project: fs/lustre-release
            Branch: master
            Current Patch Set: 1
            Commit: 1b9d2d4a523fc7d02245864942246fef7b92e3c5

            gerrit Gerrit Updater added a comment - Patrick Farrell (paf@cray.com) uploaded a new patch: https://review.whamcloud.com/27544 Subject: LU-9618 clio: Use readahead for partial page write Project: fs/lustre-release Branch: master Current Patch Set: 1 Commit: 1b9d2d4a523fc7d02245864942246fef7b92e3c5

            People

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

              Dates

                Created:
                Updated:
                Resolved: