Unix Systems For Modern Architectures.pdf [Cross-Platform RELIABLE]
struct per_cpu_stats uint64_t rx_packets; char pad[56]; ____cacheline_aligned; Modern UNIX kernels (Linux, FreeBSD) use ____cacheline_aligned and __cacheline_aligned extensively for struct zone , struct per_cpu . The book discusses moving from a single giant lock to fine-grained locking.
struct per_cpu_stats uint64_t rx_packets; // CPU 0 writes uint64_t tx_packets; // CPU 1 writes (same cache line!) __attribute__((aligned(64))); // but 64-byte line holds both Unix Systems For Modern Architectures.pdf
rcu_read_lock(); obj = rcu_dereference(shared_ptr); // use obj – no blocking rcu_read_unlock(); Writers make a copy, update, then remap pointer – old memory freed after grace period. The book’s classic problem: On one CPU, you change a page table entry. All other CPUs might have that mapping cached in their TLB. The book’s classic problem: On one CPU, you
void *ptr = kmalloc(256, GFP_KERNEL); // On return, ptr likely from CPU-local cache – no lock. For modern large-scale systems, (2 MiB, 1 GiB) reduce TLB pressure. 7. I/O & Interrupt Handling Classic UNIX had bottom halves, top halves. Modern architectures demand more. For modern large-scale systems, (2 MiB, 1 GiB)