simple task to speed up booting
Alfred Perlstein
bright at mu.org
Sun Dec 14 17:42:59 UTC 2014
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.
>>
>> 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.
>>
>
> 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.
>
> 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.
>
> -- Ian
>
> Index: lib/libstand/twiddle.c
> ===================================================================
> --- lib/libstand/twiddle.c (revision 274850)
> +++ lib/libstand/twiddle.c (working copy)
> @@ -46,7 +46,11 @@ void
> twiddle()
> {
> static int pos;
> + static int divisor;
>
> - putchar("|/-\\"[pos++ & 3]);
> - putchar('\b');
> + if (divisor-- == 0) {
> + divisor = 32;
> + putchar("|/-\\"[pos++ & 3]);
> + putchar('\b');
> + }
> }
Ian, can "divisor" be exposed so that it can be set based on the loader's output device?
That was we can preserve it for video consoles, but other things such as serial at <= 9600 could throttle it (or even shut it off… twiddle_divisor = TWIDDLE_SHUT_OFF).
-Alfred
-Alfred
More information about the freebsd-current
mailing list