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>