-
Notifications
You must be signed in to change notification settings - Fork 6k
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
kv: Enabled option to change levels in RocksDB #22025
Conversation
retest this please. |
I checked "make check" and there is a problem with jenkins executor - "Agent went offline during the build". Can you run job again? |
retest this please |
retest this please. |
could you prefix the title of your commit message with the subcomponent your are changing ? see https://github.com/ceph/ceph/blob/master/SubmittingPatches.rst#3-describe-your-changes also, could you add a " please note, in addition to monitor, this change also impacts OSD and bluestore to be specific. |
Signed-off-by: Rafal Wadolowski <rwadolowski@cloudferro.com>
365824b
to
9a549c2
Compare
@tchaikov I've edited commit message :) |
retest this please. |
This pull request has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. |
@markhpc can you look at this one? |
@markhpc are you alive ? :) |
is the expectation that the user would also manually specify target_level via the options string? It doesn't sound like this should have any effect set by itself. |
This pull request has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. |
@markhpc Can you take a look at this? |
I'm not sure I understand what this option does — is it trying to make compacted levels move down to a lower level's storage if there's room after compaction which wasn't present before? Is this an option that RocksDB recommends using upstream (if so, why isn't it on by default)? |
This pull request has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. |
This option isn't super well documented, but there are some hints in the code: https://github.com/facebook/rocksdb/blob/master/include/rocksdb/options.h#L1311-L1316 And in the manual compaction section of the wiki: "CompactRangeOptions::change_level,CompactRangeOptions::target_level Together, these options control the level where the compacted files will be placed. If target_level is -1, the compacted files will be moved to the minimum level whose computed max_bytes is still large enough to hold the files. Intermediate levels must be empty. For example, if the files were initially compacted to L5 and L2 is the minimum level large enough to hold the files, they will be placed in L2 if L3 and L4 are empty or in L4 if L3 is non-empty. If target_level is positive, the compacted files will be placed in that level provided intermediate levels are empty. If any any of the intermediate levels are not empty, the compacted files will be left where they are." Based on that description, it sounds to me like initially the data will be compacted into Ln and if change_level is to to true, it then is moved into Lm where Lm is the lowest level where the data can fit subject to the skipping rules mentioned above. IE for data to move From L5 into L2, L3 and L4 both have to be empty. I'd be a little nervous about making this change without a lot of testing to make sure it works as expected (and that it doesn't cause any kind of regressive behavior with extra copying in the event it can do so). |
This pull request has been automatically marked as stale because it has not had any activity for 60 days. It will be closed if no further activity occurs for another 30 days. |
This pull request has been automatically closed because there has been no activity for 90 days. Please feel free to reopen this pull request (or open a new one) if the proposed change is still appropriate. Thank you for your contribution! |
In our cluster after partial data removal process, we have noticed that we are using L3 or L4 in RocksDB. Even if it is possible to hold data in L2. This is important due to a manual compaction, when RocksDB changes the level of the data and does not use the BDEV 2.