Messages in this thread | | | Date | Tue, 27 Jan 2015 11:52:42 +0100 | From | Michal Hocko <> | Subject | Re: [PATCH v2] mm: vmscan: fix the page state calculation in too_many_isolated |
| |
On Mon 26-01-15 12:35:00, Christoph Lameter wrote: > On Mon, 26 Jan 2015, Michal Hocko wrote: > > > > Please do not run the vmstat_updates concurrently. They update shared > > > cachelines and therefore can cause bouncing cachelines if run concurrently > > > on multiple cpus. > > > > Would you preffer to call smp_call_function_single on each CPU > > which needs an update? That would make vmstat_shepherd slower but that > > is not a big deal, is it? > > Run it from the timer interrupt as usual from a work request? Those are > staggered.
I am not following. The idea was to run vmstat_shepherd in a kernel thread and waking up as per defined timeout and then check need_update for each CPU and call smp_call_function_single to refresh the timer rather than building a mask and then calling sm_call_function_many to reduce paralel contention on the shared counters.
> > Anyway I am wondering whether the cache line bouncing between > > vmstat_update instances is a big deal in the real life. Updating shared > > counters whould bounce with many CPUs but this is an operation which is > > not done often. Also all the CPUs would have update the same counters > > all the time and I am not sure this happens that often. Do you have a > > load where this would be measurable? > > Concurrent page faults update lots of counters concurrently.
True
> But will those trigger the smp_call_function?
The smp_call_function was meant to be called only from the vmstat_shepherd context which does happen "rarely". Or am I missing your point here?
-- Michal Hocko SUSE Labs
| |