All of lore.kernel.org
 help / color / mirror / Atom feed
From: Pavel Machek <pavel@ucw.cz>
To: "Rafael J. Wysocki" <rjw@sisk.pl>
Cc: pm list <linux-pm@lists.linux-foundation.org>,
	Wu Fengguang <fengguang.wu@intel.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	LKML <linux-kernel@vger.kernel.org>,
	Nigel Cunningham <nigel@tuxonice.net>,
	David Rientjes <rientjes@google.com>,
	"linux-mm@kvack.org" <linux-mm@kvack.org>
Subject: Re: [RFC][PATCH 6/6] PM/Hibernate: Do not try to allocate too much memory too hard
Date: Fri, 15 May 2009 15:14:22 +0200	[thread overview]
Message-ID: <20090515131421.GD1976@elf.ucw.cz> (raw)
In-Reply-To: <200905141959.53810.rjw@sisk.pl>

Hi!

> > > We want to avoid attempting to free too much memory too hard during
> > > hibernation, so estimate the minimum size of the image to use as the
> > > lower limit for preallocating memory.
> > 
> > Why? Is freeing memory too slow?
> > 
> > It used to be that user controlled image size, so he was able to
> > balance "time to save image" vs. "responsiveness of system after
> > resume".
> > 
> > Does this just override user's preference when he chooses too small
> > image size?
> > 
> > > The approach here is based on the (experimental) observation that we
> > > can't free more page frames than the sum of:
> > > 
> > > * global_page_state(NR_SLAB_RECLAIMABLE)
> > > * global_page_state(NR_ACTIVE_ANON)
> > > * global_page_state(NR_INACTIVE_ANON)
> > > * global_page_state(NR_ACTIVE_FILE)
> > > * global_page_state(NR_INACTIVE_FILE)
> > > 
> > > and even that is usually impossible to free in practice, because some
> > > of the pages reported as global_page_state(NR_SLAB_RECLAIMABLE) can't
> > > in fact be freed.  It turns out, however, that if the sum of the
> > > above numbers is subtracted from the number of saveable pages in the
> > > system and the result is multiplied by 1.25, we get a suitable
> > > estimate of the minimum size of the image.
...
> > >  /**
> > > + * minimum_image_size - Estimate the minimum acceptable size of an image
> > > + * @saveable: The total number of saveable pages in the system.
> > > + *
> > > + * We want to avoid attempting to free too much memory too hard, so estimate the
> > > + * minimum acceptable size of a hibernation image to use as the lower limit for
> > > + * preallocating memory.
> > 
> > I don't get it. If user sets image size as 0, we should free as much
> > memory as we can. I just don't see why "we want to avoid... it".
> 
> The "as much memory as we can" is not well defined.

Well, while (1) kmalloc(1024, GFP_KERNEL | GFP_NO_OOMKILL); is
basically "as much memory as we can". I believe it is pretty well defined.

> Patches [4/6] and [5/6] make hibernation use memory allocations to force some
> memory to be freed.  However, it is not really reasonable to try to allocate
> until the allocation fails, because that stresses the memory management
> subsystem too much.  It is better to predict when it fails and stop allocating
> at that point, which is what the patch does.

Why is it wrong to stress memory management? It is a computer; it can
handle it. Does it take too long? Should the user just set image_size
higher in such case?

> The prediction is not very precise, but I think it need not be.  Even if it
> leaves a few pages more in memory, that won't be a disaster.

Well, on 128MB machine, you'll fail suspend even if it would fit if
code tried little harder...?
									Pavel
-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

WARNING: multiple messages have this Message-ID (diff)
From: Pavel Machek <pavel@ucw.cz>
To: "Rafael J. Wysocki" <rjw@sisk.pl>
Cc: pm list <linux-pm@lists.linux-foundation.org>,
	Wu Fengguang <fengguang.wu@intel.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	LKML <linux-kernel@vger.kernel.org>,
	Nigel Cunningham <nigel@tuxonice.net>,
	David Rientjes <rientjes@google.com>,
	"linux-mm@kvack.org" <linux-mm@kvack.org>
Subject: Re: [RFC][PATCH 6/6] PM/Hibernate: Do not try to allocate too much memory too hard
Date: Fri, 15 May 2009 15:14:22 +0200	[thread overview]
Message-ID: <20090515131421.GD1976@elf.ucw.cz> (raw)
In-Reply-To: <200905141959.53810.rjw@sisk.pl>

Hi!

> > > We want to avoid attempting to free too much memory too hard during
> > > hibernation, so estimate the minimum size of the image to use as the
> > > lower limit for preallocating memory.
> > 
> > Why? Is freeing memory too slow?
> > 
> > It used to be that user controlled image size, so he was able to
> > balance "time to save image" vs. "responsiveness of system after
> > resume".
> > 
> > Does this just override user's preference when he chooses too small
> > image size?
> > 
> > > The approach here is based on the (experimental) observation that we
> > > can't free more page frames than the sum of:
> > > 
> > > * global_page_state(NR_SLAB_RECLAIMABLE)
> > > * global_page_state(NR_ACTIVE_ANON)
> > > * global_page_state(NR_INACTIVE_ANON)
> > > * global_page_state(NR_ACTIVE_FILE)
> > > * global_page_state(NR_INACTIVE_FILE)
> > > 
> > > and even that is usually impossible to free in practice, because some
> > > of the pages reported as global_page_state(NR_SLAB_RECLAIMABLE) can't
> > > in fact be freed.  It turns out, however, that if the sum of the
> > > above numbers is subtracted from the number of saveable pages in the
> > > system and the result is multiplied by 1.25, we get a suitable
> > > estimate of the minimum size of the image.
...
> > >  /**
> > > + * minimum_image_size - Estimate the minimum acceptable size of an image
> > > + * @saveable: The total number of saveable pages in the system.
> > > + *
> > > + * We want to avoid attempting to free too much memory too hard, so estimate the
> > > + * minimum acceptable size of a hibernation image to use as the lower limit for
> > > + * preallocating memory.
> > 
> > I don't get it. If user sets image size as 0, we should free as much
> > memory as we can. I just don't see why "we want to avoid... it".
> 
> The "as much memory as we can" is not well defined.

Well, while (1) kmalloc(1024, GFP_KERNEL | GFP_NO_OOMKILL); is
basically "as much memory as we can". I believe it is pretty well defined.

> Patches [4/6] and [5/6] make hibernation use memory allocations to force some
> memory to be freed.  However, it is not really reasonable to try to allocate
> until the allocation fails, because that stresses the memory management
> subsystem too much.  It is better to predict when it fails and stop allocating
> at that point, which is what the patch does.

Why is it wrong to stress memory management? It is a computer; it can
handle it. Does it take too long? Should the user just set image_size
higher in such case?

> The prediction is not very precise, but I think it need not be.  Even if it
> leaves a few pages more in memory, that won't be a disaster.

Well, on 128MB machine, you'll fail suspend even if it would fit if
code tried little harder...?
									Pavel
-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

  parent reply	other threads:[~2009-05-15 13:14 UTC|newest]

Thread overview: 205+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-05-06 22:40 [RFC][PATCH 0/5] PM/Hibernate: Rework memory shrinking Rafael J. Wysocki
2009-05-06 22:41 ` [RFC][PATCH 1/5] PM/Freezer: Disable OOM killer when tasks are frozen Rafael J. Wysocki
2009-05-06 23:00   ` Nigel Cunningham
2009-05-07 12:10     ` Rafael J. Wysocki
2009-05-07 12:10     ` Rafael J. Wysocki
2009-05-06 23:00   ` Nigel Cunningham
2009-05-07  0:36   ` [linux-pm] [RFC][PATCH 1/5] PM/Freezer: Disable OOM killer whentasks " Matt Helsley
2009-05-07 12:09     ` Rafael J. Wysocki
2009-05-07 12:09     ` Rafael J. Wysocki
2009-05-07  0:36   ` Matt Helsley
2009-05-06 22:41 ` [RFC][PATCH 1/5] PM/Freezer: Disable OOM killer when tasks " Rafael J. Wysocki
2009-05-06 22:42 ` [RFC][PATCH 2/5] PM/Suspend: Do not shrink memory before suspend Rafael J. Wysocki
2009-05-06 23:01   ` Nigel Cunningham
2009-05-06 23:01   ` Nigel Cunningham
2009-05-06 22:42 ` Rafael J. Wysocki
2009-05-06 22:42 ` [RFC][PATCH 3/5] PM/Hibernate: Move memory shrinking to snapshot.c (rev. 2) Rafael J. Wysocki
2009-05-06 22:42 ` Rafael J. Wysocki
2009-05-06 22:44 ` [RFC][PATCH 4/5] PM/Hibernate: Rework shrinking of memory Rafael J. Wysocki
2009-05-06 23:27   ` Nigel Cunningham
2009-05-07 12:18     ` Rafael J. Wysocki
2009-05-07 12:18     ` Rafael J. Wysocki
2009-05-07 20:00       ` Rafael J. Wysocki
2009-05-07 20:00       ` Rafael J. Wysocki
2009-05-07 20:53         ` Nigel Cunningham
2009-05-07 20:53         ` Nigel Cunningham
2009-05-07 20:51       ` Nigel Cunningham
2009-05-07 20:51       ` Nigel Cunningham
2009-05-06 23:27   ` Nigel Cunningham
2009-05-06 22:44 ` Rafael J. Wysocki
2009-05-06 22:48 ` [RFC][PATCH 5/5] PM/Hibernate: Do not release preallocated memory unnecessarily Rafael J. Wysocki
2009-05-06 22:48 ` Rafael J. Wysocki
2009-05-07 21:48 ` [RFC][PATCH 0/5] PM/Hibernate: Rework memory shrinking (rev. 2) Rafael J. Wysocki
2009-05-07 21:48   ` Rafael J. Wysocki
2009-05-07 21:50   ` [RFC][PATCH 1/5] mm: Introduce __GFP_NO_OOM_KILL Rafael J. Wysocki
2009-05-07 21:50     ` Rafael J. Wysocki
2009-05-07 22:24     ` [RFC][PATCH] PM/Freezer: Disable OOM killer when tasks are frozen (was: Re: [RFC][PATCH 1/5] mm: Introduce __GFP_NO_OOM_KILL) Rafael J. Wysocki
2009-05-07 22:24     ` Rafael J. Wysocki
2009-05-07 22:24       ` Rafael J. Wysocki
2009-05-07 21:50   ` [RFC][PATCH 1/5] mm: Introduce __GFP_NO_OOM_KILL Rafael J. Wysocki
2009-05-07 21:51   ` [RFC][PATCH 2/5] PM/Suspend: Do not shrink memory before suspend Rafael J. Wysocki
2009-05-07 21:51   ` Rafael J. Wysocki
2009-05-07 21:51     ` Rafael J. Wysocki
2009-05-08  8:52     ` Wu Fengguang
2009-05-08  8:52       ` Wu Fengguang
2009-05-08  8:52     ` Wu Fengguang
2009-05-07 21:51   ` [RFC][PATCH 3/5] PM/Hibernate: Move memory shrinking to snapshot.c (rev. 2) Rafael J. Wysocki
2009-05-07 21:51     ` Rafael J. Wysocki
2009-05-08  8:53     ` Wu Fengguang
2009-05-08  8:53     ` Wu Fengguang
2009-05-08  8:53       ` Wu Fengguang
2009-05-07 21:51   ` Rafael J. Wysocki
2009-05-07 21:53   ` [RFC][PATCH 4/5] PM/Hibernate: Rework shrinking of memory Rafael J. Wysocki
2009-05-07 21:53     ` Rafael J. Wysocki
2009-05-07 21:53   ` Rafael J. Wysocki
2009-05-07 21:55   ` [RFC][PATCH 5/5] PM/Hibernate: Do not release preallocated memory unnecessarily Rafael J. Wysocki
2009-05-07 21:55   ` Rafael J. Wysocki
2009-05-07 21:55     ` Rafael J. Wysocki
2009-05-10 13:48   ` [RFC][PATCH 0/6] PM/Hibernate: Rework memory shrinking (rev. 3) Rafael J. Wysocki
2009-05-10 13:48   ` Rafael J. Wysocki
2009-05-10 13:48     ` Rafael J. Wysocki
2009-05-10 13:50     ` [RFC][PATCH 1/6] mm: Introduce __GFP_NO_OOM_KILL Rafael J. Wysocki
2009-05-10 13:50     ` Rafael J. Wysocki
2009-05-10 13:50       ` Rafael J. Wysocki
2009-05-11 20:12       ` David Rientjes
2009-05-11 20:12       ` David Rientjes
2009-05-11 20:12         ` David Rientjes
2009-05-11 22:14         ` Rafael J. Wysocki
2009-05-11 22:14           ` Rafael J. Wysocki
2009-05-11 22:33           ` Andrew Morton
2009-05-11 22:33           ` Andrew Morton
2009-05-11 22:33             ` Andrew Morton
2009-05-11 23:04             ` Rafael J. Wysocki
2009-05-11 23:04               ` Rafael J. Wysocki
2009-05-11 23:04             ` Rafael J. Wysocki
2009-05-11 22:14         ` Rafael J. Wysocki
2009-05-10 13:50     ` [RFC][PATCH 2/6] PM/Suspend: Do not shrink memory before suspend Rafael J. Wysocki
2009-05-10 13:50       ` Rafael J. Wysocki
2009-05-10 13:50       ` Rafael J. Wysocki
2009-05-10 13:51     ` [RFC][PATCH 3/6] PM/Hibernate: Move memory shrinking to snapshot.c (rev. 2) Rafael J. Wysocki
2009-05-10 13:51     ` Rafael J. Wysocki
2009-05-10 13:51       ` Rafael J. Wysocki
2009-05-10 13:53     ` [RFC][PATCH 4/6] PM/Hibernate: Rework shrinking of memory Rafael J. Wysocki
2009-05-10 13:53       ` Rafael J. Wysocki
2009-05-10 13:53     ` Rafael J. Wysocki
2009-05-10 13:57     ` [RFC][PATCH 5/6] PM/Hibernate: Do not release preallocated memory unnecessarily Rafael J. Wysocki
2009-05-10 13:57       ` Rafael J. Wysocki
2009-05-10 19:49       ` Rafael J. Wysocki
2009-05-10 19:49         ` Rafael J. Wysocki
2009-05-10 19:49       ` Rafael J. Wysocki
2009-05-10 13:57     ` Rafael J. Wysocki
2009-05-10 14:12     ` [RFC][PATCH 6/6] PM/Hibernate: Estimate hard core working set size Rafael J. Wysocki
2009-05-10 14:12     ` Rafael J. Wysocki
2009-05-10 14:12       ` Rafael J. Wysocki
2009-05-10 19:53       ` Rafael J. Wysocki
2009-05-10 19:53       ` Rafael J. Wysocki
2009-05-10 19:53         ` Rafael J. Wysocki
2009-05-13  8:32     ` [RFC][PATCH 0/6] PM/Hibernate: Rework memory shrinking (rev. 4) Rafael J. Wysocki
2009-05-13  8:32     ` Rafael J. Wysocki
2009-05-13  8:32       ` Rafael J. Wysocki
2009-05-13  8:34       ` [PATCH 1/6] PM/Suspend: Do not shrink memory before suspend Rafael J. Wysocki
2009-05-13  8:34         ` Rafael J. Wysocki
2009-05-13  8:34       ` Rafael J. Wysocki
2009-05-13  8:35       ` [PATCH 2/6] PM/Hibernate: Move memory shrinking to snapshot.c (rev. 2) Rafael J. Wysocki
2009-05-13  8:35       ` Rafael J. Wysocki
2009-05-13  8:35         ` Rafael J. Wysocki
2009-05-13  8:37       ` [PATCH 3/6] mm, PM/Freezer: Disable OOM killer when tasks are frozen Rafael J. Wysocki
2009-05-13  8:37         ` Rafael J. Wysocki
2009-05-13  9:19         ` Pavel Machek
2009-05-13  9:19           ` Pavel Machek
2009-05-13  9:19         ` Pavel Machek
2009-05-13 22:35         ` David Rientjes
2009-05-13 22:35         ` David Rientjes
2009-05-13 22:35           ` David Rientjes
2009-05-13 22:47           ` Andrew Morton
2009-05-13 22:47             ` Andrew Morton
2009-05-13 23:01             ` David Rientjes
2009-05-13 23:01             ` David Rientjes
2009-05-13 23:01               ` David Rientjes
2009-05-13 22:47           ` Andrew Morton
2009-05-13  8:37       ` Rafael J. Wysocki
2009-05-13  8:39       ` [PATCH 4/6] PM/Hibernate: Rework shrinking of memory Rafael J. Wysocki
2009-05-13  8:39         ` Rafael J. Wysocki
2009-05-13 19:34         ` Andrew Morton
2009-05-13 19:34           ` Andrew Morton
2009-05-13 20:55           ` Rafael J. Wysocki
2009-05-13 20:55             ` Rafael J. Wysocki
2009-05-13 21:16             ` Andrew Morton
2009-05-13 21:16               ` Andrew Morton
2009-05-13 21:56               ` Rafael J. Wysocki
2009-05-13 21:56                 ` Rafael J. Wysocki
2009-05-14  9:40                 ` Pavel Machek
2009-05-14  9:40                 ` Pavel Machek
2009-05-14  9:40                   ` Pavel Machek
2009-05-14 17:49                   ` Rafael J. Wysocki
2009-05-14 17:49                   ` Rafael J. Wysocki
2009-05-14 17:49                     ` Rafael J. Wysocki
2009-05-15 13:09                     ` Pavel Machek
2009-05-15 13:09                       ` Pavel Machek
2009-05-15 13:09                     ` Pavel Machek
2009-05-13 21:56               ` Rafael J. Wysocki
2009-05-13 21:16             ` Andrew Morton
2009-05-14 18:26             ` Rafael J. Wysocki
2009-05-14 18:26             ` Rafael J. Wysocki
2009-05-14 18:26               ` Rafael J. Wysocki
2009-05-13 20:55           ` Rafael J. Wysocki
2009-05-13 19:34         ` Andrew Morton
2009-05-13  8:39       ` Rafael J. Wysocki
2009-05-13  8:40       ` [PATCH 5/6] PM/Hibernate: Do not release preallocated memory unnecessarily (rev. 2) Rafael J. Wysocki
2009-05-13  8:40       ` Rafael J. Wysocki
2009-05-13  8:40         ` Rafael J. Wysocki
2009-05-14 11:09         ` Pavel Machek
2009-05-14 11:09           ` Pavel Machek
2009-05-14 17:52           ` Rafael J. Wysocki
2009-05-14 17:52           ` Rafael J. Wysocki
2009-05-14 17:52             ` Rafael J. Wysocki
2009-05-15 13:11             ` Pavel Machek
2009-05-15 13:11             ` Pavel Machek
2009-05-15 13:11               ` Pavel Machek
2009-05-15 14:52               ` Rafael J. Wysocki
2009-05-15 14:52                 ` Rafael J. Wysocki
2009-05-15 14:52               ` Rafael J. Wysocki
2009-05-14 11:09         ` Pavel Machek
2009-05-13  8:42       ` [RFC][PATCH 6/6] PM/Hibernate: Do not try to allocate too much memory too hard Rafael J. Wysocki
2009-05-13  8:42         ` Rafael J. Wysocki
2009-05-14 11:14         ` Pavel Machek
2009-05-14 11:14         ` Pavel Machek
2009-05-14 11:14           ` Pavel Machek
2009-05-14 17:59           ` Rafael J. Wysocki
2009-05-14 17:59           ` Rafael J. Wysocki
2009-05-14 17:59             ` Rafael J. Wysocki
2009-05-15 13:14             ` Pavel Machek
2009-05-15 13:14             ` Pavel Machek [this message]
2009-05-15 13:14               ` Pavel Machek
2009-05-15 14:40               ` Rafael J. Wysocki
2009-05-15 14:40                 ` Rafael J. Wysocki
2009-05-15 14:40               ` Rafael J. Wysocki
2009-05-17 12:06         ` Wu Fengguang
2009-05-17 12:06         ` Wu Fengguang
2009-05-17 12:06           ` Wu Fengguang
2009-05-17 12:55           ` Rafael J. Wysocki
2009-05-17 12:55           ` Rafael J. Wysocki
2009-05-17 12:55             ` Rafael J. Wysocki
2009-05-17 14:07             ` Wu Fengguang
2009-05-17 14:07             ` Wu Fengguang
2009-05-17 14:07               ` Wu Fengguang
2009-05-17 16:53               ` Rafael J. Wysocki
2009-05-17 16:53                 ` Rafael J. Wysocki
2009-05-18  8:32                 ` Wu Fengguang
2009-05-18  8:32                 ` Wu Fengguang
2009-05-18  8:32                   ` Wu Fengguang
2009-05-17 16:53               ` Rafael J. Wysocki
2009-05-17 21:14               ` Rafael J. Wysocki
2009-05-17 21:14                 ` Rafael J. Wysocki
2009-05-18  8:56                 ` Wu Fengguang
2009-05-18  8:56                 ` Wu Fengguang
2009-05-18  8:56                   ` Wu Fengguang
2009-05-18 17:07                   ` Rafael J. Wysocki
2009-05-18 17:07                     ` Rafael J. Wysocki
2009-05-19  0:47                     ` Wu Fengguang
2009-05-19  0:47                     ` Wu Fengguang
2009-05-19  0:47                       ` Wu Fengguang
2009-05-18 17:07                   ` Rafael J. Wysocki
2009-05-17 21:14               ` Rafael J. Wysocki
2009-05-13  8:42       ` Rafael J. Wysocki
2009-05-07 21:48 ` [RFC][PATCH 0/5] PM/Hibernate: Rework memory shrinking (rev. 2) Rafael J. Wysocki

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=20090515131421.GD1976@elf.ucw.cz \
    --to=pavel@ucw.cz \
    --cc=akpm@linux-foundation.org \
    --cc=fengguang.wu@intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linux-pm@lists.linux-foundation.org \
    --cc=nigel@tuxonice.net \
    --cc=rientjes@google.com \
    --cc=rjw@sisk.pl \
    /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.