Date: Tue, 20 Nov 2018 16:58:32 -0800 From: Ben Widawsky <bwidawsk@freebsd.org> To: Mark Johnston <markj@freebsd.org> Cc: 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: <20181121005832.ongabjesxlsd7cqu@smtp.freebsd.org> In-Reply-To: <20181121005148.GF2630@raichu> References: <201811202249.wAKMnJxH082469@repo.freebsd.org> <20181121003515.GE2630@raichu> <20181121004239.spk72g2pikvse4y7@smtp.freebsd.org> <20181121005148.GF2630@raichu>
next in thread | previous in thread | raw e-mail | index | archive | help
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.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20181121005832.ongabjesxlsd7cqu>