All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stefan Roesch <shr@devkernel.io>
To: linux-mm@kvack.org
Cc: shr@devkernel.io, linux-doc@vger.kernel.org,
	linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-kselftest@vger.kernel.org,
	linux-trace-kernel@vger.kernel.org
Subject: [RESEND RFC PATCH v1 09/20] mm: expose general_profit metric
Date: Mon, 23 Jan 2023 09:37:37 -0800	[thread overview]
Message-ID: <20230123173748.1734238-10-shr@devkernel.io> (raw)
In-Reply-To: <20230123173748.1734238-1-shr@devkernel.io>

The documentation mentions a general profit metric, however this metric
is not calculated. In addition the formula depends on the size of
internal structures, which makes it more difficult for an administrator
to make the calculation. Adding the metric for a better user experience.

Signed-off-by: Stefan Roesch <shr@devkernel.io>
---
 mm/ksm.c | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/mm/ksm.c b/mm/ksm.c
index 19f434f97dc1..d29454a802a0 100644
--- a/mm/ksm.c
+++ b/mm/ksm.c
@@ -3205,6 +3205,21 @@ static ssize_t pages_volatile_show(struct kobject *kobj,
 }
 KSM_ATTR_RO(pages_volatile);
 
+static ssize_t general_profit_show(struct kobject *kobj,
+				   struct kobj_attribute *attr, char *buf)
+{
+	long general_profit;
+	long all_rmap_items;
+
+	all_rmap_items = ksm_max_page_sharing + ksm_pages_shared +
+				ksm_pages_unshared + pages_volatile();
+	general_profit = ksm_pages_sharing * PAGE_SIZE -
+				all_rmap_items * sizeof(struct ksm_rmap_item);
+
+	return sysfs_emit(buf, "%ld\n", general_profit);
+}
+KSM_ATTR_RO(general_profit);
+
 static ssize_t stable_node_dups_show(struct kobject *kobj,
 				     struct kobj_attribute *attr, char *buf)
 {
@@ -3269,6 +3284,7 @@ static struct attribute *ksm_attrs[] = {
 	&stable_node_dups_attr.attr,
 	&stable_node_chains_prune_millisecs_attr.attr,
 	&use_zero_pages_attr.attr,
+	&general_profit_attr.attr,
 	NULL,
 };
 
-- 
2.30.2


  parent reply	other threads:[~2023-01-23 17:58 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-01-23 17:37 [RESEND RFC PATCH v1 00/20] mm: process/cgroup ksm support Stefan Roesch
2023-01-23 17:37 ` [RESEND RFC PATCH v1 01/20] mm: add new flag to enable ksm per process Stefan Roesch
2023-01-23 17:37 ` [RESEND RFC PATCH v1 02/20] mm: add flag to __ksm_enter Stefan Roesch
2023-01-23 17:37 ` [RESEND RFC PATCH v1 03/20] mm: add flag to __ksm_exit call Stefan Roesch
2023-01-23 17:37 ` [RESEND RFC PATCH v1 04/20] mm: invoke madvise for all vmas in scan_get_next_rmap_item Stefan Roesch
2023-01-23 17:37 ` [RESEND RFC PATCH v1 05/20] mm: support disabling of ksm for a process Stefan Roesch
2023-01-23 17:37 ` [RESEND RFC PATCH v1 06/20] mm: add new prctl option to get and set " Stefan Roesch
2023-01-23 17:37 ` [RESEND RFC PATCH v1 07/20] mm: add tracepoints to ksm Stefan Roesch
2023-01-30 17:03   ` Steven Rostedt
2023-01-23 17:37 ` [RESEND RFC PATCH v1 08/20] mm: split off pages_volatile function Stefan Roesch
2023-01-23 17:37 ` Stefan Roesch [this message]
2023-01-23 17:37 ` [RESEND RFC PATCH v1 10/20] docs: document general_profit sysfs knob Stefan Roesch
2023-01-24  4:07   ` Bagas Sanjaya
2023-01-24 16:21     ` Jonathan Corbet
2023-01-26  2:31       ` Bagas Sanjaya
2023-01-23 17:37 ` [RESEND RFC PATCH v1 11/20] mm: calculate ksm process profit metric Stefan Roesch
2023-01-23 17:37 ` [RESEND RFC PATCH v1 12/20] mm: add ksm_merge_type() function Stefan Roesch
2023-01-23 17:37 ` [RESEND RFC PATCH v1 13/20] mm: expose ksm process profit metric in ksm_stat Stefan Roesch
2023-01-23 17:37 ` [RESEND RFC PATCH v1 14/20] mm: expose ksm merge type " Stefan Roesch
2023-01-23 17:37 ` [RESEND RFC PATCH v1 15/20] docs: document new procfs ksm knobs Stefan Roesch
2023-01-24  4:09   ` Bagas Sanjaya
2023-01-23 17:37 ` [RESEND RFC PATCH v1 16/20] tools: add new prctl flags to prctl in tools dir Stefan Roesch
2023-01-23 17:37 ` [RESEND RFC PATCH v1 17/20] selftests/vm: add KSM prctl merge test Stefan Roesch
2023-01-23 17:37 ` [RESEND RFC PATCH v1 18/20] selftests/vm: add KSM get merge type test Stefan Roesch
2023-01-23 17:37 ` [RESEND RFC PATCH v1 19/20] selftests/vm: add KSM fork test Stefan Roesch
2023-01-23 17:37 ` [RESEND RFC PATCH v1 20/20] selftests/vm: add two functions for debugging merge outcome Stefan Roesch
2023-01-24 16:38 ` [RESEND RFC PATCH v1 00/20] mm: process/cgroup ksm support David Hildenbrand
2023-01-24 17:37   ` Stefan Roesch
2023-01-24 18:01     ` David Hildenbrand
2023-01-25 13:01       ` Michal Hocko
2023-01-25 18:43         ` Rik van Riel

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=20230123173748.1734238-10-shr@devkernel.io \
    --to=shr@devkernel.io \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linux-trace-kernel@vger.kernel.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.