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>
Subject: [PATCH v7 0/6] ksm: support tracking KSM-placed zero-pages
Date: Thu, 13 Apr 2023 13:46:48 +0800 (CST)	[thread overview]
Message-ID: <202304131346489021903@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.

the patch uses pte_mkdirty (related with architecture) to mark KSM-placed
zero pages. Some architecture(like sparc64) treat R/O dirty PTEs as
writable, which will break KSM pages state (wrprotect) and affect
the KSM functionality. For safety, we restrict this feature only to the 
tested and known-working architechtures (ARM, ARM64, and X86) fow now.

Change log
----------
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 (6):
  ksm: support unsharing KSM-placed zero pages
  ksm: count all zero pages placed by KSM
  ksm: add ksm zero pages for each process
  ksm: add documentation for ksm zero pages
  ksm: update the calculation of KSM profit
  selftest: add a testcase of ksm zero pages

 Documentation/admin-guide/mm/ksm.rst              | 26 +++++---
 fs/proc/base.c                                    |  3 +
 include/linux/ksm.h                               | 27 ++++++++
 include/linux/mm_types.h                          | 11 +++-
 mm/Kconfig                                        | 23 ++++++-
 mm/ksm.c                                          | 28 ++++++++-
 mm/memory.c                                       |  7 ++-
 tools/testing/selftests/mm/ksm_functional_tests.c | 75 +++++++++++++++++++++++
 8 files changed, 187 insertions(+), 13 deletions(-)

-- 
2.15.2


             reply	other threads:[~2023-04-13  5:46 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-04-13  5:46 yang.yang29 [this message]
2023-04-13  5:50 ` [PATCH v7 1/6] ksm: support unsharing KSM-placed zero pages Yang Yang
2023-04-13  5:54 ` [PATCH v7 2/6] ksm: count all zero pages placed by KSM Yang Yang
2023-04-13  5:55 ` [PATCH v7 3/6] ksm: add ksm zero pages for each process Yang Yang
2023-04-13  5:56 ` [PATCH v7 4/6] ksm: add documentation for ksm zero pages Yang Yang
2023-04-13  5:57 ` [PATCH v7 5/6] ksm: update the calculation of KSM profit Yang Yang
2023-04-13  5:58 ` [PATCH v7 6/6] selftest: add a testcase of ksm zero pages Yang Yang
2023-04-17  8:03 ` [PATCH v7 0/6] ksm: support tracking KSM-placed zero-pages 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=202304131346489021903@zte.com.cn \
    --to=yang.yang29@zte.com.cn \
    --cc=akpm@linux-foundation.org \
    --cc=david@redhat.com \
    --cc=imbrenda@linux.ibm.com \
    --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.