On Thu, Mar 02, 2023 at 04:19:50PM -0500, Peter Xu wrote: > On Thu, Mar 02, 2023 at 10:55:09AM -0300, Marcelo Tosatti wrote: > > > (2) If someone can modify the dead cpu's vm_stat_diff, > > > > The only context that can modify the cpu's vm_stat_diff are: > > > > 1) The CPU itself (increases the counter). > > 2) cpu_vm_stats_fold (from vmstat_shepherd kernel thread), from > > x -> 0 only. > > I think I didn't continue reading so I didn't see cpu_vm_stats_fold() will > be reused when commenting, sorry. > > Now with a reworked (and SMP-safe) cpu_vm_stats_fold() and vmstats, I'm > wondering the possibility of merging it with refresh_cpu_vm_stats() since > they really look similar. Seems like a possibility. However that might require replacing v = this_cpu_xchg(pzstats->vm_stat_diff[i], 0); with pzstats = per_cpu_ptr(zone->per_cpu_zonestats, cpu); Which would drop the this_cpu optimization described at 7340a0b15280c9d902c7dd0608b8e751b5a7c403 Also you would not want the unified function to sync NUMA events (as it would be called from NOHZ entry and exit). See f19298b9516c1a031b34b4147773457e3efe743b > IIUC the new refresh_cpu_vm_stats() logically doesn't need the small > preempt disabled sections, not anymore, What preempt disabled sections you refer to? > if with a cpu_id passed over to > cpu_vm_stats_fold(), which seems to be even a good side effect. But not > sure I missed something. > > -- > Peter Xu > >