Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 14 Dec 2014 09:43:00 -0800
From:      Alfred Perlstein <bright@mu.org>
To:        Ian Lepore <ian@FreeBSD.org>
Cc:        Poul-Henning Kamp <phk@phk.freebsd.dk>, current@freebsd.org
Subject:   Re: simple task to speed up booting
Message-ID:  <5764B4CA-A65B-4617-90E0-AA48C51310A0@mu.org>
In-Reply-To: <1418568731.935.8.camel@freebsd.org>
References:  <43445.1418553160@critter.freebsd.dk> <1418568731.935.8.camel@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help

On Dec 14, 2014, at 6:52 AM, Ian Lepore wrote:

> On Sun, 2014-12-14 at 10:32 +0000, Poul-Henning Kamp wrote:
>> The rotating swirlie ('-/|\') in the loader accounts for a =
surprisingly
>> large part of our boot time on systems with slow-ish serial consoles.
>>=20
>> I think right now it takes a step for each 512 byte read, reducing =
that
>> to once every 64kB or even 1MB would be an improvement with the kind =
of
>> kernel sizes we have today.
>>=20
>=20
> I experimented with that a while ago using the attached patch and was
> disappointed with the results.  As I vaguely remember it, a divisor of =
8
> looked fine, but had no significant speedup.  With a divisor of 32 the
> difference was measureable (only like 1.5 seconds or so faster), but =
it
> gave the impression that something was wrong, and the overall =
perception
> was that it was slower rather than faster, despite what a stopwatch
> said.
>=20
> I was testing at 115kbps, maybe at 9600 it would be significant.  I
> don't understand why anything these days is still defaulting to 9600.
> It's the 21st century, but we never got the George Jetson flying cars =
we
> were promised, and apparently we're never going to break loose from =
the
> standards set by accoustic-coupled modems.
>=20
> -- Ian
>=20
> Index: lib/libstand/twiddle.c
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
> --- lib/libstand/twiddle.c	(revision 274850)
> +++ lib/libstand/twiddle.c	(working copy)
> @@ -46,7 +46,11 @@ void
> twiddle()
> {
> 	static int pos;
> +	static int divisor;
>=20
> -	putchar("|/-\\"[pos++ & 3]);
> -	putchar('\b');
> +	if (divisor-- =3D=3D 0) {
> +		divisor =3D 32;
> +		putchar("|/-\\"[pos++ & 3]);
> +		putchar('\b');
> +	}
> }

Ian, can "divisor" be exposed so that it can be set based on the =
loader's output device? =20

That was we can preserve it for video consoles, but other things such as =
serial at <=3D 9600 could throttle it (or even shut it off=85 =
twiddle_divisor =3D TWIDDLE_SHUT_OFF).

-Alfred

-Alfred




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?5764B4CA-A65B-4617-90E0-AA48C51310A0>