Re: Boot time: Kernel start parallelization issue?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 1/15/2011 11:33 PM, Dirk Behme wrote:

Do you talk about

http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=22a9d645677feefd402befd02edd59b122289ef1 http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=4ace92fc112c6069b4fcb95a31d3142d4a43ff2a http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=793180570ff2530d133343ceea85648de5f01b02 http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=f29d3b23238e1955a8094e038c72546e99308e61

http://lwn.net/Articles/314808/

merged with 2.6.29?

With a recent .37 kernel the usage of async_schedule() seems to be implemented for

yep

./drivers/acpi/battery.c
./drivers/s390/block/dasd.c
./drivers/base/power/main.c
./drivers/ata/libata-core.c
./drivers/scsi/sd.c
./drivers/md/raid5.c

With this, on an embedded system using none of this, the completely single-threaded start up reported in [2] seems to be reasonable, then?

quite likely.


This would mean that to improve the issues reported in [2], async_schedule() has to be implemented for the sub systems used, there, too? I.e. the USB init?

USB init is asynchronous internal to USB; this was one of the outcomes of a side discussion at the Kernel Summit a year and a half ago or so where Alan Stern visualized the problem... and solved it internal to USB.

Now, there is one 100 msec delay that is inherent to USB (mandatory delay required by the spec for voltage to stabilize) but that shouldn't be in the synchronous path anymore


what kernel are you seeing issues on?

[1] talks about 2.6.28, [2] talks about 2.6.34.

yeah 2.6.28 is a lost cause ;-)  2.6.34 should be not too bad.

Now, the one thing that's critical for all of this is that we need to do this data driven. Using async init is not always as easy as it sounds; there are device ordering things that need to be dealt with, and failure cases get much more complex as well.

So the first order of business ALWAYS is to get a bootgraph (from scripts/bootgraph.pl)... to see which things are big on the one hand, but also to see if there is gains to be had. There is absolutely no gain possible (in terms of making something async) if it is pretty much the last big thing in the boot that you are making asynchronous (since the end of kernel boot has to wait for it all anyway); there is only gains for async if the expensive operation, when made async, can run in parallel with something else expensive that comes later in the kernel init.

The bootgraph will show this opportunity / pitfall very clearly......

--
To unsubscribe from this list: send the line "unsubscribe linux-embedded" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Gstreamer Embedded]     [Linux MMC Devel]     [U-Boot V2]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux ARM Kernel]     [Linux OMAP]     [Linux SCSI]

  Powered by Linux