Am 26.08.2015 um 14:28 schrieb Alexander Holler:
Hello,
(...)
Some numbers (5 boots on each board, without and with ordering drivers),
all times are seconds.
(...)
imx6q (armv7):
unordered:
3.451998 3.418864 3.446952 3.429974 3.440996 (3.4377568)
ordered:
3.538312 3.549019 3.538105 3.515916 3.555715 (3.5394134)
(...)
Further improvements could be to initialize drivers in parallel (using
multiple cores) and/or to use this stuff on x86 (ACPI) too (e.g. by using a
minimal DT which just includes dependencies).
I've now made a quick implementation which uses multiple threads to
initialize annotated drivers in parallel. It worked out of the box.
Here are the times (dmesg | grep Freeing) I've now measured on the imx6q
(4 cores):
3.388273 3.399892 3.411615 3.410523 3.388802 (3.399821)
So it's now at least as fast as without ordering the drivers. Even on
the one system where ordering didn't help without parallel
initialization (likely because the unordered sequence of initcalls is
already quiet good on that system, in comparison to the other systems
I've tested).
And my current implementation for the parallel stuff is far from being
perfect and can be optimized much more (enough to not post a patch
here). In addition I've added another driver to my config since I
measure the old times, so the new times are including one more
initialization of a driver (it now calls 30 annotated (static linked)
drivers at boot, most stuff is still in modules (and some not annotated
static linked drivers) on that system).
Maybe this helps raising interest enough that someone else will test and
maybe give some (reasonable, not about style) feedback on my patches.
Regards,
Alexander Holler
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html