Introduce a CPU-specific variable namely vmstat_dirty to indicate if a vmstat imbalance is present for a given CPU. Therefore, at the appropriate time, we can fold all the remaining differentials. This patch also provides trivial helpers for modification and testing. Signed-off-by: Aaron Tomlin <atomlin@xxxxxxxxxx> --- mm/vmstat.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/mm/vmstat.c b/mm/vmstat.c index 90af9a8572f5..24c67b2e58fd 100644 --- a/mm/vmstat.c +++ b/mm/vmstat.c @@ -195,6 +195,22 @@ void fold_vm_numa_events(void) #endif #ifdef CONFIG_SMP +static DEFINE_PER_CPU_ALIGNED(bool, vmstat_dirty); + +static inline void vmstat_mark_dirty(void) +{ + this_cpu_write(vmstat_dirty, true); +} + +static inline void vmstat_clear_dirty(void) +{ + this_cpu_write(vmstat_dirty, false); +} + +static inline bool is_vmstat_dirty(void) +{ + return this_cpu_read(vmstat_dirty); +} int calculate_pressure_threshold(struct zone *zone) { -- 2.37.1