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

Lock ahead - Request extent locks from userspace

Details

    • New Feature
    • Resolution: Fixed
    • Major
    • Lustre 2.11.0
    • None
    • 17290

    Description

      At the recent developers conference, Jinshan proposed a different method of approaching the performance problems described in LU-6148.

      Instead of introducing a new type of LDLM lock matching, we'd like to make it possible for user space to explicitly request LDLM locks asynchronously from the IO.

      I've implemented a prototype version of the feature and will be uploading it for comments. I'll explain the state of the current version in a comment momentarily.

      Attachments

        1. anl_mpich_build_guide.txt
          18 kB
        2. cug paper.pdf
          714 kB
        3. lockahead_ladvise_mpich_patch
          30 kB
        4. LockAheadResults.docx
          516 kB
        5. LockAhead-TestReport.txt
          1.36 MB
        6. LUSTRE-LockAhead-140417-1056-170.pdf
          64 kB
        7. mmoore cug slides.pdf
          1.15 MB
        8. sle11_build_tools.tar.gz
          2.48 MB

        Issue Links

          Activity

            [LU-6179] Lock ahead - Request extent locks from userspace

            Oleg Drokin (green@whamcloud.com) merged in patch https://review.whamcloud.com/38179/
            Subject: LU-6179 llite: Remove last lockahead old compat
            Project: fs/lustre-release
            Branch: master
            Current Patch Set:
            Commit: 12a0c7b5944d9e48e38416c7cac2cde153e3148b

            gerrit Gerrit Updater added a comment - Oleg Drokin (green@whamcloud.com) merged in patch https://review.whamcloud.com/38179/ Subject: LU-6179 llite: Remove last lockahead old compat Project: fs/lustre-release Branch: master Current Patch Set: Commit: 12a0c7b5944d9e48e38416c7cac2cde153e3148b

            Patrick Farrell (farr0186@gmail.com) uploaded a new patch: https://review.whamcloud.com/38179
            Subject: LU-6179 llite: Remove last lockahead old compat
            Project: fs/lustre-release
            Branch: master
            Current Patch Set: 1
            Commit: d23ed5713d41b5d8c69a989bb2600d83bf701c31

            gerrit Gerrit Updater added a comment - Patrick Farrell (farr0186@gmail.com) uploaded a new patch: https://review.whamcloud.com/38179 Subject: LU-6179 llite: Remove last lockahead old compat Project: fs/lustre-release Branch: master Current Patch Set: 1 Commit: d23ed5713d41b5d8c69a989bb2600d83bf701c31

            Oleg Drokin (green@whamcloud.com) merged in patch https://review.whamcloud.com/38109/
            Subject: LU-6179 llite: remove LOCKAHEAD_OLD compatibility
            Project: fs/lustre-release
            Branch: master
            Current Patch Set:
            Commit: 5315db3f1066619d6effe4f778d2df3ad1ba738f

            gerrit Gerrit Updater added a comment - Oleg Drokin (green@whamcloud.com) merged in patch https://review.whamcloud.com/38109/ Subject: LU-6179 llite: remove LOCKAHEAD_OLD compatibility Project: fs/lustre-release Branch: master Current Patch Set: Commit: 5315db3f1066619d6effe4f778d2df3ad1ba738f

            Andreas Dilger (adilger@whamcloud.com) uploaded a new patch: https://review.whamcloud.com/38109
            Subject: LU-6179 llite: remove LOCKAHEAD_OLD compatibility
            Project: fs/lustre-release
            Branch: master
            Current Patch Set: 1
            Commit: f6bc909bfda5521454631a4985648e07c63137ee

            gerrit Gerrit Updater added a comment - Andreas Dilger (adilger@whamcloud.com) uploaded a new patch: https://review.whamcloud.com/38109 Subject: LU-6179 llite: remove LOCKAHEAD_OLD compatibility Project: fs/lustre-release Branch: master Current Patch Set: 1 Commit: f6bc909bfda5521454631a4985648e07c63137ee
            pjones Peter Jones added a comment -

            Landed for 2.11

            pjones Peter Jones added a comment - Landed for 2.11

            Oleg Drokin (oleg.drokin@intel.com) merged in patch https://review.whamcloud.com/13564/
            Subject: LU-6179 llite: Implement ladvise lockahead
            Project: fs/lustre-release
            Branch: master
            Current Patch Set:
            Commit: a8dcf372f430c308d3e96fb506563068d0a80c2d

            gerrit Gerrit Updater added a comment - Oleg Drokin (oleg.drokin@intel.com) merged in patch https://review.whamcloud.com/13564/ Subject: LU-6179 llite: Implement ladvise lockahead Project: fs/lustre-release Branch: master Current Patch Set: Commit: a8dcf372f430c308d3e96fb506563068d0a80c2d

            Oh. Hm. No - It's skipping some of the tests. Sorry about that, thanks for pointing it out. Some development stuff I was doing escaped in to what I pushed upstream... I'll fix that when I rebase to merge.

            paf Patrick Farrell (Inactive) added a comment - Oh. Hm. No - It's skipping some of the tests. Sorry about that, thanks for pointing it out. Some development stuff I was doing escaped in to what I pushed upstream... I'll fix that when I rebase to merge.

            Patrick, the new test 255c in sanity.sh reports the following:

            == sanity test 255c: suite of ladvise lockahead tests ================================================ 04:54:04 (1495688044) Starting test test10 at 1495688045
            Finishing test test10 at 1495688045
            Starting test test20 at 1495688045
            cannot give advice: Invalid argument (22)
            cannot give advice: Invalid argument (22)
            cannot give advice: Invalid argument (22)
            cannot give advice: Invalid argument (22)
            cannot give advice: Invalid argument (22)
            cannot give advice: Invalid argument (22)
            Finishing test test20 at 1495688045
            
            

            Is that expected or test isn't working properly?

            This is from the latest test results https://testing.hpdd.intel.com/sub_tests/38e1f10a-4129-11e7-91f4-5254006e85c2

             

            tappro Mikhail Pershin added a comment - Patrick, the new test 255c in sanity.sh reports the following: == sanity test 255c: suite of ladvise lockahead tests ================================================ 04:54:04 (1495688044) Starting test test10 at 1495688045 Finishing test test10 at 1495688045 Starting test test20 at 1495688045 cannot give advice: Invalid argument (22) cannot give advice: Invalid argument (22) cannot give advice: Invalid argument (22) cannot give advice: Invalid argument (22) cannot give advice: Invalid argument (22) cannot give advice: Invalid argument (22) Finishing test test20 at 1495688045 Is that expected or test isn't working properly? This is from the latest test results https://testing.hpdd.intel.com/sub_tests/38e1f10a-4129-11e7-91f4-5254006e85c2  

            Hi Patrick,

            In the very simple test you suggested, the lock count does increase from 0 to 4010, so the lock ahead works well.
            Yes, a faster OST should show more benefits.

            czx0003 Cong Xu (Inactive) added a comment - Hi Patrick, In the very simple test you suggested, the lock count does increase from 0 to 4010, so the lock ahead works well. Yes, a faster OST should show more benefits.

            Huh, OK! That's a clever way to show it.

            A faster OST will show much larger benefits, of course.

            paf Patrick Farrell (Inactive) added a comment - Huh, OK! That's a clever way to show it. A faster OST will show much larger benefits, of course.

            Hi Patrick,

            Thanks for the great suggestions! We conducted more tests recently and was able to demonstrate the power of Lock Ahead in test "2.3 Vary Lustre Stripe Size (Independent I/O)".

            In this test, the transfer size of each process is configured to be 1MB and the stripe size grows from 256KB to 16MB. When the stripe size equals to 16MB, 16 processes write a single stripe simultaneously, leading to lock contention issues. In this test, Lock Ahead code performs 21.5% better than original code.

            czx0003 Cong Xu (Inactive) added a comment - Hi Patrick, Thanks for the great suggestions! We conducted more tests recently and was able to demonstrate the power of Lock Ahead in test "2.3 Vary Lustre Stripe Size (Independent I/O)". In this test, the transfer size of each process is configured to be 1MB and the stripe size grows from 256KB to 16MB. When the stripe size equals to 16MB, 16 processes write a single stripe simultaneously, leading to lock contention issues. In this test, Lock Ahead code performs 21.5% better than original code.

            People

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

              Dates

                Created:
                Updated:
                Resolved: