How the Linux Page Reclaim and OOM Killer Work: LRU Lists, Watermarks, and Why the System Kills Processes
A process that calls malloc for a multi-gigabyte buffer under memory pressure does not always receive the pages. The kernel may already be s...
A process that calls malloc for a multi-gigabyte buffer under memory pressure does not always receive the pages. The kernel may already be s...
A process that calls malloc for a multi-gigabyte buffer under memory pressure does not always receive the pages. The kernel may already be s...
A process that calls send() on a TCP socket expects the bytes to leave the machine eventually. It does not expect the call to wait until the...
Draft placeholder for the full transmit path article. Full content will be updated.
A process that calls munmap on a range it no longer needs expects the virtual addresses to disappear. On a single-core machine that is almo...
A process that calls send() on a TCP socket expects the bytes to leave the machine eventually. It does not expect the call to wait until the...
A database that calls fsync after a commit expects the bytes it wrote to survive a power cut. A filesystem that just renamed a temporary fil...
A filesystem that wants to write a dirty page does not issue a single system call that waits for the disk. It builds a bio , submits it, and...
A process that calls malloc for a multi-gigabyte buffer on a two-socket server does not receive equal-cost memory. The physical frames behin...
A NIC that has just finished DMA-ing a frame into a host ring buffer does not copy the payload in its hard interrupt handler. The handler do...
A bounds check that returns early is not a security boundary when the processor has already executed the instructions that follow it. Spectr...
A process that calls unshare(CLONE_NEWPID) and then fork does not get a private machine. It gets a private view of process IDs. The child se...