From owner-dev-commits-src-all@freebsd.org Wed Feb 24 02:21:29 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 7A21D55D24F; Wed, 24 Feb 2021 02:21:29 +0000 (UTC) (envelope-from cy.schubert@cschubert.com) Received: from smtp-out-so.shaw.ca (smtp-out-so.shaw.ca [64.59.136.138]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "Client", Issuer "CA" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4Dlfmn0bP6z3LvG; Wed, 24 Feb 2021 02:21:28 +0000 (UTC) (envelope-from cy.schubert@cschubert.com) Received: from spqr.komquats.com ([70.67.229.168]) by shaw.ca with ESMTPA id EjnqljthxnRGtEjnrlQ0Zs; Tue, 23 Feb 2021 19:21:28 -0700 X-Authority-Analysis: v=2.4 cv=cagXElPM c=1 sm=1 tr=0 ts=6035b828 a=7AlCcx2GqMg+lh9P3BclKA==:117 a=7AlCcx2GqMg+lh9P3BclKA==:17 a=xqWC_Br6kY4A:10 a=kj9zAlcOel0A:10 a=qa6Q16uM49sA:10 a=6I5d2MoRAAAA:8 a=pGLkceISAAAA:8 a=YxBL1-UpAAAA:8 a=EkcXrb_YAAAA:8 a=HENm2Bnh0uIwcDd5ynwA:9 a=CjuIK1q_8ugA:10 a=IjZwj45LgO3ly-622nXo:22 a=Ia-lj3WSrqcvXOmTRaiG:22 a=LK5xJRSDVpKd5WXXoEvA:22 Received: from slippy.cwsent.com (slippy [IPv6:fc00:1:1:1::5b]) by spqr.komquats.com (Postfix) with ESMTPS id 224A1204; Tue, 23 Feb 2021 18:21:26 -0800 (PST) Received: from slippy (localhost [127.0.0.1]) by slippy.cwsent.com (8.16.1/8.16.1) with ESMTP id 11O15bKn096987; Tue, 23 Feb 2021 17:05:37 -0800 (PST) (envelope-from Cy.Schubert@cschubert.com) Message-Id: <202102240105.11O15bKn096987@slippy.cwsent.com> X-Mailer: exmh version 2.9.0 11/07/2018 with nmh-1.7.1 Reply-to: Cy Schubert From: Cy Schubert X-os: FreeBSD X-Sender: cy@cwsent.com X-URL: http://www.cschubert.com/ To: Baptiste Daroussin cc: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Subject: Re: git: 77e1ccbee3ed - main - rc: implement parallel boot In-reply-to: <202102231027.11NARYYE041280@gitrepo.freebsd.org> References: <202102231027.11NARYYE041280@gitrepo.freebsd.org> Comments: In-reply-to Baptiste Daroussin message dated "Tue, 23 Feb 2021 10:27:34 +0000." Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Date: Tue, 23 Feb 2021 17:05:37 -0800 X-CMAE-Envelope: MS4xfG8e3bLSBzqRqYI5RUfaKLh+EmSV2dwOZsalKP/EVXCIoxS2QsGJbZTjsjJQCO8llvHZGlZxdngOHb2ZqtJVqjSwOkjPeaml6zaWG/Af0qcQKwx091ok +PliKenzEZY9giQhRqsWJFpgjk6W+9BLdlZ0WeqhEaWv9XKuod/xUBwycYnWT0/20jNd+w1Ax6PpknQFc9lA2lgaijFsRIe2ni0mOX38PJaVcpCFRVDLmrsV PGAo1eQnh3tzblYV+wcj36FvOfjB8yLNPfsgyS3OkEWNbJOWpUwWfo2em8+3spVQz0pl0vo1bCfWbaxQXGizdUiNct8NOzdnTLZ6tCipQW4= X-Rspamd-Queue-Id: 4Dlfmn0bP6z3LvG X-Spamd-Bar: ---- Authentication-Results: mx1.freebsd.org; none X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[] X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 24 Feb 2021 02:21:29 -0000 In message <202102231027.11NARYYE041280@gitrepo.freebsd.org>, Baptiste Daroussi n writes: > The branch main has been updated by bapt: > > URL: https://cgit.FreeBSD.org/src/commit/?id=77e1ccbee3ed6c837929e4e232fd07f9 > 5bfc8294 > > commit 77e1ccbee3ed6c837929e4e232fd07f95bfc8294 > Author: Rick Parrish > AuthorDate: 2021-02-07 06:15:21 +0000 > Commit: Baptiste Daroussin > CommitDate: 2021-02-23 10:16:53 +0000 > > rc: implement parallel boot > > take advantage of the rcorder -p argument to implement parallel > booting in rc. > > According to the author non scientific tests: > on a Core 2 Duo with spinning disk: > > | Services enabled | before | after | saving | > | 0 | 8s | 8s | 0 | > | 1 | 13s | 13s | 0 | > | 2 | 17s | 13s | 5 | > | 3 | 23s | 13s | 10 | > | 4 | 28s | 13s | 15 | > | 5 | 33s | 13s | 20 | > > PR: 249192 > MFC after: 3 weeks > --- > libexec/rc/rc | 49 ++++++++++++++++++++++++++++++++++--------------- > 1 file changed, 34 insertions(+), 15 deletions(-) > > diff --git a/libexec/rc/rc b/libexec/rc/rc > index 35db4a850516..722d7fe35884 100644 > --- a/libexec/rc/rc > +++ b/libexec/rc/rc > @@ -91,19 +91,31 @@ if ! [ -e ${firstboot_sentinel} ]; then > skip_firstboot="-s firstboot" > fi > > +# rc_parallel_start default is "NO" > +rc_parallel_start=${rc_parallel_start:-NO} > +_rc_parallel='' > +# enable rcorder -p if /etc/rc.conf rc_parallel_start is "YES" > +checkyesno rc_parallel_start && _rc_parallel='-p' > + > # Do a first pass to get everything up to $early_late_divider so that > # we can do a second pass that includes $local_startup directories > # > -files=`rcorder ${skip} ${skip_firstboot} /etc/rc.d/* 2>/dev/null` > +files=`rcorder ${skip} ${skip_firstboot} ${_rc_parallel} /etc/rc.d/* 2>/dev/ > null` > > _rc_elem_done=' ' > -for _rc_elem in ${files}; do > - run_rc_script ${_rc_elem} ${_boot} > - _rc_elem_done="${_rc_elem_done}${_rc_elem} " > - > - case "$_rc_elem" in > - */${early_late_divider}) break ;; > - esac > +IFS=$'\n' > +for _rc_group in ${files}; do > + IFS=$' ' > + for _rc_elem in ${_rc_group}; do > + run_rc_script ${_rc_elem} ${_boot} & > + _rc_elem_done="${_rc_elem_done}${_rc_elem} " > + > + case "$_rc_elem" in > + */${early_late_divider}) break ;; > + esac > + done > + wait > + IFS=$'\n' > done > > unset files local_rc > @@ -122,14 +134,21 @@ if [ -e ${firstboot_sentinel} ]; then > skip_firstboot="" > fi > > -files=`rcorder ${skip} ${skip_firstboot} /etc/rc.d/* ${local_rc} 2>/dev/null > ` > -for _rc_elem in ${files}; do > - case "$_rc_elem_done" in > - *" $_rc_elem "*) continue ;; > - esac > - > - run_rc_script ${_rc_elem} ${_boot} > +files=`rcorder ${skip} ${skip_firstboot} /etc/rc.d/* ${local_rc} ${_rc_paral > lel} 2>/dev/null` > +IFS=$'\n' > +for _rc_group in ${files}; do > + IFS=$' ' > + for _rc_elem in ${_rc_group}; do > + case "$_rc_elem_done" in > + *" $_rc_elem "*) continue ;; > + esac > + > + run_rc_script ${_rc_elem} ${_boot} & > + done > + wait > + IFS=$'\n' > done > +unset IFS > > # Remove the firstboot sentinel, and reboot if it was requested. > # Be a bit paranoid about removing it to handle the common failure > Since this commit my postfix, dovecot and nut fail to start at boot, and must be started by hand. -- Cheers, Cy Schubert FreeBSD UNIX: Web: https://FreeBSD.org NTP: Web: https://nwtime.org The need of the many outweighs the greed of the few.