From owner-svn-src-all@freebsd.org Wed Nov 21 06:07:28 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 3944D1106E5F; Wed, 21 Nov 2018 06:07:28 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from kib.kiev.ua (kib.kiev.ua [IPv6:2001:470:d5e7:1::1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 6297570ACF; Wed, 21 Nov 2018 06:07:27 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from tom.home (kib@localhost [127.0.0.1]) by kib.kiev.ua (8.15.2/8.15.2) with ESMTPS id wAL67GJB073613 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Wed, 21 Nov 2018 08:07:19 +0200 (EET) (envelope-from kostikbel@gmail.com) DKIM-Filter: OpenDKIM Filter v2.10.3 kib.kiev.ua wAL67GJB073613 Received: (from kostik@localhost) by tom.home (8.15.2/8.15.2/Submit) id wAL67GkI073612; Wed, 21 Nov 2018 08:07:16 +0200 (EET) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: tom.home: kostik set sender to kostikbel@gmail.com using -f Date: Wed, 21 Nov 2018 08:07:16 +0200 From: Konstantin Belousov To: Mark Johnston , 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> References: <201811202249.wAKMnJxH082469@repo.freebsd.org> <20181121003515.GE2630@raichu> <20181121004239.spk72g2pikvse4y7@smtp.freebsd.org> <20181121005148.GF2630@raichu> <20181121005832.ongabjesxlsd7cqu@smtp.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20181121005832.ongabjesxlsd7cqu@smtp.freebsd.org> User-Agent: Mutt/1.10.1 (2018-07-13) X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED,BAYES_00, DKIM_ADSP_CUSTOM_MED,FORGED_GMAIL_RCVD,FREEMAIL_FROM, NML_ADSP_CUSTOM_MED autolearn=no autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on tom.home X-Rspamd-Queue-Id: 6297570ACF X-Spamd-Result: default: False [-5.18 / 15.00]; ARC_NA(0.00)[]; NEURAL_HAM_MEDIUM(-1.00)[-0.999,0]; FROM_HAS_DN(0.00)[]; RCPT_COUNT_THREE(0.00)[4]; FREEMAIL_FROM(0.00)[gmail.com]; TO_MATCH_ENVRCPT_ALL(0.00)[]; MIME_GOOD(-0.10)[text/plain]; HAS_XAW(0.00)[]; NEURAL_HAM_LONG(-1.00)[-0.998,0]; R_SPF_SOFTFAIL(0.00)[~all]; RCVD_COUNT_THREE(0.00)[3]; TO_DN_SOME(0.00)[]; MX_GOOD(-0.01)[cached: alt3.gmail-smtp-in.l.google.com]; NEURAL_HAM_SHORT(-0.97)[-0.974,0]; IP_SCORE(-2.20)[ip: (-2.84), ipnet: 2001:470::/32(-4.55), asn: 6939(-3.53), country: US(-0.09)]; FROM_EQ_ENVFROM(0.00)[]; R_DKIM_NA(0.00)[]; FREEMAIL_ENVFROM(0.00)[gmail.com]; ASN(0.00)[asn:6939, ipnet:2001:470::/32, country:US]; RCVD_TLS_LAST(0.00)[]; DMARC_POLICY_SOFTFAIL(0.10)[gmail.com : No valid SPF, No valid DKIM,none] X-Rspamd-Server: mx1.freebsd.org X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 21 Nov 2018 06:07:28 -0000 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 > > > > > 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.