-
Notifications
You must be signed in to change notification settings - Fork 302
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
patches series for dfuse #15645
base: google/2.6
Are you sure you want to change the base?
patches series for dfuse #15645
Conversation
When dfuse sees I/O as well-aligned 128k reads then read MB at a time and cache the result allowing for faster read bandwidth for well behaved applicaions and large files. Create a new in-memory descriptor for file contents, pull in a whole descriptor on first read and perform all other reads from the same result. This should give much higher bandwidth for well behaved applications and should be easy to extend to proper readahead in future. Signed-off-by: Ashley Pittman <[email protected]>
This only serves to add confusion at this point. Signed-off-by: Ashley Pittman <[email protected]>
Create a active_inode struct and allocate it for all inodes which have more than one open handle. This allows us to share state/caching data across open handles easier and to better support concurrent readers. Future work here will improve performance for concurrent readers when caching is used, and allow us to make the in-memory inode struct smaller which will save memory. Signed-off-by: Ashley Pittman [email protected]
Attach pre-read buffers to the inode rather than open file handle. This code was written with the idea that a client would open and read the file and that would populate the kernel cache however in practice there are often concurrent readers for the same file and what was happening was that the first-to-open was doing the pre-read but this was often not the first process to perform a read and furthermore often there would be multiple reads for the same regions, all of which would hit the network. Use the "active" entry on the inode to launch a pre-read on first open and have any request on any file handle use the pre-read buffer for replies if possible. In addition, when a read is to be serviced from the pre-read buffer but the data is not yet in memory rather than spinning on a lock consuming a fuse thread add a descriptor to a callback list so that the thread is released and the reply is made sooner when the data is available. This greatly reduces the number of duplicate network round-trip reads for workloads where multiple clients are trying to fetch the same data, something that we see a lot in some applications. Signed-off-by: Ashley Pittman [email protected]
From #15298 Handle concurrent read in the chunk_read code. Rather than assuming each slot only gets requested once save the slot number as part of the request and handle multiple requests. This corrects the behaviour and avoids a crash when multiple readers read the same file concurrently and improves the performance in this case. Required-githooks: true Signed-off-by: Ashley Pittman <[email protected]>
From #15528 If a read matches a current outstanding read then simply connect the two and when there's a reply from the network then respond to both requests. Ashley Pittman <[email protected]> Required-githooks: true
Fix a bug where linear read was not correctly saved to the directory. Improve the NLT testing of pre_read to not just invoke it but to use the statistics to verify correct operation. Required-githooks: true Signed-off-by: Ashley Pittman <[email protected]>
Add readahead RPC in the open read list earlier to make sure the following read will not send duplicate RPC. Required-githooks: true Signed-off-by: Di Wang <[email protected]>
Set dcache update timer for initialize timer, otherwise keep_cache flag will not be set for opendir, then concurrent opendir might truncate the directory page cache unnecessary. Set valid timer for inode entry created by readdirplus, otherwise the inode might needs to be lookup again. Required-githooks: true Signed-off-by: Di Wang <[email protected]>
Do not need object open in dfuse_cb_open, since if the following fetch only needs to read from the kernel page cache, then the object layout is not needed at all. Required-githooks: true Signed-off-by: Di Wang <[email protected]>
Use chan patch to avoid some contention from fuse kernel. Required-githooks: true Signed-off-by: Ashley Pittman <[email protected]>
Temporarily force readdir plus for all cases now, which can help to save some lookup RPC for some cases. Though this can be removed once we use object enumeration to replace the normal key enumeration for readdir. Required-githooks: true Signed-off-by: Di Wang <[email protected]>
Read from readahead cache aggressively, and it may need improved later. Required-githooks: true Allow-unstable-test: true Signed-off-by: Di Wang <[email protected]>
Test stage Build RPM on EL 9 completed with status FAILURE. https://build.hpdd.intel.com//job/daos-stack/job/daos/view/change-requests/job/PR-15645/1/execution/node/357/log |
Test stage Build RPM on EL 8 completed with status FAILURE. https://build.hpdd.intel.com//job/daos-stack/job/daos/view/change-requests/job/PR-15645/1/execution/node/314/log |
Test stage Build RPM on Leap 15.5 completed with status FAILURE. https://build.hpdd.intel.com//job/daos-stack/job/daos/view/change-requests/job/PR-15645/1/execution/node/273/log |
Test stage Build DEB on Ubuntu 20.04 completed with status FAILURE. https://build.hpdd.intel.com//job/daos-stack/job/daos/view/change-requests/job/PR-15645/1/execution/node/317/log |
Errors are component not formatted correctly,Ticket number prefix incorrect,PR title is malformatted. See https://daosio.atlassian.net/wiki/spaces/DC/pages/11133911069/Commit+Comments,Unable to load ticket data |
Test stage NLT on EL 8.8 completed with status FAILURE. https://build.hpdd.intel.com//job/daos-stack/job/daos/view/change-requests/job/PR-15645/1/execution/node/715/log |
fix style Allow-unstable-test: true Required-githooks: true Signed-off-by: Di Wang <[email protected]>
Test stage Build RPM on EL 9 completed with status FAILURE. https://build.hpdd.intel.com//job/daos-stack/job/daos/view/change-requests/job/PR-15645/2/execution/node/362/log |
Test stage Build RPM on EL 8 completed with status FAILURE. https://build.hpdd.intel.com//job/daos-stack/job/daos/view/change-requests/job/PR-15645/2/execution/node/370/log |
Test stage Build RPM on Leap 15.5 completed with status FAILURE. https://build.hpdd.intel.com//job/daos-stack/job/daos/view/change-requests/job/PR-15645/2/execution/node/356/log |
Test stage Build DEB on Ubuntu 20.04 completed with status FAILURE. https://build.hpdd.intel.com//job/daos-stack/job/daos/view/change-requests/job/PR-15645/2/execution/node/348/log |
Test stage Unit Test on EL 8.8 completed with status FAILURE. https://build.hpdd.intel.com/job/daos-stack/job/daos/job/PR-15645/2/display/redirect |
Test stage NLT on EL 8.8 completed with status FAILURE. https://build.hpdd.intel.com//job/daos-stack/job/daos/view/change-requests/job/PR-15645/2/execution/node/766/log |
fix style Run-GHA: true Allow-unstable-test: true Required-githooks: true Signed-off-by: Di Wang <[email protected]>
…use' into wangdi/google_26_dfuse Run-GHA: true Allow-unstable-test: true Required-githooks: true
Test stage Build RPM on EL 9 completed with status FAILURE. https://build.hpdd.intel.com//job/daos-stack/job/daos/view/change-requests/job/PR-15645/3/execution/node/343/log |
Test stage Build RPM on EL 8 completed with status FAILURE. https://build.hpdd.intel.com//job/daos-stack/job/daos/view/change-requests/job/PR-15645/3/execution/node/342/log |
Test stage Build RPM on Leap 15.5 completed with status FAILURE. https://build.hpdd.intel.com//job/daos-stack/job/daos/view/change-requests/job/PR-15645/3/execution/node/349/log |
Test stage Build DEB on Ubuntu 20.04 completed with status FAILURE. https://build.hpdd.intel.com//job/daos-stack/job/daos/view/change-requests/job/PR-15645/3/execution/node/348/log |
Revert chan patch, since building RPM will fail with this patch. Run-GHA: true Allow-unstable-test: true Required-githooks: true Signed-off-by: Di Wang <[email protected]>
Test stage NLT on EL 8.8 completed with status FAILURE. https://build.hpdd.intel.com//job/daos-stack/job/daos/view/change-requests/job/PR-15645/4/execution/node/817/log |
Skip-func-hw-test: true Required-githooks: true Merge branch 'wangdi/google_26' into wangdi/google_26_dfuse
Test stage NLT on EL 8.8 completed with status FAILURE. https://build.hpdd.intel.com//job/daos-stack/job/daos/view/change-requests/job/PR-15645/5/execution/node/816/log |
Before requesting gatekeeper:
Features:
(orTest-tag*
) commit pragma was used or there is a reason documented that there are no appropriate tags for this PR.Gatekeeper: