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>