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

Performance improvements for out_read()

    XMLWordPrintable

Details

    • New Feature
    • Resolution: Unresolved
    • Minor
    • None
    • Lustre 2.8.0
    • None
    • 3
    • 9223372036854775807

    Description

      To read update records, it needs to do bulk buffer read between MDTs (see out_read()), and because we use osd_write to write update records into the disk see osd_write, which will write directly to buffer, so we have to use osd_read to read buffer back. But that has performance issue,

      From Andreas

      This is submitting the reads to disk as a series of separate reads (i.e. a seek between each one) which is inefficient.
      This should use the same method ofd_preprw_read() and ofd_commitrw_read() does for reading - dt_bufs_get(), dt_read_prep(), dt_bufs_put(). That submits all the pages to be read at once and will avoid any seek if they are contiguous on disk.
      Unfortunately, the code layering makes it difficult to reuse or share any code with tgt_brw_read() since tgt_brw_read() calls into ofd_* while this calls directly into dt_*. At a minimum, this should copy the checks in tgt_brw_read() to see if the client is evicted so that it doesn't block waiting for sends that could never finish, and have a comment referencing tgt_brw_read() so that we know the code should be similar.
      

      But if we change the read to OST read style( use osd_read_prep etc), that might cause some cache conference issue.

      Attachments

        Issue Links

          Activity

            People

              wc-triage WC Triage
              di.wang Di Wang
              Votes:
              0 Vote for this issue
              Watchers:
              6 Start watching this issue

              Dates

                Created:
                Updated: