All of lore.kernel.org
 help / color / mirror / Atom feed
From: <yang.yang29@zte.com.cn>
To: <akpm@linux-foundation.org>, <david@redhat.com>
Cc: <imbrenda@linux.ibm.com>, <linux-kernel@vger.kernel.org>,
	<linux-mm@kvack.org>, <ran.xiaokai@zte.com.cn>,
	<xu.xin.sc@gmail.com>, <xu.xin16@zte.com.cn>,
	<yang.yang29@zte.com.cn>, <jiang.xuexin@zte.com.cn>
Subject: [PATCH v10 0/5] ksm: support tracking KSM-placed zero-pages
Date: Thu, 25 May 2023 13:41:58 +0800 (CST)	[thread overview]
Message-ID: <202305251341580149313@zte.com.cn> (raw)

From: xu xin <xu.xin16@zte.com.cn>

The core idea of this patch set is to enable users to perceive the number
of any pages merged by KSM, regardless of whether use_zero_page switch has
been turned on, so that users can know how much free memory increase is
really due to their madvise(MERGEABLE) actions. But the problem is, when
enabling use_zero_pages, all empty pages will be merged with kernel zero
pages instead of with each other as use_zero_pages is disabled, and then
these zero-pages are no longer monitored by KSM.

The motivations to do this is seen at:
https://lore.kernel.org/lkml/202302100915227721315@zte.com.cn/

In one word, we hope to implement the support for KSM-placed zero pages
tracking without affecting the feature of use_zero_pages, so that app
developer can also benefit from knowing the actual KSM profit by getting
KSM-placed zero pages to optimize applications eventually when
/sys/kernel/mm/ksm/use_zero_pages is enabled.

Change log
----------
v9->v10:
-------
(1) Fix a compile error due to [PATCH v8 3/5] when CONFIG_KSM is not set.

(2) Rename the function 'ksm_notify_unmap_zero_page' as
    'ksm_might_unmap_zero_page'.

(3) In [PATCH 5/5], we get ksm_zero_pages from its own 'mm' instead of
	the global system.

(4) In [PATCH 5/5], we add a subject task of testing ksm zero pages when
	unmerging by triggering write fault.

v8->v9:
------
(1) The previous [PATCH v8 4/6] is squashed into the current [PATCH v9 2/5].

(2) Improve the codes as David's suggestions.

v7->v8:
-------
(1) Since [1] which fix the bug of pte_mkdirty on sparc64 that makes pte
    writable, then we can remove the architechture restrictions of our
	features.
(2) Improve the scheme of update ksm_zero_pages: add the handling case when
    khugepaged replaces a shared zeropage by a THP. 

[1] https://lore.kernel.org/all/20230411141529.428991-2-david@redhat.com/

v6->v7:
-------
This is an all-newed version which is different from v6 which relys on KSM's
rmap_item. The patch series don't rely on rmap_item but pte_dirty, so the
general handling of tracking KSM-placed zero-pages is simplified a lot.

For safety, we restrict this feature only to the tested and known-working
architechtures (ARM, ARM64, and X86) fow now.

xu xin (5):
  ksm: support unsharing KSM-placed zero pages
  ksm: count all zero pages placed by KSM
  ksm: add ksm zero pages for each process
  ksm: consider KSM-placed zeropages when calculating KSM profit
  selftest: add a testcase of ksm zero pages

 Documentation/admin-guide/mm/ksm.rst              | 25 ++++--
 fs/proc/base.c                                    |  1 +
 include/linux/ksm.h                               | 20 +++++
 include/linux/mm_types.h                          |  9 ++-
 mm/khugepaged.c                                   |  2 +
 mm/ksm.c                                          | 28 +++++--
 mm/memory.c                                       |  5 +-
 tools/testing/selftests/mm/ksm_functional_tests.c | 98 ++++++++++++++++++++++-
 8 files changed, 172 insertions(+), 16 deletions(-)

-- 
2.15.2


             reply	other threads:[~2023-05-25  5:42 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-05-25  5:41 yang.yang29 [this message]
2023-05-25  5:52 ` [PATCH v10 1/5] ksm: support unsharing KSM-placed zero pages Yang Yang
2023-05-25  5:52 ` [PATCH v10 2/5] ksm: count all zero pages placed by KSM Yang Yang
2023-05-25  5:52 ` [PATCH v10 3/5] ksm: add ksm zero pages for each process Yang Yang
2023-05-25  5:54 ` [PATCH v10 4/5] ksm: consider KSM-placed zeropages when calculating KSM profit Yang Yang
2023-05-25  5:54 ` [PATCH v10 5/5] selftest: add a testcase of ksm zero pages Yang Yang
2023-05-30  9:12   ` 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=202305251341580149313@zte.com.cn \
    --to=yang.yang29@zte.com.cn \
    --cc=akpm@linux-foundation.org \
    --cc=david@redhat.com \
    --cc=imbrenda@linux.ibm.com \
    --cc=jiang.xuexin@zte.com.cn \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=ran.xiaokai@zte.com.cn \
    --cc=xu.xin.sc@gmail.com \
    --cc=xu.xin16@zte.com.cn \
    /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.