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