Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 13 Jun 2012 16:29:02 -0700
From:      Mehmet Erol Sanliturk <m.e.sanliturk@gmail.com>
To:        Russell Cattelan <cattelan@thebarn.com>
Cc:        freebsd-hackers@freebsd.org
Subject:   Re: FreeBSD Boot Times
Message-ID:  <CAOgwaMunxVxunBsMRYTtxnMjGKWmEy%2BOxgqPv_G519YR=4XgSQ@mail.gmail.com>
In-Reply-To: <4FD91913.20607@thebarn.com>
References:  <20336.1339571779@critter.freebsd.dk> <4FD91913.20607@thebarn.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, Jun 13, 2012 at 3:49 PM, Russell Cattelan <cattelan@thebarn.com>wrote:

> On 6/13/12 2:16 AM, Poul-Henning Kamp wrote:
> > In message <alpine.BSF.2.00.1206130909310.73934@wojtek.tensor.gdynia.pl>,
> Wojci
> > ech Puchar writes:
> >
> > One of the major slowdowns is that we do all the device drivers
> > serially & synchronously.
> Yes definitely.
>
> I have been looking into how to potentially defer or parallelize
> device_attach'es. Defer is turning out to be hard enough since each
> system is has different requirements to reach a state where it can
> run /sbin/init. I've started with the John Baldwin's multipass work
> and have a system stops probing/attaching devices and allows the boot
> to continue on.
>
> The remaining passes I'm triggering from userspace once the system is up.
>
> This is all very crude at this point and has been an some work just
> to understand how the kernel startup code all links together.
>
> Note systemd looks interesting from from a demand based startup scheme
> much like apples launchd. (note systemd uses linux process groups so
> porting it would take some effort)
>
> Ideally it would be nice to get to the point where many devices are only
> attached once there is a demand for it. Say network interfaces for
> example: attach it once the init scripts need to config it and then
> hopefully in an async fashion. Unfortunately that will require locking
> a bit more fine grain than the current "Giant" lock.
>
> -Russell
> >
>
>

To reduce the boot time , my opinion is as follows :

During install or by using a program , generate a "Hardware Profile File" .

By editing it , mark some devices "No check" ( for example , a network card
or
PS/2 mouse or key board , is not connected , RS-232 , Firewire ,
unused SATA ports , unused IDE ports , etc. ,
then it is not necessary to check them . )

During boot , first read that "Hardware Profile File" .
Only check ports marked as "Check" .

After completion of boot , the other ports may checked to update
"Hardware Profile File" if it is requested in "Hardware Profile File" .

Later on , assume a new device is attached .

Run the "Hardware Profile" program to regenerate the "Hardware Profile
File" ,
or by using dmesg , manually add this device into "Hardware Profile File" .


For removable devices , if some USB , etc. ports are not used , they all
may be
marked as "No Check" , for example internal USB ports , unused back panel
ports .


I do not know such a scheme is useful or not , or usable or not .

If I were a boot manager program writer , I would try it .

To my knowledge which I may be wrong , at present there is no such a
facility .


Thank you very much .


Mehmet Erol Sanliturk



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAOgwaMunxVxunBsMRYTtxnMjGKWmEy%2BOxgqPv_G519YR=4XgSQ>