On Tue, 10 Jan 2023, Frederic Weisbecker wrote: > Note I'm absolutely clueless with vmstat. But I was wondering about it as well > while reviewing Marcelo's series, so git blame pointed me to: > > 7c83912062c801738d7d19acaf8f7fec25ea663c ("vmstat: User per cpu atomics to avoid > interrupt disable / enable") > > And this seem to mention that this can race with IRQs as well, hence the local > cmpxchg operation. The race with irq could be an issue but I thought we avoided that and were content with disabling preemption. But this issue illustrates the central problem of the patchset: It makes the lightweight counters not so lightweight anymore. The basic primitives add a lot of weight. And the pre cpu atomic updates operations require the modification of multiple values. The operation cannot be "atomic" in that sense anymore and we need some other form of synchronization that can span multiple instructions.