FreeBSD Boot Times
Mehmet Erol Sanliturk
m.e.sanliturk at gmail.com
Wed Jun 13 23:29:04 UTC 2012
On Wed, Jun 13, 2012 at 3:49 PM, Russell Cattelan <cattelan at thebarn.com>wrote:
> On 6/13/12 2:16 AM, Poul-Henning Kamp wrote:
> > In message <alpine.BSF.2.00.1206130909310.73934 at 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
More information about the freebsd-hackers
mailing list