From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758647AbbIDJSd (ORCPT ); Fri, 4 Sep 2015 05:18:33 -0400 Received: from h1446028.stratoserver.net ([85.214.92.142]:36463 "EHLO mail.ahsoftware.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755228AbbIDJSb (ORCPT ); Fri, 4 Sep 2015 05:18:31 -0400 Subject: deps: update in regard to parallel initialization of static linked drivers To: linux-kernel@vger.kernel.org References: <1440592108-3740-1-git-send-email-holler@ahsoftware.de> Cc: linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, Greg KH , Russel King , Andrew Morton , Grant Likely , Tomeu Vizoso From: Alexander Holler Message-ID: <55E961DA.5040009@ahsoftware.de> Date: Fri, 4 Sep 2015 11:18:18 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.1.0 MIME-Version: 1.0 In-Reply-To: <1440592108-3740-1-git-send-email-holler@ahsoftware.de> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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