`mm_struct` and VMAs
The Virtual Address Space described the layout a process's pointers
The Virtual Address Space described the layout a process's pointers
Every allocation decision in the kernel eventually comes down to one distinction: physically
The Page Fault Handler named doanonymouspage() and dowppage() as
struct page describes one 4 KiB frame of physical memory, and there is one struct page for every
A TLB holds a fixed number of entries, and its reach — the amount of address space it can translate
Node-local allocation by default, the policies that override it, and when NUMA effects are a red herring.
Translation is a size problem before it's anything else. A flat table mapping every 4 KiB page of a
The Page Allocator hands out pages until it can't. A system that only
The Page Allocator deals in 4 KiB units. The kernel allocates `struct
Swap has an undeserved reputation. It is not "what happens when a machine runs out of memory" — it is
By the time this code runs, every allocation path has already failed, reclaim has already been asked and
Every other allocator in the kernel — slab, vmalloc, the page cache, the stack allocator — ultimately
This is the single most consequential piece of Linux memory management, and the one most misread by
The Life of a Page Fault told this story shallowly, as
Page Tables and the Walk established that a translation costs up to
A pointer on x86-64 is a 64-bit value, but the address space it names is not a 64-bit space. Implementing
How to actually answer "how much memory is this using", and why every simple answer to that question is wrong.
There is a gap between "the write returned" and "the data is safe", and most data-loss incidents live