All of lore.kernel.org
 help / color / mirror / Atom feed
From: kirill@shutemov.name (Kirill A. Shutemov)
To: linux-arm-kernel@lists.infradead.org
Subject: [RFC V2] mm:add KPF_ZERO_PAGE flag for /proc/kpageflags
Date: Fri, 5 Dec 2014 13:05:32 +0200	[thread overview]
Message-ID: <20141205110532.GA8782@node.dhcp.inet.fi> (raw)
In-Reply-To: <35FD53F367049845BC99AC72306C23D103E688B313F1@CNBJMBX05.corpusers.net>

On Fri, Dec 05, 2014 at 06:21:17PM +0800, Wang, Yalin wrote:
> This patch add KPF_ZERO_PAGE flag for zero_page,
> so that userspace process can notice zero_page from
> /proc/kpageflags, and then do memory analysis more accurately.
> 
> Signed-off-by: Yalin Wang <yalin.wang@sonymobile.com>
> ---
>  fs/proc/page.c                         | 14 +++++++++++---
>  include/linux/huge_mm.h                | 12 ++++++++++++
>  include/uapi/linux/kernel-page-flags.h |  1 +
>  mm/huge_memory.c                       |  7 +------
>  4 files changed, 25 insertions(+), 9 deletions(-)
> 
> diff --git a/fs/proc/page.c b/fs/proc/page.c
> index 1e3187d..dbe5630 100644
> --- a/fs/proc/page.c
> +++ b/fs/proc/page.c
> @@ -5,6 +5,7 @@
>  #include <linux/ksm.h>
>  #include <linux/mm.h>
>  #include <linux/mmzone.h>
> +#include <linux/huge_mm.h>
>  #include <linux/proc_fs.h>
>  #include <linux/seq_file.h>
>  #include <linux/hugetlb.h>
> @@ -121,9 +122,16 @@ u64 stable_page_flags(struct page *page)
>  	 * just checks PG_head/PG_tail, so we need to check PageLRU/PageAnon
>  	 * to make sure a given page is a thp, not a non-huge compound page.
>  	 */
> -	else if (PageTransCompound(page) && (PageLRU(compound_head(page)) ||
> -					     PageAnon(compound_head(page))))
> -		u |= 1 << KPF_THP;
> +	else if (PageTransCompound(page)) {
> +		struct page *head = compound_head(page);
> +
> +		if (PageLRU(head) || PageAnon(head))
> +			u |= 1 << KPF_THP;
> +		else if (is_huge_zero_page(head))
> +			u |= 1 << KPF_ZERO_PAGE;

IIUC, KPF_THP bit should be set for huge zero page too.

-- 
 Kirill A. Shutemov

WARNING: multiple messages have this Message-ID (diff)
From: "Kirill A. Shutemov" <kirill@shutemov.name>
To: "Wang, Yalin" <Yalin.Wang@sonymobile.com>
Cc: "'linux-kernel@vger.kernel.org'" <linux-kernel@vger.kernel.org>,
	"'linux-mm@kvack.org'" <linux-mm@kvack.org>,
	"'linux-arm-kernel@lists.infradead.org'"
	<linux-arm-kernel@lists.infradead.org>,
	'Konstantin Khlebnikov' <koct9i@gmail.com>,
	"'akpm@linux-foundation.org'" <akpm@linux-foundation.org>,
	"'n-horiguchi@ah.jp.nec.com'" <n-horiguchi@ah.jp.nec.com>
Subject: Re: [RFC V2] mm:add KPF_ZERO_PAGE flag for /proc/kpageflags
Date: Fri, 5 Dec 2014 13:05:32 +0200	[thread overview]
Message-ID: <20141205110532.GA8782@node.dhcp.inet.fi> (raw)
In-Reply-To: <35FD53F367049845BC99AC72306C23D103E688B313F1@CNBJMBX05.corpusers.net>

On Fri, Dec 05, 2014 at 06:21:17PM +0800, Wang, Yalin wrote:
> This patch add KPF_ZERO_PAGE flag for zero_page,
> so that userspace process can notice zero_page from
> /proc/kpageflags, and then do memory analysis more accurately.
> 
> Signed-off-by: Yalin Wang <yalin.wang@sonymobile.com>
> ---
>  fs/proc/page.c                         | 14 +++++++++++---
>  include/linux/huge_mm.h                | 12 ++++++++++++
>  include/uapi/linux/kernel-page-flags.h |  1 +
>  mm/huge_memory.c                       |  7 +------
>  4 files changed, 25 insertions(+), 9 deletions(-)
> 
> diff --git a/fs/proc/page.c b/fs/proc/page.c
> index 1e3187d..dbe5630 100644
> --- a/fs/proc/page.c
> +++ b/fs/proc/page.c
> @@ -5,6 +5,7 @@
>  #include <linux/ksm.h>
>  #include <linux/mm.h>
>  #include <linux/mmzone.h>
> +#include <linux/huge_mm.h>
>  #include <linux/proc_fs.h>
>  #include <linux/seq_file.h>
>  #include <linux/hugetlb.h>
> @@ -121,9 +122,16 @@ u64 stable_page_flags(struct page *page)
>  	 * just checks PG_head/PG_tail, so we need to check PageLRU/PageAnon
>  	 * to make sure a given page is a thp, not a non-huge compound page.
>  	 */
> -	else if (PageTransCompound(page) && (PageLRU(compound_head(page)) ||
> -					     PageAnon(compound_head(page))))
> -		u |= 1 << KPF_THP;
> +	else if (PageTransCompound(page)) {
> +		struct page *head = compound_head(page);
> +
> +		if (PageLRU(head) || PageAnon(head))
> +			u |= 1 << KPF_THP;
> +		else if (is_huge_zero_page(head))
> +			u |= 1 << KPF_ZERO_PAGE;

IIUC, KPF_THP bit should be set for huge zero page too.

-- 
 Kirill A. Shutemov

--
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>

WARNING: multiple messages have this Message-ID (diff)
From: "Kirill A. Shutemov" <kirill@shutemov.name>
To: "Wang, Yalin" <Yalin.Wang@sonymobile.com>
Cc: "'linux-kernel@vger.kernel.org'" <linux-kernel@vger.kernel.org>,
	"'linux-mm@kvack.org'" <linux-mm@kvack.org>,
	"'linux-arm-kernel@lists.infradead.org'" 
	<linux-arm-kernel@lists.infradead.org>,
	"'Konstantin Khlebnikov'" <koct9i@gmail.com>,
	"'akpm@linux-foundation.org'" <akpm@linux-foundation.org>,
	"'n-horiguchi@ah.jp.nec.com'" <n-horiguchi@ah.jp.nec.com>
Subject: Re: [RFC V2] mm:add KPF_ZERO_PAGE flag for /proc/kpageflags
Date: Fri, 5 Dec 2014 13:05:32 +0200	[thread overview]
Message-ID: <20141205110532.GA8782@node.dhcp.inet.fi> (raw)
In-Reply-To: <35FD53F367049845BC99AC72306C23D103E688B313F1@CNBJMBX05.corpusers.net>

On Fri, Dec 05, 2014 at 06:21:17PM +0800, Wang, Yalin wrote:
> This patch add KPF_ZERO_PAGE flag for zero_page,
> so that userspace process can notice zero_page from
> /proc/kpageflags, and then do memory analysis more accurately.
> 
> Signed-off-by: Yalin Wang <yalin.wang@sonymobile.com>
> ---
>  fs/proc/page.c                         | 14 +++++++++++---
>  include/linux/huge_mm.h                | 12 ++++++++++++
>  include/uapi/linux/kernel-page-flags.h |  1 +
>  mm/huge_memory.c                       |  7 +------
>  4 files changed, 25 insertions(+), 9 deletions(-)
> 
> diff --git a/fs/proc/page.c b/fs/proc/page.c
> index 1e3187d..dbe5630 100644
> --- a/fs/proc/page.c
> +++ b/fs/proc/page.c
> @@ -5,6 +5,7 @@
>  #include <linux/ksm.h>
>  #include <linux/mm.h>
>  #include <linux/mmzone.h>
> +#include <linux/huge_mm.h>
>  #include <linux/proc_fs.h>
>  #include <linux/seq_file.h>
>  #include <linux/hugetlb.h>
> @@ -121,9 +122,16 @@ u64 stable_page_flags(struct page *page)
>  	 * just checks PG_head/PG_tail, so we need to check PageLRU/PageAnon
>  	 * to make sure a given page is a thp, not a non-huge compound page.
>  	 */
> -	else if (PageTransCompound(page) && (PageLRU(compound_head(page)) ||
> -					     PageAnon(compound_head(page))))
> -		u |= 1 << KPF_THP;
> +	else if (PageTransCompound(page)) {
> +		struct page *head = compound_head(page);
> +
> +		if (PageLRU(head) || PageAnon(head))
> +			u |= 1 << KPF_THP;
> +		else if (is_huge_zero_page(head))
> +			u |= 1 << KPF_ZERO_PAGE;

IIUC, KPF_THP bit should be set for huge zero page too.

-- 
 Kirill A. Shutemov

  reply	other threads:[~2014-12-05 11:05 UTC|newest]

Thread overview: 75+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-12-05  8:57 [RFC] mm:add KPF_ZERO_PAGE flag for /proc/kpageflags Wang, Yalin
2014-12-05  8:57 ` Wang, Yalin
2014-12-05  8:57 ` Wang, Yalin
2014-12-05  9:20 ` Konstantin Khlebnikov
2014-12-05  9:20   ` Konstantin Khlebnikov
2014-12-05 10:22   ` Wang, Yalin
2014-12-05 10:22     ` Wang, Yalin
2014-12-05 10:22     ` Wang, Yalin
2014-12-05 22:31     ` Andrew Morton
2014-12-05 22:31       ` Andrew Morton
2014-12-05 22:31       ` Andrew Morton
2014-12-08  2:00       ` [RFC V4] " Wang, Yalin
2014-12-08  2:00         ` Wang, Yalin
2014-12-08 11:46         ` Kirill A. Shutemov
2014-12-08 11:46           ` Kirill A. Shutemov
2014-12-08 11:46           ` Kirill A. Shutemov
2014-12-09  3:24           ` [RFC V5] " Wang, Yalin
2014-12-09  3:24             ` Wang, Yalin
2014-12-10  7:22             ` [RFC] mm:fix zero_page huge_zero_page rss/pss statistic Wang, Yalin
2014-12-10  7:22               ` Wang, Yalin
2014-12-10 11:05               ` Kirill A. Shutemov
2014-12-10 11:05                 ` Kirill A. Shutemov
2014-12-10 11:05                 ` Kirill A. Shutemov
2014-12-12  1:59                 ` Wang, Yalin
2014-12-12  1:59                   ` Wang, Yalin
2014-12-12  1:59                   ` Wang, Yalin
2014-12-12 11:10                   ` Kirill A. Shutemov
2014-12-12 11:10                     ` Kirill A. Shutemov
2014-12-12 11:10                     ` Kirill A. Shutemov
2014-12-10 17:06             ` [RFC V5] mm:add KPF_ZERO_PAGE flag for /proc/kpageflags Konstantin Khlebnikov
2014-12-10 17:06               ` Konstantin Khlebnikov
2014-12-10 17:06               ` Konstantin Khlebnikov
2014-12-12  3:30               ` [RFC] discard task stack pages instead of pageout into swap partition Wang, Yalin
2014-12-12  3:30                 ` Wang, Yalin
2014-12-18  3:50                 ` [RFC] MADV_FREE doesn't work when doesn't have " Wang, Yalin
2014-12-18  3:50                   ` Wang, Yalin
2014-12-19  1:04                   ` Minchan Kim
2014-12-19  1:04                     ` Minchan Kim
2014-12-19  1:04                     ` Minchan Kim
2014-12-19  6:54                     ` Wang, Yalin
2014-12-19  6:54                       ` Wang, Yalin
2014-12-19  6:54                       ` Wang, Yalin
2014-12-22 10:30                     ` Konstantin Khlebnikov
2014-12-22 10:30                       ` Konstantin Khlebnikov
2014-12-22 10:30                       ` Konstantin Khlebnikov
2014-12-26 11:56                   ` [RFC] mm:change meminfo cached calculation Wang, Yalin
2014-12-26 11:56                     ` Wang, Yalin
2015-01-07  0:43                     ` Andrew Morton
2015-01-07  0:43                       ` Andrew Morton
2015-01-07  0:43                       ` Andrew Morton
2015-01-07  1:04                       ` Hugh Dickins
2015-01-07  1:04                         ` Hugh Dickins
2015-01-07  1:04                         ` Hugh Dickins
2015-01-07  1:25                         ` Andrew Morton
2015-01-07  1:25                           ` Andrew Morton
2015-01-07  1:25                           ` Andrew Morton
2015-01-07  2:03                           ` Hugh Dickins
2015-01-07  2:03                             ` Hugh Dickins
2015-01-07  2:03                             ` Hugh Dickins
2015-01-11  8:23                             ` Konstantin Khlebnikov
2015-01-11  8:23                               ` Konstantin Khlebnikov
2015-01-11  8:23                               ` Konstantin Khlebnikov
2014-12-05 10:21 ` [RFC V2] mm:add KPF_ZERO_PAGE flag for /proc/kpageflags Wang, Yalin
2014-12-05 10:21   ` Wang, Yalin
2014-12-05 11:05   ` Kirill A. Shutemov [this message]
2014-12-05 11:05     ` Kirill A. Shutemov
2014-12-05 11:05     ` Kirill A. Shutemov
2014-12-08  1:51     ` [RFC V3] " Wang, Yalin
2014-12-08  1:51       ` Wang, Yalin
2014-12-08  7:47   ` [PATCH] mm:add VM_BUG_ON() for page_mapcount() Wang, Yalin
2014-12-08  7:47     ` Wang, Yalin
2014-12-08  7:47     ` Wang, Yalin
2014-12-08 11:50     ` Kirill A. Shutemov
2014-12-08 11:50       ` Kirill A. Shutemov
2014-12-08 11:50       ` Kirill A. Shutemov

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=20141205110532.GA8782@node.dhcp.inet.fi \
    --to=kirill@shutemov.name \
    --cc=linux-arm-kernel@lists.infradead.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 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.