diff options
author | Joshua Baehring <98630690+JoshuaMBa@users.noreply.github.com> | 2024-08-26 13:44:39 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-08-26 10:44:39 -0700 |
commit | 643bf6cb01bc3faa54c5510c904ea3bdcb4bf42f (patch) | |
tree | 1f7a67db4d4e5edb4c4ac26d7b3821a510662c80 /clang/lib/Frontend/CompilerInvocation.cpp | |
parent | ff5816ad29eba3762e1c5c576c1adf586c35dd91 (diff) | |
download | llvm-643bf6cb01bc3faa54c5510c904ea3bdcb4bf42f.zip llvm-643bf6cb01bc3faa54c5510c904ea3bdcb4bf42f.tar.gz llvm-643bf6cb01bc3faa54c5510c904ea3bdcb4bf42f.tar.bz2 |
[scudo] Add partial chunk heuristic to retrieval algorithm. (#105009)
Previously the secondary cache retrieval algorithm would not allow
retrievals of memory chunks where the number of unused bytes would be
greater than than `MaxUnreleasedCachePages * PageSize` bytes. This meant
that even if a memory chunk satisfied the requirements of the optimal
fit algorithm, it may not be returned. This remains true if memory
tagging is enabled. However, if memory tagging is disabled, a new
heuristic has been put in place. Specifically, If a memory chunk is a
non-optimal fit, the cache retrieval algorithm will attempt to release
the excess memory to force a cache hit while keeping RSS down.
In the event that a memory chunk is a non-optimal fit, the retrieval
algorithm will release excess memory as long as the amount of memory to
be released is less than or equal to 4 Pages. If the amount of memory to
be released exceeds 4 Pages, the retrieval algorithm will not consider
that cached memory chunk valid for retrieval.
This change also addresses an alignment issue in a test case submitted
in #104807.
Diffstat (limited to 'clang/lib/Frontend/CompilerInvocation.cpp')
0 files changed, 0 insertions, 0 deletions