NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: misc/50046: Slow rc multiuser boot in 7.0 and current



The following reply was made to PR misc/50046; it has been noted by GNATS.

From: Alan Barrett <apb%cequrux.com@localhost>
To: gnats-bugs%NetBSD.org@localhost
Cc: misc-bug-people%netbsd.org@localhost, gnats-admin%netbsd.org@localhost,
	netbsd-bugs%netbsd.org@localhost
Subject: Re: misc/50046: Slow rc multiuser boot in 7.0 and current
Date: Wed, 12 Aug 2015 10:24:27 +0400

 On Sun, 12 Jul 2015, frank%phoenix.owl.de@localhost wrote:
 >>Description:
 >Since the workaround for PR 48714 the multiuser boot in 7.0 and current has become very slow, which especially affects smaller single-CPU platforms.
 
 I suspect the tests in the _have_rc_postprocessor function in rc.subr.
 There are even comments saying that they are expensive.
 
 Please try the appended patch.
 
 --apb (Alan Barrett)
 
 Index: etc/rc.subr
 ===================================================================
 --- rc.subr	7 Oct 2014 19:09:45 -0000	1.96
 +++ rc.subr	12 Aug 2015 06:14:04 -0000
 @@ -814,19 +814,9 @@ $command $rc_flags $command_args"
  _have_rc_postprocessor()
  {
  	# Cheap tests that fd and pid are set, fd is writable.
 -	[ -n "${_rc_postprocessor_fd}" ] || return 1
 -	[ -n "${_rc_pid}" ] || return 1
 -	eval ": >&${_rc_postprocessor_fd}" 2>/dev/null || return 1
 -
 -	# More expensive test that pid is running.
 -	# Unset _rc_pid if this fails.
 -	kill -0 "${_rc_pid}" 2>/dev/null \
 -	|| { unset _rc_pid; return 1; }
 -
 -	# More expensive test that pid appears to be
 -	# a shell running an rc script.
 -	# Unset _rc_pid if this fails.
 -	expr "$(ps -p "${_rc_pid}" -o command=)" : ".*sh .*/rc.*" >/dev/null \
 +	[ -n "${_rc_pid}" ] || { unset _rc_pid; return 1; }
 +	[ -n "${_rc_postprocessor_fd}" ] || { unset _rc_pid; return 1; }
 +	eval ": >&${_rc_postprocessor_fd}" 2>/dev/null \
  	|| { unset _rc_pid; return 1; }
  
  	return 0
 


Home | Main Index | Thread Index | Old Index