From: Pavel Machek <pavel@suse.cz>
To: "Rafael J. Wysocki" <rjw@sisk.pl>
Cc: Stefan Seyfried <seife@suse.de>,
LKML <linux-kernel@vger.kernel.org>,
Andy Isaacson <adi@hexapodia.org>
Subject: Re: [RFC/RFT] swsusp: image size tunable (was: Re: [PATCH][mm] swsusp: limit image size)
Date: Sun, 11 Dec 2005 00:01:34 +0100 [thread overview]
Message-ID: <20051210230134.GC5187@elf.ucw.cz> (raw)
In-Reply-To: <200512102356.27271.rjw@sisk.pl>
Hi!
> > > > > The tunable may be useful to people who'd like to achieve the
> > > > > maximum efficiency of suspend/resume and it would be a nice
> > > > > feature to have, I think, but let's say we'll try to implement it
> > > > > in the future, if still needed/wanted.
> > > >
> > > > Actually the tunable turned out to be quite easy to implement and I think
> > > > I'll need it for userspace swsusp (the suspend-handling userspace
> > > > process will need to tell the kernel how much space there is for the
> > > > image).
> > >
> > > Looks mostly okay to me, small comments below.
>
> A cleaner version with comments etc. follows.
Looks good to me. ACK.
Pavel
> Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
>
> Documentation/power/interface.txt | 11 +++++++++++
> Documentation/power/swsusp.txt | 7 ++++++-
> kernel/power/disk.c | 20 ++++++++++++++++++++
> kernel/power/power.h | 7 ++-----
> kernel/power/swsusp.c | 10 +++++++++-
> 5 files changed, 48 insertions(+), 7 deletions(-)
>
> Index: linux-2.6.15-rc5-mm1/kernel/power/disk.c
> ===================================================================
> --- linux-2.6.15-rc5-mm1.orig/kernel/power/disk.c 2005-12-07 23:19:03.000000000 +0100
> +++ linux-2.6.15-rc5-mm1/kernel/power/disk.c 2005-12-10 21:10:53.000000000 +0100
> @@ -367,9 +367,29 @@
>
> power_attr(resume);
>
> +static ssize_t image_size_show(struct subsystem * subsys, char *buf)
> +{
> + return sprintf(buf, "%u\n", image_size);
> +}
> +
> +static ssize_t image_size_store(struct subsystem * subsys, const char * buf, size_t n)
> +{
> + unsigned int size;
> +
> + if (sscanf(buf, "%u", &size) == 1) {
> + image_size = size;
> + return n;
> + }
> +
> + return -EINVAL;
> +}
> +
> +power_attr(image_size);
> +
> static struct attribute * g[] = {
> &disk_attr.attr,
> &resume_attr.attr,
> + &image_size_attr.attr,
> NULL,
> };
>
> Index: linux-2.6.15-rc5-mm1/kernel/power/power.h
> ===================================================================
> --- linux-2.6.15-rc5-mm1.orig/kernel/power/power.h 2005-12-10 20:59:52.000000000 +0100
> +++ linux-2.6.15-rc5-mm1/kernel/power/power.h 2005-12-10 21:13:04.000000000 +0100
> @@ -52,11 +52,8 @@
> extern unsigned int nr_copy_pages;
> extern struct pbe *pagedir_nosave;
>
> -/*
> - * Preferred image size in MB (set it to zero to get the smallest
> - * image possible)
> - */
> -#define IMAGE_SIZE 500
> +/* Preferred image size in MB (default 500) */
> +extern unsigned int image_size;
>
> extern asmlinkage int swsusp_arch_suspend(void);
> extern asmlinkage int swsusp_arch_resume(void);
> Index: linux-2.6.15-rc5-mm1/kernel/power/swsusp.c
> ===================================================================
> --- linux-2.6.15-rc5-mm1.orig/kernel/power/swsusp.c 2005-12-10 20:59:52.000000000 +0100
> +++ linux-2.6.15-rc5-mm1/kernel/power/swsusp.c 2005-12-10 22:21:25.000000000 +0100
> @@ -69,6 +69,14 @@
>
> #include "power.h"
>
> +/*
> + * Preferred image size in MB (tunable via /sys/power/image_size).
> + * When it is set to N, swsusp will do its best to ensure the image
> + * size will not exceed N MB, but if that is impossible, it will
> + * try to create the smallest image possible.
> + */
> +unsigned int image_size = 500;
> +
> #ifdef CONFIG_HIGHMEM
> unsigned int count_highmem_pages(void);
> int save_highmem(void);
> @@ -647,7 +655,7 @@
> if (!tmp)
> return -ENOMEM;
> pages += tmp;
> - } else if (size > (IMAGE_SIZE * 1024 * 1024) / PAGE_SIZE) {
> + } else if (size > (image_size * 1024 * 1024) / PAGE_SIZE) {
> tmp = shrink_all_memory(SHRINK_BITE);
> pages += tmp;
> }
> Index: linux-2.6.15-rc5-mm1/Documentation/power/swsusp.txt
> ===================================================================
> --- linux-2.6.15-rc5-mm1.orig/Documentation/power/swsusp.txt 2005-10-28 02:02:08.000000000 +0200
> +++ linux-2.6.15-rc5-mm1/Documentation/power/swsusp.txt 2005-12-10 23:49:08.000000000 +0100
> @@ -27,6 +27,11 @@
>
> echo platform > /sys/power/disk; echo disk > /sys/power/state
>
> +If you want to limit the suspend image size to N megabytes, do
> +
> +echo N > /sys/power/image_size
> +
> +before suspend (it is limited to 500 MB by default).
>
> Encrypted suspend image:
> ------------------------
> Index: linux-2.6.15-rc5-mm1/Documentation/power/interface.txt
> ===================================================================
> --- linux-2.6.15-rc5-mm1.orig/Documentation/power/interface.txt 2005-10-28 02:02:08.000000000 +0200
> +++ linux-2.6.15-rc5-mm1/Documentation/power/interface.txt 2005-12-10 23:42:39.000000000 +0100
> @@ -41,3 +41,14 @@
> It will only change to 'firmware' or 'platform' if the system supports
> it.
>
> +/sys/power/image_size controls the size of the image created by
> +the suspend-to-disk mechanism. It can be written a string
> +representing a non-negative integer that will be used as an upper
> +limit of the image size, in megabytes. The suspend-to-disk mechanism will
> +do its best to ensure the image size will not exceed that number. However,
> +if this turns out to be impossible, it will try to suspend anyway using the
> +smallest image possible. In particular, if "0" is written to this file, the
> +suspend image will be as small as possible.
> +
> +Reading from this file will display the current image size limit, which
> +is set to 500 MB by default.
--
Thanks, Sharp!
next prev parent reply other threads:[~2005-12-10 23:02 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-12-07 21:46 [PATCH][mm] swsusp: limit image size Rafael J. Wysocki
2005-12-07 21:52 ` Pavel Machek
2005-12-09 15:45 ` Stefan Seyfried
2005-12-09 15:48 ` Stefan Seyfried
2005-12-09 17:04 ` Rafael J. Wysocki
2005-12-09 18:30 ` Stefan Seyfried
2005-12-09 19:17 ` Pavel Machek
2005-12-09 22:08 ` Rafael J. Wysocki
2005-12-10 13:21 ` [RFC/RFT] swsusp: image size tunable (was: Re: [PATCH][mm] swsusp: limit image size) Rafael J. Wysocki
2005-12-10 16:06 ` Pavel Machek
2005-12-10 20:06 ` Rafael J. Wysocki
2005-12-10 22:56 ` Rafael J. Wysocki
2005-12-10 23:01 ` Pavel Machek [this message]
2005-12-16 2:09 ` Andy Isaacson
2005-12-16 10:16 ` Stefan Seyfried
2005-12-16 14:26 ` Christian Trefzer
2005-12-16 18:08 ` Rafael J. Wysocki
2005-12-16 19:29 ` Christian Trefzer
2005-12-16 21:09 ` Rafael J. Wysocki
2005-12-17 16:47 ` [RFC] swsusp: brainstorming on a freaked-out approach (was: Re: [RFC/RFT] swsusp: image size tunable) Christian Trefzer
2005-12-18 17:44 ` Pavel Machek
2005-12-18 18:24 ` [RFC] swsusp: brainstorming on a freaked-out approach Christian Trefzer
2005-12-10 22:59 ` [RFC/RFT] swsusp: image size tunable (was: Re: [PATCH][mm] swsusp: limit image size) Pavel Machek
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20051210230134.GC5187@elf.ucw.cz \
--to=pavel@suse.cz \
--cc=adi@hexapodia.org \
--cc=linux-kernel@vger.kernel.org \
--cc=rjw@sisk.pl \
--cc=seife@suse.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.