zswap.zpool: z3fold is now deprecated and zbud could have the same faith in the near future, better handle this change#215
Open
Oxalin wants to merge 6 commits intonefelim4ag:masterfrom
Open
zswap.zpool: z3fold is now deprecated and zbud could have the same faith in the near future, better handle this change#215Oxalin wants to merge 6 commits intonefelim4ag:masterfrom
Oxalin wants to merge 6 commits intonefelim4ag:masterfrom
Conversation
By default, z3fold is not built anymore since it has been deprecated in kernel 6.12. The default allocator is zsmalloc. A new allocator is in the work that will need to be added in the near future. Signed-off-by: Alexandre Demers <alexandre.f.demers@gmail.com>
Signed-off-by: Alexandre Demers <alexandre.f.demers@gmail.com>
According to MemAvailable's introduction, while MemFree represents to amount of RAM not allocated by the kernel, this doesn't give a good estimate of the memory really available to any application. MemAvailable was introduced so "user space really should not be expected to know kernel internals to come up with an estimate for the amount of free memory." "MemAvailable: An estimate of how much memory is available for starting new applications, without swapping." (See https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=34e431b0ae398fc54ea69ff85ec700722c9da773) Thus, using MemAvailable seems a better alternative to estimate if and when swapping may happen. Signed-off-by: Alexandre Demers <alexandre.f.demers@gmail.com>
Firstly, z3fold has been deprecated since kernel 6.12. So it can be expected that some actual systemd-swap users will hit a wall in the near future either because the z3fold module will not be built by default or because it will have been stripped out of the kernel entirely. Secondly, talks are ongoing about doing the same for zbud. Finally, the user should be both warned about missing modules preventing swapFC from working as expected, but be supported in maintaining the functionality available by using alternative allocators. Thus, a check is applied to validate if the requested allocator is available. If it is not, systemd-swap should either use the allocator already set or default to zsmalloc (which is expected to be available if Zswap was built in the kernel). Signed-off-by: Alexandre Demers <alexandre.f.demers@gmail.com>
Signed-off-by: Alexandre Demers <alexandre.f.demers@gmail.com>
Check for both MemAvailable and MemFree. While MemFree should always be found, on older systems, we may potentially end up with MemAvailable not being defined. For this case, revert back to using MemFree. Signed-off-by: Alexandre Demers <alexandre.f.demers@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
By default, z3fold is not built anymore since it has been deprecated in kernel 6.12. Zbud could have the same faith in the near future. The default allocator is zsmalloc and is always available when Zswap is enabled.
N.B.: A new allocator is in the work that will need to be added in the near future.
Default to zsmalloc if unsure or if the module for the requested Zpool allocator is not available and inform the user about it.
I also pushed an improvement for estimating available free memory by using MemAvailable instead of MemFree. This commit (afb82b4) could have been in a different PR, but it was taken in the series.