Re: [Suspend-devel] Resume performance

From: Rafael J. Wysocki
Date: Tue Sep 09 2008 - 16:27:19 EST


On Tuesday, 9 of September 2008, Anders Aagaard wrote:
> Rafael J. Wysocki wrote:
> > On Sunday, 7 of September 2008, Anders Aagaard wrote:
> >> Rafael J. Wysocki wrote:
> >>> On Friday, 5 of September 2008, Anders Aagaard wrote:
> >>>> Rafael J. Wysocki wrote:
> >>>>> On Friday, 5 of September 2008, Anders Aagaard wrote:
> >>>>>> Hi
> >>>>> Hi,
> >>>>>
> >>>>> This is a kernel problem, so let's CC the LKML.
> >>>>>
> >>>>>> I have a intel P35 board with a quad core cpu in it, it's currently
> >>>>>> running as a server for a small network, and I'd like to be able to shut
> >>>>>> it down when idle, and use wake on lan to wake it up when it's needed.
> >>>>>> Now I got that part working quite well, but for some reason I have a
> >>>>>> long delay in resume.
> >>>>>>
> >>>>>> I seem to remember being able to resume this computer in 2-3 seconds
> >>>>>> when I was testing it, now it needs 35 seconds to resume. It seems
> >>>>>> regardless of resume options used, and it always resumes to a working
> >>>>>> state without problems.
> >>>>> What kernel are you using at the moment and which one was used for the
> >>>>> testing?
> >>>> I'm using gentoo's 2.6.25-r7, I've also tried vanilla sources.
> >>> Would it be possible to test 2.6.27-rc5-gi7 from kernel.org?
> >> Tested, makes no difference.
> >>
> >>>>>> I've tried quite a lot of things, booting with noapic/nosmp, booting a
> >>>>>> kernel without usb/network drivers, disabling ahci (using ata_piix
> >>>>>> driver instead of ahci), and there's always that one long delay. And
> >>>>>> I'm not quite sure how the kernel printk timing information works, so
> >>>>>> I'm not sure whats causing that delay.
> >>>>>>
> >>>>>> Output from dmesg when booting with nosmp (to get accurate timing data):
> >>>>>> scripts/show_delta -b "Force enabled HPET at resume"
> >>>>>> [349.821150 < 7.039261 >] ata3.00: configured for UDMA/133
> >>>>>> [349.821160 < 7.039271 >] sd 2:0:0:0: [sdc] 976773168 512-byte hardware
> >>>>>> sectors (500108 MB)
> >>>>>> [349.821165 < 7.039276 >] sd 2:0:0:0: [sdc] Write Protect is off
> >>>>>> [349.821166 < 7.039277 >] sd 2:0:0:0: [sdc] Mode Sense: 00 3a 00 00
> >>>>>> [349.821173 < 7.039284 >] sd 2:0:0:0: [sdc] Write cache: enabled, read
> >>>>>> cache: enabled, doesn't support DPO or FUA
> >>>>>> [349.972801 < 7.190912 >] ata1: SATA link up 3.0 Gbps (SStatus 123
> >>>>>> SControl 300)
> >>>>>> [349.979060 < 7.197171 >] ata1.00: configured for UDMA/133
> >>>>>> [349.979070 < 7.197181 >] sd 0:0:0:0: [sda] 976771055 512-byte hardware
> >>>>>> sectors (500107 MB)
> >>>>>> [349.979075 < 7.197186 >] sd 0:0:0:0: [sda] Write Protect is off
> >>>>>> [349.979076 < 7.197187 >] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00
> >>>>>> [349.979083 < 7.197194 >] sd 0:0:0:0: [sda] Write cache: enabled, read
> >>>>>> cache: enabled, doesn't support DPO or FUA
> >>>>> It looks like this happens here. Can you try to unload the network driver
> >>>>> before suspend, please?
> >>>> I tried to build a kernel without it, and it still takes the exact same
> >>>> amount to boot, I've also tried unloading usb drivers and it takes the
> >>>> exact same amount of time.
> >>> Can you try to boot with init=/bin/bash and suspend to RAM? (Please have a
> >>> look at section 2 of Documentation/power/basic-pm-debugging.txt in the newer
> >>> kernel sources).
> >> I checked without X before, but forgot to unload the nvidia module, that
> >> apparently makes a big difference, I did some numbers with
> >> scripts/show_delta -b "Back to C".
> >>
> >> Nvidia and X : 32 seconds
> >> No X (same result as booting with init=/bin/bash) : 8.3 seconds
> >> Git kernel : 8.2 seconds
> >> Light kernel (no sound, network card and usb drivers) : 8.17 seconds
> >> ATI card instead of nvidia : 8.22 seconds
> >>
> >> I think we found the problem, I already replaced nvidia hardware in one
> >> computer to resolve another issue. Really appreciate your help on this
> >> issue, this resume time works pretty well for me, it was a bit
> >> ridiculous when I could boot faster than resume.
> >>
> >> Is 8 seconds fairly expected?
> >
> > Well, it should be a bit less than that. Usually, the resume shouldn't take
> > more than 5 sec.
> >
> >> My other computer (same ati card) boots
> >> in about 2 seconds, but there's a lot less hardware in it (6 hd's and a
> >> ton of usb devices in one computer, 1 hd and 1 usb device in the other).
> >
> > That may matter a lot. It would be interesting to check if detaching any of
> > those devices from the first machine helps. ;-)
> >
> >> I checked cold booting with and without usb devices, my light kernel
> >> boots to /bin/bash in 2.5 seconds, normal kernel about 7-8. But I dont
> >> see anything about usb on resume.
> >
> > Of course the USB devices are also resumed and that takes time (comparable
> > to the boot time).
>
> Pulling out all my usb devices takes the resume time to 30.4

This is with the NVidia driver I guess? So your resume appears to be 1.6 s
faster without the USB devices. Perhaps the disks also add to the latency.

If you have CONFIG_PCIEASPM set in the kernel config, you can try to unset it
and see if that changes anything.

Thanks,
Rafael
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/