Linux

What Happens to Your Data During a Linux read()? DMA, Page Cache, and CPU Copies
Follow a Linux buffered file read from storage to the page cache and user buffer. See what DMA handles, why the CPU …

TCP TIME_WAIT on Linux: When Closed Connections Become a Bottleneck
Why TCP TIME_WAIT survives close(), why Linux normally waits 60 seconds, and how to distinguish normal connection churn …

False Sharing: Why Unrelated Writes Slow Each Other Down
Two threads updating separate variables can still slow each other down when both land on the same cache line. See why …

Why Locking a Mutex Usually Doesn't Need a System Call
An uncontended pthread_mutex_lock() usually runs a few user-space atomic instructions and never enters the kernel. …

sendfile() Promises Zero-Copy. Which Copies Does It Actually Remove?
sendfile() is marketed as zero-copy, but data still moves. See which two CPU copies the read()+write() path really …

malloc(100 MiB) Succeeded, So Why Is RSS Barely Higher?
malloc(100 MiB) returning success does not mean 100 MiB is resident. Follow the glibc allocation path, brk vs mmap, …

What Does TCP listen() Backlog Actually Control on Linux?
Does listen() backlog control the SYN queue or accept queue? Trace Linux 6.10 behavior through somaxconn, SYN cookies, …

How epoll Wakes a Waiting Thread in the Linux Kernel
Trace epoll from epoll_ctl() registration to socket wakeups, ep_poll_callback(), ready-list delivery, ovflist races, …

What Actually Happens During a Linux System Call on x86-64?
Follow a Linux system call across the x86-64 privilege boundary: registers, entry_SYSCALL_64, kernel stacks, KPTI, …

Why Fewer Syscalls Don't Make io_uring Faster Than epoll
io_uring can reduce system calls without improving throughput or tail latency. Compare its completion model, batching, …