linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Mike Rapoport <rppt@kernel.org>
To: David Hildenbrand <david@redhat.com>
Cc: linux-kernel@vger.kernel.org,
	virtualization@lists.linux-foundation.org, linux-mm@kvack.org,
	Andrew Morton <akpm@linux-foundation.org>,
	Michal Hocko <mhocko@suse.com>,
	"Michael S . Tsirkin" <mst@redhat.com>,
	Mike Kravetz <mike.kravetz@oracle.com>,
	Pankaj Gupta <pankaj.gupta.linux@gmail.com>,
	Baoquan He <bhe@redhat.com>
Subject: Re: [PATCH v3 6/6] mm: document semantics of ZONE_MOVABLE
Date: Tue, 4 Aug 2020 12:33:23 +0300	[thread overview]
Message-ID: <20200804093323.GB8243@kernel.org> (raw)
In-Reply-To: <20200804072408.5481-7-david@redhat.com>

On Tue, Aug 04, 2020 at 09:24:08AM +0200, David Hildenbrand wrote:
> Let's document what ZONE_MOVABLE means, how it's used, and which special
> cases we have regarding unmovable pages (memory offlining vs. migration /
> allocations).
> 
> Cc: Andrew Morton <akpm@linux-foundation.org>
> Cc: Michal Hocko <mhocko@suse.com>
> Cc: Michael S. Tsirkin <mst@redhat.com>
> Cc: Mike Kravetz <mike.kravetz@oracle.com>
> Cc: Mike Rapoport <rppt@kernel.org>
> Cc: Pankaj Gupta <pankaj.gupta.linux@gmail.com>
> Cc: Baoquan He <bhe@redhat.com>
> Signed-off-by: David Hildenbrand <david@redhat.com>

Several nits below, othersize

Acked-by: Mike Rapoport <rppt@linux.ibm.com>

> ---
>  include/linux/mmzone.h | 34 ++++++++++++++++++++++++++++++++++
>  1 file changed, 34 insertions(+)
> 
> diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h
> index f6f884970511d..600d449e7d9e9 100644
> --- a/include/linux/mmzone.h
> +++ b/include/linux/mmzone.h
> @@ -372,6 +372,40 @@ enum zone_type {
>  	 */
>  	ZONE_HIGHMEM,
>  #endif
> +	/*
> +	 * ZONE_MOVABLE is similar to ZONE_NORMAL, except that it *primarily*
> +	 * only contains movable pages. Main use cases are to make memory

"Primarily only" sounds awkward. Maybe

	... except that it only contains movable pages with few exceptional
	cases described below. 

And then 

	Main use cases for ZONE_MOVABLE are ...

> +	 * offlining more likely to succeed, and to locally limit unmovable
> +	 * allocations - e.g., to increase the number of THP/huge pages.
> +	 * Notable special cases are:
> +	 *
> +	 * 1. Pinned pages: (Long-term) pinning of movable pages might

		            ^long, capital L looked out of place for me

> +	 *    essentially turn such pages unmovable. Memory offlining might
> +	 *    retry a long time.
> +	 * 2. memblock allocations: kernelcore/movablecore setups might create
> +	 *    situations where ZONE_MOVABLE contains unmovable allocations
> +	 *    after boot. Memory offlining and allocations fail early.
> +	 * 3. Memory holes: Such pages cannot be allocated. Applies only to
> +	 *    boot memory, not hotplugged memory. Memory offlining and
> +	 *    allocations fail early.

I would clarify where page struct for abscent memory come from

> +	 * 4. PG_hwpoison pages: While poisoned pages can be skipped during
> +	 *    memory offlining, such pages cannot be allocated.
> +	 * 5. Unmovable PG_offline pages: In paravirtualized environments,
> +	 *    hotplugged memory blocks might only partially be managed by the
> +	 *    buddy (e.g., via XEN-balloon, Hyper-V balloon, virtio-mem). The
> +	 *    parts not manged by the buddy are unmovable PG_offline pages. In
> +	 *    some cases (virtio-mem), such pages can be skipped during
> +	 *    memory offlining, however, cannot be moved/allocated. These
> +	 *    techniques might use alloc_contig_range() to hide previously
> +	 *    exposed pages from the buddy again (e.g., to implement some sort
> +	 *    of memory unplug in virtio-mem).
> +	 *
> +	 * In general, no unmovable allocations that degrade memory offlining
> +	 * should end up in ZONE_MOVABLE. Allocators (like alloc_contig_range())
> +	 * have to expect that migrating pages in ZONE_MOVABLE can fail (even
> +	 * if has_unmovable_pages() states that there are no unmovable pages,
> +	 * there can be false negatives).
> +	 */
>  	ZONE_MOVABLE,
>  #ifdef CONFIG_ZONE_DEVICE
>  	ZONE_DEVICE,
> -- 
> 2.26.2
> 

-- 
Sincerely yours,
Mike.


  reply	other threads:[~2020-08-04  9:33 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-08-04  7:24 [PATCH v3 0/6] mm / virtio-mem: support ZONE_MOVABLE David Hildenbrand
2020-08-04  7:24 ` [PATCH v3 1/6] mm/page_isolation: don't dump_page(NULL) in set_migratetype_isolate() David Hildenbrand
2020-08-04  7:24 ` [PATCH v3 2/6] mm/page_alloc: tweak comments in has_unmovable_pages() David Hildenbrand
2020-08-04  7:24 ` [PATCH v3 3/6] mm/page_isolation: drop WARN_ON_ONCE() in set_migratetype_isolate() David Hildenbrand
2020-08-04  7:24 ` [PATCH v3 4/6] mm/page_isolation: cleanup set_migratetype_isolate() David Hildenbrand
2020-08-04  7:24 ` [PATCH v3 5/6] virtio-mem: don't special-case ZONE_MOVABLE David Hildenbrand
2020-08-04  7:24 ` [PATCH v3 6/6] mm: document semantics of ZONE_MOVABLE David Hildenbrand
2020-08-04  9:33   ` Mike Rapoport [this message]
2020-08-04  9:55     ` David Hildenbrand
2020-08-04 10:03       ` Mike Rapoport
2020-08-04 10:04         ` David Hildenbrand

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=20200804093323.GB8243@kernel.org \
    --to=rppt@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=bhe@redhat.com \
    --cc=david@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mhocko@suse.com \
    --cc=mike.kravetz@oracle.com \
    --cc=mst@redhat.com \
    --cc=pankaj.gupta.linux@gmail.com \
    --cc=virtualization@lists.linux-foundation.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).