[LU-7128] Performance improvements for out_read() Created: 10/Sep/15  Updated: 10/Sep/15

Status: Open
Project: Lustre
Component/s: None
Affects Version/s: Lustre 2.8.0
Fix Version/s: None

Type: New Feature Priority: Minor
Reporter: Di Wang Assignee: WC Triage
Resolution: Unresolved Votes: 0
Labels: None

Issue Links:
Related
is related to LU-6741 OSP should use inline data for small ... Resolved
Severity: 3
Rank (Obsolete): 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.



 Comments   
Comment by Alex Zhuravlev [ 10/Sep/15 ]

both osd_read() and all forms of write operate on the same cache, so I don't expect any cache coherency issues. races are possible if no external locking is used, but this is normal.
OSP can be doing read-ahead to improve performance. also, I think the right approach to this (and other issues related to llog) is to reconsider llog format.

Generated at Sat Feb 10 02:06:14 UTC 2024 using Jira 9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c.