TuxOnIce development has been sponsored by:
|
Software Suspend - Features
Software Suspend's features include:
- Image compression (LZF - very fast and highly recommended).
- Full asynchronous I/O and readahead for synchronous I/O for maximum throughput.
- Multithreaded compression & I/O.
- Support for any number of swap partitions and/or files.
- The ability to cancel a suspend cycle (during suspending) by pressing escape.
- The ability to specify a maximum image size.
- Support for saving a full image of your memory, resulting in a fast, responsive system after resuming.
- Support for plugins: data transformers (compression, encryption) and new storage backends (NFS support is planned).
- Works out of the box for most configurations.
- Nice user interface (GenSplash compatible).
- Support for Highmem (up to 4GB), SMP and preemptive kernels.
- Scripting support.
- Speed and reliability - Software Suspend has been extensively tested in a variety of configurations over many months. It is not guaranteed to be perfect, but bugs found will be hunted and fixed quickly.
- Can be configured to be a drop-in replacement for swsusp (for swap partitions - swap files are configured more simply with TuxOnIce).
- Preliminary FUSE support.
- (Work in progress:) Cluster support.
Suspend-to-disk implementations explained
Since the original Software Suspend code was written by Gabor Kuti and
Pavel Machek back in 1998, four different implementations have been
created for the 2.6 kernel, all forks of the same original codebase. Here
is a quick comparison between the three that still exist. The first column refers
to CONFIG_SOFTWARE_SUSPEND in the 2.6 kernel. pmdisk has been merged
back into the original "swsusp" implementation in the kernel, and hence is no
longer listed here. The second column refers to what is now commonly called
"TuxOnIce" (previously Suspend2) and is what this site largely deals with. The third is userspace
swsusp, developed by Rafael Wysocki.
| Name |
swsusp |
TuxOnIce |
uswsusp |
| Available in kernel |
2.6.x |
patch against 2.6.x |
since 2.6.17 |
| Kernel config option |
CONFIG_HIBERNATION |
CONFIG_TUXONICE |
CONFIG_HIBERNATION |
| Principle author |
Rafael Wysocki |
Nigel Cunningham |
Rafael Wysocki |
| PM subsystem required |
none |
none |
none |
| Telling kernel at boot where to save image |
resume=/dev/hda# |
resume=<file:|swap:>/dev/[node]<:sector>
If file & swap allocators are both compiled in, swap is the default. |
|
| How to activate suspend |
echo -n disk > /sys/power/state |
echo > /sys/power/tuxonice/do_suspend or echo disk > /sys/power/state if replacing swsusp is enabled. |
Userspace program |
| Telling kernel not to try and resume in case of a problem |
noresume |
noresume |
? |
| Architecture support |
i386, ppc, x86_64, ia64 |
i386, ppc, x86_64, ia64 |
i386, ppc, x86_64, ia64 |
| Max. Image size |
1/2 memory |
See below |
1/2 memory |
| Highmem support |
Yes (up to 4GB) |
Yes (up to 4GB) |
Yes (up to 4GB) |
| Discontiguous memory support |
Yes |
Yes |
Yes |
| SMP support |
Yes |
Yes |
Yes |
| Preemption support |
Yes |
Yes |
Yes |
| Compression |
No |
via cryptoapi - LZF recommended |
Yes, with libraries |
| Encryption |
No |
by writing to dm-crypt partition |
With libraries |
| Suspend-to-swapfile support |
No |
Yes |
Yes? |
| Suspend-to-multiple swap partitions/files |
No |
Yes |
No |
| Suspend-to-file support |
No |
Yes |
No |
| Modular support |
No |
Yes (post 2.2.9) |
No |
| Initrd support (needed for LVM/dm-crypt) |
Yes |
Yes |
Required |
| UML support |
No |
No |
No |
| Wake alarm support |
No |
Yes |
No |
| Cluster support |
No |
In progress |
No |
| Suspend-over-NFS support |
No |
No (also planned ;) |
No |
| Auto swapon when starting to hibernate |
No |
Yes |
No |
| Easy location of resume= values |
No |
Yes |
No |
| Reconfigure without rebooting |
No |
Yes |
No |
| Full mem. accounting, leak detection, failure path testing. |
No |
Yes |
No |
| Expected compression ratio to avoid freeing too much mem. |
No |
Yes |
No |
| Scripting support. |
No |
Yes |
No |
| Keep image mode (For kiosks). |
No |
Yes |
No |
| Mark resume attempted (sane default if resuming fails). |
No |
Yes |
No |
| Multithreaded I/O |
No |
Yes |
No |
| Readahead. |
No |
Yes |
No |
| Cluster support. |
No |
In progress |
No |
| Interactive debugging |
No |
Yes |
No |
| Cancel hibernating via keyboard |
No |
Yes |
Yes |
| Cancel resuming via keyboard |
No |
Yes |
No |
| Switch poweroff method while hibernating |
No |
Yes |
No |
| Checksummed image |
No |
Yes |
No |
| Unloadable modules when not in use |
No |
Yes |
No |
| Fuse support |
No |
Preliminary |
No |
TuxOnIce saves the image in two parts. The first part consists of the page
cache, and is generally 70%+ of the memory in use. TuxOnIce saves this
first, since it's not needed while saving the remainder. It then makes
an atomic copy of the remainder, using the pages previously saved, and
stores the atomic copy. Working in this way, TuxOnIce can normally save
a full image of memory. Only if the page cache is smaller than 50% and
there is no other free memory will TuxOnIce be unable to save a full
image of memory.
Last updated: Wed, 09 Jan 2008 11:00:17 +0800
Frozen penguins image by darkmetal
and adapted by Nigel Cunningham
"Tuxsicle" artwork by Pierre-Philippe Coupard
Copyright © 2003-2005 Bernard B
|