Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 21 Nov 2018 08:07:16 +0200
From:      Konstantin Belousov <kostikbel@gmail.com>
To:        Mark Johnston <markj@freebsd.org>, src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   Re: svn commit: r340709 - in head/sys: compat/linuxkpi/common/include/linux vm
Message-ID:  <20181121060716.GE2378@kib.kiev.ua>
In-Reply-To: <20181121005832.ongabjesxlsd7cqu@smtp.freebsd.org>
References:  <201811202249.wAKMnJxH082469@repo.freebsd.org> <20181121003515.GE2630@raichu> <20181121004239.spk72g2pikvse4y7@smtp.freebsd.org> <20181121005148.GF2630@raichu> <20181121005832.ongabjesxlsd7cqu@smtp.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, Nov 20, 2018 at 04:58:32PM -0800, Ben Widawsky wrote:
> On 18-11-20 19:51:48, Mark Johnston wrote:
> > On Tue, Nov 20, 2018 at 04:42:39PM -0800, Ben Widawsky wrote:
> > > On 18-11-20 19:35:15, Mark Johnston wrote:
> > > > On Tue, Nov 20, 2018 at 10:49:19PM +0000, Ben Widawsky wrote:
> > > > > Author: bwidawsk
> > > > > Date: Tue Nov 20 22:49:19 2018
> > > > > New Revision: 340709
> > > > > URL: https://svnweb.freebsd.org/changeset/base/340709
> > > > > 
> > > > > Log:
> > > > >   linuxkpi: Add some basic swap functions
> > > > >   
> > > > >   These are used by kms-drm to determine various heuristics relate
> > > > >   memory conditions.
> > > > >   
> > > > >   The number of free swap pages is just a variable, and it can be
> > > > >   much cheaper by either adding a new getter, or simply extern'ing
> > > > >   swap_total. However, this patch opts to use the more expensive,
> > > > >   existing interface - since this isn't an operation in a high per
> > > > >   path.
> > > > >   
> > > > >   This allows us to remove some more gpl linuxkpi and do the follo
> > > > >   kms-drm:
> > > > >   git rm linuxkpi/gplv2/include/linux/swap.h
> > > > >   
> > > > >   Reviewed by:    mmacy, Johannes Lundberg <johalun0@gmail.com>
> > > > >   Approved by:    emaste (mentor)
> > > > >   Differential Revision:  https://reviews.freebsd.org/D18052
> > > > > 
> > > > > Added:
> > > > >   head/sys/compat/linuxkpi/common/include/linux/swap.h   (contents, props changed)
> > > > > Modified:
> > > > >   head/sys/vm/vm_pageout.h
> > > > >   head/sys/vm/vm_swapout.c
> > > > > 
> > > > > [...]
> > > > > Modified: head/sys/vm/vm_swapout.c
> > > > > ==============================================================================
> > > > > --- head/sys/vm/vm_swapout.c	Tue Nov 20 22:24:18 2018	(r340708)
> > > > > +++ head/sys/vm/vm_swapout.c	Tue Nov 20 22:49:19 2018	(r340709)
> > > > > @@ -961,3 +961,10 @@ swapout(struct proc *p)
> > > > >  	p->p_swtick = ticks;
> > > > >  	return (0);
> > > > >  }
> > > > > +
> > > > > +/* Used to determine if the current process is itself the reaper. */
> > > > > +bool
> > > > > +vm_curproc_is_vmproc(void)
> > > > > +{
> > > > > +	return curproc == vmproc;
> > > > > +}
> > > > 
> > > > From a look at how this is used, it should probably be pageproc rather
> > > > than vmproc.  There are various code paths that just check
> > > > curproc == pageproc inline.
> > > > 
> > > 
> > > Could I trouble you for a quick explanation of the difference between the two?
> > 
> > pageproc contains the page daemon and laundry threads, which are
> > responsible for managing the LRU page queues and writing back dirty
> > pages.  vmproc's main task is to swap out kernel stacks when the system
> > is under memory pressure, and swap them back in when necessary.  It's a
> > somewhat legacy component of the system and isn't required.  You can
> > build a kernel without it by specifying "options NO_SWAPPING" (which is
> > a somewhat misleading name), in which vm_swapout_dummy.c is compiled
> > instead of vm_swapout.c.
> > 
> 
> Thanks for the explanation. I indeed want the page daemon. I will put up a patch
> to do that the correct way. Thanks.

What is the intent ? If the goal is to avoid wait for memory in
deadlock- prone contexts, then you perhaps want to return true for both
pagedaemon and vm daemon, and might be even the buf daemon threads as
well.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20181121060716.GE2378>