[LU-11657] Prefetch whole ZFS block into client cache on random read Created: 11/Nov/18 Updated: 17/Mar/22 |
|
| Status: | Open |
| Project: | Lustre |
| Component/s: | None |
| Affects Version/s: | Lustre 2.13.0 |
| Fix Version/s: | None |
| Type: | Improvement | Priority: | Minor |
| Reporter: | Andreas Dilger | Assignee: | WC Triage |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Issue Links: |
|
||||||||||||
| Rank (Obsolete): | 9223372036854775807 | ||||||||||||
| Description |
|
When doing random read IOPS to a ZFS-backed OST, the ZFS code will read the whole ZFS block from disk in order to do data checksum verification on the whole block. We may as well align the client read to the ZFS blocksize and fetch the whole ZFS block into client RAM so that the client could re-use those blocks if the file is small enough to fit into RAM. That avoids extra IO on the server that is not being used. |
| Comments |
| Comment by Wang Shilong (Inactive) [ 15/Jul/19 ] |
|
Andreas, Is there will be some interface to control for this something likely in LU-11416? I am little worried if we always do this, this could cause many pages read but discard if file size is large. |
| Comment by Andreas Dilger [ 16/Jul/19 ] |
|
There was a proposal to use "lfs ladvise" to tell the OST what blocksize to use when writing a file with random chunks, so that the on-disk blocksize matches the application chunk size. Perhaps something similar can be used for reading the file? |