From patchwork Fri Aug 12 10:12:23 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: CGEL X-Patchwork-Id: 12942104 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2804AC00140 for ; Fri, 12 Aug 2022 10:12:30 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C1FC98E0006; Fri, 12 Aug 2022 06:12:29 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id BCF978E0001; Fri, 12 Aug 2022 06:12:29 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A97B28E0006; Fri, 12 Aug 2022 06:12:29 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 9D00D8E0001 for ; Fri, 12 Aug 2022 06:12:29 -0400 (EDT) Received: from smtpin16.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 80C78C1B88 for ; Fri, 12 Aug 2022 10:12:29 +0000 (UTC) X-FDA: 79790526018.16.CFB469E Received: from mail-pj1-f51.google.com (mail-pj1-f51.google.com [209.85.216.51]) by imf01.hostedemail.com (Postfix) with ESMTP id 1654840198 for ; Fri, 12 Aug 2022 10:12:28 +0000 (UTC) Received: by mail-pj1-f51.google.com with SMTP id c19-20020a17090ae11300b001f2f94ed5c6so7007364pjz.1 for ; Fri, 12 Aug 2022 03:12:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc; bh=1LS1w+4gYbBOJ3fgeWTMSBRNuWyP/hHFUM4MmFgbaww=; b=msf5OTF6rIik/luYMAcgB2uHDsWClBvHa1lbsogrHOmhX/n4FGKKX6qj6huLVdGGzM ICrQklW4Llnhk7Cyj44kXIqUJIXhyyrrKsvx+cNnGwdwXG4FZCKzwCXaRKw0Jdwu6/Be DQlu8saNmWgFOWG8h6+e0upSdMKZ2xgRkAzxSSe7F3jMKdYlqo83I6pww/xD/wwIfTax huQ3rvNDB/dzqZX0XhmNlADww25qcPliC0EW9QNCAw19rOE9d3j8dalYcd90puCvT3vO xWKxHZut21wxhoy+khsI7tDM3wgJfD0wFJJL3sO6aNdYvxnqrgZlxEpMnH5tXCJ5QdeJ CViA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc; bh=1LS1w+4gYbBOJ3fgeWTMSBRNuWyP/hHFUM4MmFgbaww=; b=WzmSGHI8LEA94UumJVl2Gw8E3CFA4FuewOBKrK8oXH7qVwnwm/LK72qeWSnzZYk4JP aeFjdZt1ZqnOuwh7JKvHuEXn5RWeAuSGFc80aYTehnycwEv4oerhEmR6mPLXtRo0oI0u kDvUwWd+aYJgbE1jIUWMDRTuAKKJ+nEB2h+OjeEcItGFrgGV8eg2pToGsqW2jmkrvtbq VqV20mc3//aKaM0rTRWPEGw3pZa4pz29LYZmWnyA3vgpv+ku0pTf86sx3SDrVOXdyOwL a75GQeRUhNWFnpW8PXqZvvJiQ9xkZGvDR8cmSDnMOhH047ns7z286xP9+EQP+1CS52gL aGew== X-Gm-Message-State: ACgBeo0hJXKcd9sr1svTXZGxcnNAiL5JBqjVnPoc18fnOeHtzNiHTRx3 2E6tv4+EsP+7cnnMaPs2lw4= X-Google-Smtp-Source: AA6agR7DyayXx1NhvFW/woPbk9r5UkcpGW14C9iIDwV3bfot22BChYdXQe8pWawSmvcYPnZeOr7zDQ== X-Received: by 2002:a17:90b:3b49:b0:1f4:df09:d671 with SMTP id ot9-20020a17090b3b4900b001f4df09d671mr3408405pjb.129.1660299148170; Fri, 12 Aug 2022 03:12:28 -0700 (PDT) Received: from localhost.localdomain ([193.203.214.57]) by smtp.gmail.com with ESMTPSA id mg21-20020a17090b371500b001f30b100e04sm4973885pjb.15.2022.08.12.03.12.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 12 Aug 2022 03:12:27 -0700 (PDT) From: cgel.zte@gmail.com X-Google-Original-From: xu.xin16@zte.com.cn To: akpm@linux-foundation.org, willy@infradead.org Cc: hughd@google.com, izik.eidus@ravellosystems.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org, xu.xin16@zte.com.cn, CGEL Subject: [PATCH v2 4/5] ksm: show ksmd status for auto mode Date: Fri, 12 Aug 2022 10:12:23 +0000 Message-Id: <20220812101223.41641-1-xu.xin16@zte.com.cn> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220812101102.41422-1-xu.xin16@zte.com.cn> References: <20220812101102.41422-1-xu.xin16@zte.com.cn> MIME-Version: 1.0 ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1660299149; a=rsa-sha256; cv=none; b=hsPQ5iTzxcCLSQwTlDeZ04ncN3jOBQJQk0fwc7dHO5LBSMWWX4H/XDYz/c4ert8L4ciRNx 8qWC1X16qiXha4av2s5bRnDRHedD0zT4LTjdUNIaL/n2zmVm+VS0znjTdhIvLLCiaPisUv d+VLWUEBiXuK4FMxHjk7t2uFTydCSAE= ARC-Authentication-Results: i=1; imf01.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=msf5OTF6; spf=pass (imf01.hostedemail.com: domain of cgel.zte@gmail.com designates 209.85.216.51 as permitted sender) smtp.mailfrom=cgel.zte@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1660299149; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=1LS1w+4gYbBOJ3fgeWTMSBRNuWyP/hHFUM4MmFgbaww=; b=qas1GB1jr3RTi01AcnR1pMNvPNpG60F3RxYL0LmmTVwIFe+2Qqz14GQwW3uRm048jb86Ui rgz0eBAmOgsnD8Yq5hlWlFhxzNdHRMqFOM9LIhb2Yv8sssqK3I1AYNTuXcLVyrtqn6q6uL uybOQKyHBjle4Fa/Lf48CG2PkUCApIc= X-Stat-Signature: tmahyec67z9je63c86t6qcgqemmpdeyf X-Rspamd-Queue-Id: 1654840198 X-Rspam-User: X-Rspamd-Server: rspam03 Authentication-Results: imf01.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=msf5OTF6; spf=pass (imf01.hostedemail.com: domain of cgel.zte@gmail.com designates 209.85.216.51 as permitted sender) smtp.mailfrom=cgel.zte@gmail.com; dmarc=pass (policy=none) header.from=gmail.com X-HE-Tag: 1660299148-207534 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: From: xu xin Add a sysfs interface of ksmd_status to show some details related with auto-mode. Signed-off-by: xu xin Signed-off-by: CGEL --- mm/ksm.c | 42 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/mm/ksm.c b/mm/ksm.c index c5fd4f520f4a..478bcf26bfcd 100644 --- a/mm/ksm.c +++ b/mm/ksm.c @@ -307,6 +307,9 @@ unsigned int ksm_auto_threshold = 20; /* Work in auto-mode. Whether trigger ksmd to compare and merge pages */ static bool auto_triggered; +/* Count of times that ksmd is triggered due to low free memory */ +static unsigned long triggered_times; + #ifdef CONFIG_NUMA /* Zeroed when merging across nodes is not allowed */ static unsigned int ksm_merge_across_nodes = 1; @@ -2487,8 +2490,10 @@ static bool should_trigger_ksmd_to_merge(void) static inline void trigger_ksmd_to_merge(void) { - if (!auto_triggered) + if (!auto_triggered) { + triggered_times++; auto_triggered = true; + } } static inline void stop_ksmd_to_merge(void) @@ -3118,6 +3123,40 @@ static ssize_t run_store(struct kobject *kobj, struct kobj_attribute *attr, } KSM_ATTR(run); +static ssize_t ksmd_status_show(struct kobject *kobj, + struct kobj_attribute *attr, char *buf) +{ + int len = 0; + unsigned int mergeable_mms = 0; + struct list_head *pos; + + list_for_each(pos, &ksm_mm_head.mm_list) + mergeable_mms++; + + if (ksm_run & KSM_RUN_AUTO) { + len += sysfs_emit_at(buf, len, "mode: auto\n"); + len += sysfs_emit_at(buf, len, "auto_triggered: %d\n", + auto_triggered); + len += sysfs_emit_at(buf, len, "mergeable_mms: %u\n", + mergeable_mms); + len += sysfs_emit_at(buf, len, "scanning_factor: %u\n", + scanning_factor); + len += sysfs_emit_at(buf, len, "triggered_times: %lu\n", + triggered_times); + } else if (ksm_run & KSM_RUN_MERGE) { + len += sysfs_emit_at(buf, len, "mode: on\n"); + len += sysfs_emit_at(buf, len, "mergeable_mms: %u\n", + mergeable_mms); + } else if (ksm_run & KSM_RUN_UNMERGE) + len += sysfs_emit_at(buf, len, "mode: unmerge\n"); + else + len += sysfs_emit_at(buf, len, "mode: off\n"); + + + return len; +} +KSM_ATTR_RO(ksmd_status); + static ssize_t auto_threshold_show(struct kobject *kobj, struct kobj_attribute *attr, char *buf) { @@ -3355,6 +3394,7 @@ static struct attribute *ksm_attrs[] = { &pages_to_scan_attr.attr, &max_scanning_factor_attr.attr, &run_attr.attr, + &ksmd_status_attr.attr, &auto_threshold_attr.attr, &pages_shared_attr.attr, &pages_sharing_attr.attr,