-
Notifications
You must be signed in to change notification settings - Fork 310
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
DAOS-12751 dfuse: Improve evict command. #12633
Changes from 2 commits
e292092
edcab41
66a9cd4
ebb2668
8160a64
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -203,6 +203,9 @@ def run_build_test(self, cache_mode, intercept=False, dfuse_namespace=None): | |
'python3 -m pip install pip --upgrade', | ||
'python3 -m pip install -r {}/requirements.txt'.format(build_dir), | ||
'scons -C {} --jobs {} --build-deps=only'.format(build_dir, build_jobs), | ||
'daos filesystem query {}'.format(mount_dir), | ||
'daos filesystem evict {}'.format(build_dir), | ||
'daos filesystem query {}'.format(mount_dir), | ||
Comment on lines
+206
to
+208
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Is this a fix or a workaround? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Neither, this is to see how long the forget takes and see how effective it is. Plus check that it doesn't deadlock of course. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. First results are in, all 3 commands took less than 0.00 seconds so the evict is fast, the first two commands reported 45065 inode in memory, the last one 4951. I don't think this test should be putting anything other than the build_dir so it would be interesting to see if nodes does drop to 1, if we could run the command in json mode remotely and get the evicted inode number then we could wait for it but I think that's outside the scope of this PR. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. All tests had exactly the same values which shouldn't be a surprise, the files that aren't being evicted are the venv files which makes sense. |
||
'scons -C {} --jobs {}'.format(build_dir, intercept_jobs)] | ||
for cmd in cmds: | ||
command = '{};{}'.format(preload_cmd, cmd) | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
D_RWLOCK_RDLOCK, not D_RWLOCK_WRLOCK?
Is this because d_hash_rec_ndecref has its own lock?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I want forgets to happen in parallel as they do now so forget takes a reader lock (although it does modify - this is protected by the hash table) but I also want the ioctl to block whilst there are pending forget operations so that takes a writer lock. It's the only way I could think of for the ioctl to pause which pending operations are happening. The kernel seems to send a small number of forgetmany operation, each with a large number of forgets so this won't guarantee that the kernel has completed but it does at least pause the reader for any in-flight to complete.