* How to debug kernel startup time? @ 2009-03-29 15:40 Corrado Zoccolo 2009-03-29 15:51 ` Arjan van de Ven 0 siblings, 1 reply; 5+ messages in thread From: Corrado Zoccolo @ 2009-03-29 15:40 UTC (permalink / raw) To: linux-kernel; +Cc: Arjan van de Ven Hi, I'm seeing around 2 s "lost" during kernel boot, that are not accounted for any init call (excerpt of dmesg with initcall_debug follows, kernel is 2.6.29). What's the suggested way to investigate such problems? Thanks, Corrado [ 1.797146] calling tcp_congestion_default+0x0/0xf @ 1 [ 1.797279] initcall tcp_congestion_default+0x0/0xf returned 0 after 48 usecs [ 1.911721] mmc0: new SDHC card at address b368 [ 1.912155] mmcblk0: mmc0:b368 SDC 7.46 GiB [ 1.912293] mmcblk0: p1 [ 2.095702] usb 1-5: New USB device found, idVendor=064e, idProduct=d101 [ 2.095801] usb 1-5: New USB device strings: Mfr=3, Product=1, SerialNumber=4 [ 2.095902] usb 1-5: Product: Acer Crystal Eye webcam [ 2.095980] usb 1-5: Manufacturer: SuYin [ 2.096053] usb 1-5: SerialNumber: CN0316-M608-OV01-VA-R02.00.00 [ 2.096440] usb 1-5: configuration #1 chosen from 1 choice [ 2.500110] Clocksource tsc unstable (delta = -282878412 ns) [ 3.946532] Synaptics Touchpad, model: 1, fw: 7.2, id: 0x1c0b1, caps: 0xd04771/0xa40000 [ 4.005707] input: SynPS/2 Synaptics TouchPad as /class/input/input7 [ 4.540135] async_waiting @ 1 [ 4.540226] async_continuing @ 1 after 1 usec [ 4.544604] kjournald starting. Commit interval 5 seconds [ 4.544697] EXT3-fs: mounted filesystem with ordered data mode. [ 4.544792] VFS: Mounted root (ext3 filesystem) readonly on device 8:1. [ 4.544917] async_waiting @ 1 [ 4.544991] async_continuing @ 1 after 1 usec [ 4.545222] Freeing unused kernel memory: 276k freed [ 4.545430] Write protecting the kernel text: 3128k [ 4.545576] Write protecting the kernel read-only data: 1480k -- __________________________________________________________________________ dott. Corrado Zoccolo mailto:czoccolo@gmail.com PhD - Department of Computer Science - University of Pisa, Italy -------------------------------------------------------------------------- ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: How to debug kernel startup time? 2009-03-29 15:40 How to debug kernel startup time? Corrado Zoccolo @ 2009-03-29 15:51 ` Arjan van de Ven 2009-03-29 16:45 ` Corrado Zoccolo 0 siblings, 1 reply; 5+ messages in thread From: Arjan van de Ven @ 2009-03-29 15:51 UTC (permalink / raw) To: Corrado Zoccolo; +Cc: linux-kernel On Sun, 29 Mar 2009 17:40:10 +0200 Corrado Zoccolo <czoccolo@gmail.com> wrote: > Hi, > I'm seeing around 2 s "lost" during kernel boot, that are not > accounted for any init call (excerpt of dmesg with initcall_debug > follows, kernel is 2.6.29). > What's the suggested way to investigate such problems? I take it you don't have an initrd ? If so I know what you are hitting; I have a patch to solve it but it's a bit convoluted and not ready for mainline.... let me know if you want to try it, I suspect it'll solve your issue ;) ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: How to debug kernel startup time? 2009-03-29 15:51 ` Arjan van de Ven @ 2009-03-29 16:45 ` Corrado Zoccolo 2009-03-29 16:59 ` Arjan van de Ven 0 siblings, 1 reply; 5+ messages in thread From: Corrado Zoccolo @ 2009-03-29 16:45 UTC (permalink / raw) To: Arjan van de Ven; +Cc: linux-kernel On Sun, Mar 29, 2009 at 5:51 PM, Arjan van de Ven <arjan@infradead.org> wrote: > On Sun, 29 Mar 2009 17:40:10 +0200 > Corrado Zoccolo <czoccolo@gmail.com> wrote: > >> Hi, >> I'm seeing around 2 s "lost" during kernel boot, that are not >> accounted for any init call (excerpt of dmesg with initcall_debug >> follows, kernel is 2.6.29). >> What's the suggested way to investigate such problems? > > I take it you don't have an initrd ? You guessed right. > > If so I know what you are hitting; I have a patch to solve it but it's > a bit convoluted and not ready for mainline.... let me know if you want > to try it, I suspect it'll solve your issue ;) > Sure. I'd like to test it. Thanks, Corrado -- __________________________________________________________________________ dott. Corrado Zoccolo mailto:czoccolo@gmail.com PhD - Department of Computer Science - University of Pisa, Italy -------------------------------------------------------------------------- ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: How to debug kernel startup time? 2009-03-29 16:45 ` Corrado Zoccolo @ 2009-03-29 16:59 ` Arjan van de Ven 2009-03-31 6:06 ` Corrado Zoccolo 0 siblings, 1 reply; 5+ messages in thread From: Arjan van de Ven @ 2009-03-29 16:59 UTC (permalink / raw) To: Corrado Zoccolo; +Cc: linux-kernel [-- Attachment #1: Type: text/plain, Size: 971 bytes --] On Sun, 29 Mar 2009 18:45:36 +0200 Corrado Zoccolo <czoccolo@gmail.com> wrote: > On Sun, Mar 29, 2009 at 5:51 PM, Arjan van de Ven > <arjan@infradead.org> wrote: > > On Sun, 29 Mar 2009 17:40:10 +0200 > > Corrado Zoccolo <czoccolo@gmail.com> wrote: > > > >> Hi, > >> I'm seeing around 2 s "lost" during kernel boot, that are not > >> accounted for any init call (excerpt of dmesg with initcall_debug > >> follows, kernel is 2.6.29). > >> What's the suggested way to investigate such problems? > > > > I take it you don't have an initrd ? > > You guessed right. > > > > > If so I know what you are hitting; I have a patch to solve it but > > it's a bit convoluted and not ready for mainline.... let me know if > > you want to try it, I suspect it'll solve your issue ;) > > > > Sure. I'd like to test it. > attached... -- Arjan van de Ven Intel Open Source Technology Centre For development, discussion and tips for power savings, visit http://www.lesswatts.org [-- Attachment #2: linux-2.6.29-dont-wait-for-mouse.patch --] [-- Type: text/x-patch, Size: 1359 bytes --] Subject: [PATCH] fastboot: remove "wait for all devices before mounting root" delay In the non-initrd case, we wait for all devices to finish their probing before we try to mount the rootfs. In practice, this means that we end up waiting 2 extra seconds for the PS/2 mouse probing even though the root holding device has been ready since a long time. The previous two patches in this series made the RAID autodetect code do it's own "wait for probing to be done" code, and added "wait and retry" functionality in case the root device isn't actually available. These two changes should make it safe to remove the delay itself, and this patch does this. On my test laptop, this reduces the boot time by 2 seconds (kernel time goes from 3.9 to 1.9 seconds). Signed-off-by: Arjan van de Ven <arjan@linux.intel.com> --- --- a/init/do_mounts.c 2009-01-07 18:42:10.000000000 -0800 +++ b/init/do_mounts.c 2009-01-07 18:43:02.000000000 -0800 @@ -370,14 +370,17 @@ void __init prepare_namespace(void) ssleep(root_delay); } +#if 0 /* * wait for the known devices to complete their probing * * Note: this is a potential source of long boot delays. * For example, it is not atypical to wait 5 seconds here * for the touchpad of a laptop to initialize. */ wait_for_device_probe(); +#endif + async_synchronize_full(); md_run_setup(); [-- Attachment #3: linux-2.6.29-retry-root-mount.patch --] [-- Type: text/x-patch, Size: 1923 bytes --] Subject: [PATCH] fastboot: retry mounting the root fs if we can't find init currently we wait until all device init is done before trying to mount the root fs, and to consequently execute init. In preparation for relaxing the first delay, this patch adds a retry attempt in case /sbin/init is not found. Before retrying, the code will wait for all device init to complete. While this patch by itself doesn't gain boot time yet (it needs follow on patches), the alternative already is to panic()... Signed-off-by: Arjan van de Ven <arjan@linux.intel.com> --- --- a/init/main.c 2009-01-07 18:29:11.000000000 -0800 +++ b/init/main.c 2009-01-07 18:32:08.000000000 -0800 @@ -837,6 +837,7 @@ static void run_init_process(char *init_ */ static noinline int init_post(void) { + int retry_count = 1; /* need to finish all async __init code before freeing the memory */ async_synchronize_full(); free_initmem(); @@ -859,6 +860,8 @@ static noinline int init_post(void) ramdisk_execute_command); } +retry: + /* * We try each of these until one succeeds. * @@ -871,6 +874,23 @@ static noinline int init_post(void) "defaults...\n", execute_command); } run_init_process("/sbin/init"); + + if (retry_count > 0) { + retry_count--; + /* + * We haven't found init yet... potentially because the device + * is still being probed. We need to + * - flush keventd and friends + * - wait for the known devices to complete their probing + * - try to mount the root fs again + */ + flush_scheduled_work(); + while (driver_probe_done() != 0) + msleep(100); + prepare_namespace(); + goto retry; + } + run_init_process("/etc/init"); run_init_process("/bin/init"); run_init_process("/bin/sh"); ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: How to debug kernel startup time? 2009-03-29 16:59 ` Arjan van de Ven @ 2009-03-31 6:06 ` Corrado Zoccolo 0 siblings, 0 replies; 5+ messages in thread From: Corrado Zoccolo @ 2009-03-31 6:06 UTC (permalink / raw) To: Arjan van de Ven; +Cc: linux-kernel On Sun, Mar 29, 2009 at 6:59 PM, Arjan van de Ven <arjan@infradead.org> wrote: > On Sun, 29 Mar 2009 18:45:36 +0200 > Corrado Zoccolo <czoccolo@gmail.com> wrote: > >> On Sun, Mar 29, 2009 at 5:51 PM, Arjan van de Ven >> <arjan@infradead.org> wrote: >> > On Sun, 29 Mar 2009 17:40:10 +0200 >> > Corrado Zoccolo <czoccolo@gmail.com> wrote: >> > >> >> Hi, >> >> I'm seeing around 2 s "lost" during kernel boot, that are not >> >> accounted for any init call (excerpt of dmesg with initcall_debug >> >> follows, kernel is 2.6.29). >> >> What's the suggested way to investigate such problems? >> > >> > I take it you don't have an initrd ? >> >> You guessed right. >> >> > >> > If so I know what you are hitting; I have a patch to solve it but >> > it's a bit convoluted and not ready for mainline.... let me know if >> > you want to try it, I suspect it'll solve your issue ;) >> > >> >> Sure. I'd like to test it. >> > > attached... They worked fine. With fastboot enabled + some ACPI patch that alexei is working on, I can now boot the kernel in 1.7s. Corrado > > -- > Arjan van de Ven Intel Open Source Technology Centre > For development, discussion and tips for power savings, > visit http://www.lesswatts.org > -- __________________________________________________________________________ dott. Corrado Zoccolo mailto:czoccolo@gmail.com PhD - Department of Computer Science - University of Pisa, Italy -------------------------------------------------------------------------- The self-confidence of a warrior is not the self-confidence of the average man. The average man seeks certainty in the eyes of the onlooker and calls that self-confidence. The warrior seeks impeccability in his own eyes and calls that humbleness. Tales of Power - C. Castaneda ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2009-03-31 6:06 UTC | newest] Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2009-03-29 15:40 How to debug kernel startup time? Corrado Zoccolo 2009-03-29 15:51 ` Arjan van de Ven 2009-03-29 16:45 ` Corrado Zoccolo 2009-03-29 16:59 ` Arjan van de Ven 2009-03-31 6:06 ` Corrado Zoccolo
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®