Is there any way to speed up the resume from suspend to disk? Currently, on my
laptop it suspends in ~15s (wrote about 360MB) but resumes in ~120s and after
that I'm still left with ~361MB in swap:
total used free shared buffers cached
Mem: 3333472 1139332 2194140 0 12808 473084
-/+ buffers/cache: 653440 2680032
Swap: 2104472 369428 1735044
Right now I'm better off with a cold boot.
Although I did not study the kernel code to see how things really work, I
suspect on resume only necessary kernel data is loaded from swap and the
userland tasks are left with the page fault mechanism to bring back their own
data, which leads to an I/O storm on the swap device. Maybe changing the I/O
scheduler from CFQ would help? or better yet, is there any way to tell the
kernel to bring back all the pages from swap in one quick move? That would be
something I want to put in my resume scripts.
$ uname -a
Linux mdontu-dell 2.6.32-gentoo-r3 #1 SMP PREEMPT Mon Feb 1 02:36:01 EET 2010
x86_64 Intel(R) Core(TM)2 CPU T5500 @ 1.66GHz GenuineIntel GNU/Linux
I've installed Windows XP just for a test, started a few apps (like visual
studio, mplayer, etc.) and then suspended/hibernated (~15s). It took roughly
15s to come back.
PS: I'm editing this e-mail as I do tests and I just noticed that my /sbin
directory is empty. rmmod is there and I needed it to reload the b43 driver
which generally does not feel well after a suspend/resume. A reboot fixed it.
If you know how to patch and compile a kernel, try http://www.tuxonice.net/
I find it way faster and more reliable than the in-kernel hibernation.
You also need to install at least the hibernate script, since it is
way better for hibernation that pm-utils which most distros use.
Ubuntu and some other distros have binary kernels already patched and
the hibernate script packaged.
I have tested tuxonice for the past three days. It turns out it's the real
deal when it comes to suspend to disk and the devices "feel" better after the
tuxonice resume than after the built-in swsusp. Mm.