As we learned throughout the last decade (!), Copy On Write (COW) paired with Get User Pages (GUP) can be harder then it seems. Fortunately, it looks like that we might have both mechanisms working completely reliable in combination soon -- at least for most types of anonymous memory.
In this talk, I'll explain recent changes to our GUP and COW logic for anonymous memory, how they work,...
The main issue of mmap_lock is its process-wide scale, which prevents handling page faults in one virtual memory area (VMA) of a process when another VMA of the same process is being modified.
The maple tree has been simplifying the way VMAs are stored to avoid multiple updates to the 3 data structures used to keep track of the VMAs.
Latest respin of Speculative Page Faults patchset...
CXL enables exploration of a more diverse range of memory technology beyond the DDR supported by the CPU. Those memory technologies come with different performance characteristics from a latency & bandwidth point of view. This means the memory topology of platforms becomes even more complex.
There is a large burden on how to leverage tiered memory, from letting the end user control...
- Latest performance benchmark results on ARM64 servers and POWER9
- How to make MGLRU the default for everyone
- How to use MGLRU page table scanning to reclaim unused page-table pages
- A BPF program built on top of MGLRU to create per-process (access) heat maps
Live update is a mechanism to support deploying updates to a running hypervisor in a way that has limited impact to virtual machines. This is done by pausing the virtual machines, stashing KVM state, kexecing into a new kernel, and restarting the VMM process. The challenge is guest memory: how can it be preserved and restored across kexec?
This talk describes a solution to this problem:...
Tracking memory allocations for leak detection is an old problem with
many existing solutions such as kmemleak and page_owner. However these
solutions have relatively high performance overhead which limits their
use. This talk will present memory allocation tracking implementation
based on code tagging framework. It is designed to minimize
performance overhead, while capturing enough...
- A summary of how we got to have SLAB, SLOB and SLUB.
- The strengths and weaknesses of each - performance, debugging, memory overhead.
- The issues with having three implementations.
- Code complexity and bitrot
- Other features having to implement for each variant or limit choice (kmemcg, PREEMPT_RT...)
- Imperfect common code, recent attempts to unify it more