Unix Systems For Modern Architectures.pdf Site

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.

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. Unix Systems For Modern Architectures.pdf

SMT (hyperthread) → Core → L3 cache → Socket → NUMA node → System The book explains the old buddy allocator and the original slab allocator (Solaris). obj = rcu_dereference(shared_ptr)

This is the original version of Bvckup. It was written for Windows XP, last updated in 2010 and it's now well behind times. Use at your own risk, basically.
It has been superseded by Bvckup 2 - a faster and significantly more refined revision of the same idea. Have a look.
http://www.bvckup2.com