Messages in this thread | | | Date | Mon, 7 Feb 2022 16:19:15 +0100 | From | Frederic Weisbecker <> | Subject | Re: [patch v11 07/13] task isolation: sync vmstats conditional on changes |
| |
On Fri, Feb 04, 2022 at 02:35:44PM -0300, Marcelo Tosatti wrote: > Rather than syncing VM-stats on every return to userspace > (or VM-entry), keep track of changes through a per-CPU bool. > > This improves performance when enabling task isolated > for vcpu VMs. > > Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com> > > --- > v11: > - Add TIF_TASK_ISOL bit to thread info flags and use it > to decide whether to perform task isolation work on > return to userspace > > include/linux/vmstat.h | 13 ++++++++++++- > mm/vmstat.c | 29 ++++++++++++++++++++++++++++- > 2 files changed, 40 insertions(+), 2 deletions(-) > > Index: linux-2.6/include/linux/vmstat.h > =================================================================== > --- linux-2.6.orig/include/linux/vmstat.h > +++ linux-2.6/include/linux/vmstat.h > @@ -22,7 +22,18 @@ int sysctl_vm_numa_stat_handler(struct c > #endif > > #if defined(CONFIG_SMP) && defined(CONFIG_TASK_ISOLATION) > -void sync_vmstat(void); > +DECLARE_PER_CPU_ALIGNED(bool, vmstat_dirty); > + > +extern struct static_key vmstat_sync_enabled; > + > +void __sync_vmstat(void); > +static inline void sync_vmstat(void) > +{ > + if (static_key_false(&vmstat_sync_enabled)) > + __sync_vmstat(); > +} > + > +void init_sync_vmstat(void); > #else > static inline void sync_vmstat(void) > { > Index: linux-2.6/mm/vmstat.c > =================================================================== > --- linux-2.6.orig/mm/vmstat.c > +++ linux-2.6/mm/vmstat.c > @@ -334,6 +334,31 @@ void set_pgdat_percpu_threshold(pg_data_ > } > } > > +#ifdef CONFIG_TASK_ISOLATION > +struct static_key vmstat_sync_enabled; > +DEFINE_PER_CPU_ALIGNED(bool, vmstat_dirty); > + > +static inline void mark_vmstat_dirty(void) > +{ > + if (!static_key_false(&vmstat_sync_enabled)) > + return; > + > + raw_cpu_write(vmstat_dirty, true);
Why not __this_cpu_write() ? Shouldn't we make sure we are not preemptible and not mark the wrong CPU?
Thanks.
| |