Conversation
|
This is an automated comment for commit af4a9e5 with description of existing statuses. It's updated for the latest CI running ❌ Click here to open a full report in a separate page
Successful checks
|
799d248 to
bc67d1f
Compare
|
I don't have good ideas for how to make autoresizing work. Queries fail with out-of-memory errors because MemoryTracker's "rss" adjustment races with memory deallocation, so sometimes MemoryTracker clears the page cache, then updates "rss" to a high value (from before the clearing), then we allocate a little more emory, MemoryTracker clears the cache again but "rss" is still too high and the query fails. |
|
Also not looking forward to dealing with the MergeTree read path and ReadBuffer spaghetti again... |
|
Maybe try something |
|
Dear @al13n321, this PR hasn't been updated for a while. Will you continue working on it? If not, please close it. Otherwise, ignore this message. |
|
Worked fine in a few manual tests in a toy cgroup with 8 GB memory limit, didn't get oom-killed or fail queries unnecessarily. Seems good to go. (Also tried setting |
…the other way around. It doesn't mix with distributed cache otherwise.
…cause it's too slow rather than because the memory limit is hit.
|
@al13n321 ASAN reports a problem in Integration tests (asan, flaky check) https://pastila.nl/?000207d3/5332b66a5836f334a35b887014bb05bd#Z6+P1Gn9Fv297FDSIBHLmw== |
|
|
Changelog category (leave one):
Changelog entry (a user-readable short description of the changes that goes to CHANGELOG.md):
A new implementation of the Userspace Page Cache, which allows caching data in the in-process memory instead of relying on the OS page cache, which is useful when the data is stored on a remote virtual filesystem without backing with the local filesystem cache.
Un-overengineered it: got rid of the madvise(MADV_FREE) stuff, it was slow. It's just a CacheBase now. Size adjusted periodically by MemoryWorker thread, which runs every 50ms by default. Need to also add size adjustment on memory allocation path, similar to overcommit tracker.