mds: scrub pins more inodes than the mds_cache_memory_limit#65858
mds: scrub pins more inodes than the mds_cache_memory_limit#65858
Conversation
|
This pull request can no longer be automatically merged: a rebase is needed and changes have to be manually resolved |
4cd9baf to
8f018ce
Compare
|
So this would be a LIFO now and the memory consumption should be proportional to the depth of the tree at every level instead of the total children at every level. So, the worst case for num. of inodes pinned should be (say if B is the avg. branching factor and D is the depth) |
Right, but I think it can improved to just D, having (inode, iterator) as a pair in the scrub_stack but I have seen in the tracker developers are cautious about multi-mds scrub, although I don't understand why it would be problem(May be issue can be a dirfrag might need to be pinned until it's whole subtree get scrubbed). But for now this minimal change can get rid of long lasting memory issue. |
|
@mchangir for review. |
|
@mchangir @kotreshhr - please plan to review this change. |
Gentle nudge for review. |
|
jenkins test make check |
I agree and this is a good minimalistic approach which works around the issue 👍 |
8f018ce to
2aba0f8
Compare
|
Just FYI - testing was blocked for a while due to lab move. I will be revisiting pending PRs once everything is up working. |
|
This PR is under test in https://tracker.ceph.com/issues/75073. |
* refs/pull/65858/head: Reviewed-by: Venky Shankar <vshankar@redhat.com> Reviewed-by: Igor Fedotov <ifedotov@suse.com>
|
jenkins retest this please |
2aba0f8 to
24aca24
Compare
|
Hi @sajibreadd - any changes in the latest push? |
No, just rebased it. |
For scrubbing dirfrag we are pushing children back into the scrub stack. Instead we can follow the same strategy for scrub directory and pushing children front of the scrub stack, and in kick_off_scrubs always start scrubbing from the front of the stack. It will prevent ScrubStack to pinning whole level of the file-system tree. Fixes: https://tracker.ceph.com/issues/71167 Signed-off-by: Md Mahamudur Rahaman Sajib <mahamudur.sajib@croit.io>
24aca24 to
5815655
Compare
I am rebasing again, as previous rebase was done to my forked main. I just did rebase to upstream/main. Let's see now whether make check passes or not as my commit is very much unrelated to the test for which it is failing. |
|
jenkins test make check |
For scrubbing dirfrag we are pushing children back into the scrub stack. Instead we can follow the same strategy for scrub directory and pushing children front of the scrub stack, and in kick_off_scrubs always start scrubbing from the front of the stack. It will prevent ScrubStack to pinning whole level of the file-system tree.
Fixes: https://tracker.ceph.com/issues/71167
Contribution Guidelines
To sign and title your commits, please refer to Submitting Patches to Ceph.
If you are submitting a fix for a stable branch (e.g. "quincy"), please refer to Submitting Patches to Ceph - Backports for the proper workflow.
When filling out the below checklist, you may click boxes directly in the GitHub web UI. When entering or editing the entire PR message in the GitHub web UI editor, you may also select a checklist item by adding an
xbetween the brackets:[x]. Spaces and capitalization matter when checking off items this way.Checklist
Show available Jenkins commands
jenkins test classic perfJenkins Job | Jenkins Job Definitionjenkins test crimson perfJenkins Job | Jenkins Job Definitionjenkins test signedJenkins Job | Jenkins Job Definitionjenkins test make checkJenkins Job | Jenkins Job Definitionjenkins test make check arm64Jenkins Job | Jenkins Job Definitionjenkins test submodulesJenkins Job | Jenkins Job Definitionjenkins test dashboardJenkins Job | Jenkins Job Definitionjenkins test dashboard cephadmJenkins Job | Jenkins Job Definitionjenkins test apiJenkins Job | Jenkins Job Definitionjenkins test docsReadTheDocs | Github Workflow Definitionjenkins test ceph-volume allJenkins Jobs | Jenkins Jobs Definitionjenkins test windowsJenkins Job | Jenkins Job Definitionjenkins test rook e2eJenkins Job | Jenkins Job DefinitionYou must only issue one Jenkins command per-comment. Jenkins does not understand
comments with more than one command.