Linux Kernel - Per-CPU Storage
On multiprocessor, each cpu has its own storage of all global variables, e.g. they have different addresses while running on different cpus. For example, each cpu schedules processes separately and has their own runqueues; Obviously, though statically sharing the same identifier, the per-cpu runqueues should be stored in different addresses.
Linux kernel provides convenient APIs for creating and accessing per-cpu variables, which prevent developers from misunderstanding and misuse of them.