From patchwork Wed Sep 27 16:22:20 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stefan Roesch X-Patchwork-Id: 145464 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:cae8:0:b0:403:3b70:6f57 with SMTP id r8csp2754165vqu; Wed, 27 Sep 2023 09:37:30 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFinXcPr24pf5Q91DwCjaUKCaRPZz6kTwV0hQi8lK2yq8hKteDWM0Ag4kNcsEWNdjTeOGax X-Received: by 2002:a05:6870:14d2:b0:1da:ed10:bcb with SMTP id l18-20020a05687014d200b001daed100bcbmr3068559oab.31.1695832650316; Wed, 27 Sep 2023 09:37:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1695832650; cv=none; d=google.com; s=arc-20160816; b=TPZ1OJ6qQTais0D06JCvi6hGEXx2XPy03j63+3qA1fwdV9wpTkupZSIDAX9ktdyega ARoI5uhguJ9imxtzn4XHGqD8B9R5prJGsqPTZap28Cr82JH9ES/9PRRMoULzOn6XQ+Hn ME3OcDpLmIFS1uriaBAAjUE3/3PmzXb0TQone7T8LSsRFIkFmjH8WWpt8o17fYJg8iFh kOoMHDtXIjEfOpsKOaYioGhbX7/HbBh48YpvdE6YFb5aUneHyIk7aIW2UotpFtA8+SWE +JP8L+q1lVnRLjSECGJuSs0RJPUdVNvVyyc3ZJQrXKKAlylHUStfQYg3ty9FAbW/+uiq dLrg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=1LdjbrSTW7GDbAqE3wkNtvp3gXo6eKi0BIzKiZfMuRg=; fh=sS+J4OyOC0EcVLWJpS3mBHGeO+0+dYZJ+ImCUfzsrH4=; b=aDfBM3jyrOb2mAI/CRaTg9x9ORcbPn1ly5R8NBeHD1OZSFiwDrK/QGf8koF4zI8G0W mNMlGYE655xReHGHvM0WKdCwYXW/77GldoE7hR+M2rjcAzgMCy2zsppcQVvFy3r0xATU htRvFYPU7ySngHjT2WH7JQGFBXucHSgCHaZjgipCtFRrGhzip9UL4PQlf90Ld/l8qeDf 2RfSZE3w8goa70KdaSyPbNRaeyHpiH8xz9zmk1i0gD1iNP0mceoOKV3VBdS2C9Q8Avlo 8ma/tq+60sBsrw72A5usep1kJkSo9PCNA2AqEEAMPnCLvMPaQ5RYcSH7ayE9Rqa3Ngmk gMlg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from snail.vger.email (snail.vger.email. [23.128.96.37]) by mx.google.com with ESMTPS id k68-20020a633d47000000b00578c4e244easi5811981pga.791.2023.09.27.09.37.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 27 Sep 2023 09:37:30 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) client-ip=23.128.96.37; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id DE46F802C7E3; Wed, 27 Sep 2023 09:23:10 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231730AbjI0QW5 (ORCPT + 19 others); Wed, 27 Sep 2023 12:22:57 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36614 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231490AbjI0QWt (ORCPT ); Wed, 27 Sep 2023 12:22:49 -0400 Received: from 66-220-144-178.mail-mxout.facebook.com (66-220-144-178.mail-mxout.facebook.com [66.220.144.178]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3D4F092 for ; Wed, 27 Sep 2023 09:22:48 -0700 (PDT) Received: by devbig1114.prn1.facebook.com (Postfix, from userid 425415) id 47CAECA4DC12; Wed, 27 Sep 2023 09:22:32 -0700 (PDT) From: Stefan Roesch To: kernel-team@fb.com Cc: shr@devkernel.io, akpm@linux-foundation.org, david@redhat.com, hannes@cmpxchg.org, riel@surriel.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH v4 2/4] mm/ksm: add pages_skipped metric Date: Wed, 27 Sep 2023 09:22:20 -0700 Message-Id: <20230927162222.3827551-3-shr@devkernel.io> X-Mailer: git-send-email 2.39.3 In-Reply-To: <20230927162222.3827551-1-shr@devkernel.io> References: <20230927162222.3827551-1-shr@devkernel.io> MIME-Version: 1.0 X-Spam-Status: No, score=-0.1 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_BLOCKED,RDNS_DYNAMIC,SPF_HELO_PASS,SPF_NEUTRAL, TVD_RCVD_IP autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Wed, 27 Sep 2023 09:23:10 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1778209417348269140 X-GMAIL-MSGID: 1778209417348269140 This change adds the "pages skipped" metric. To be able to evaluate how successful smart page scanning is, the pages skipped metric can be compared to the pages scanned metric. The pages skipped metric is a cumulative counter. The counter is stored under /sys/kernel/mm/ksm/pages_skipped. Signed-off-by: Stefan Roesch Reviewed-by: David Hildenbrand --- mm/ksm.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/mm/ksm.c b/mm/ksm.c index c0a2e7759365..1df25a66f162 100644 --- a/mm/ksm.c +++ b/mm/ksm.c @@ -293,6 +293,9 @@ static bool ksm_smart_scan = 1; /* The number of zero pages which is placed by KSM */ unsigned long ksm_zero_pages; +/* The number of pages that have been skipped due to "smart scanning" */ +static unsigned long ksm_pages_skipped; + #ifdef CONFIG_NUMA /* Zeroed when merging across nodes is not allowed */ static unsigned int ksm_merge_across_nodes = 1; @@ -2376,6 +2379,7 @@ static bool should_skip_rmap_item(struct page *page, } /* Skip this page */ + ksm_pages_skipped++; rmap_item->remaining_skips--; remove_rmap_item_from_tree(rmap_item); return true; @@ -3463,6 +3467,13 @@ static ssize_t pages_volatile_show(struct kobject *kobj, } KSM_ATTR_RO(pages_volatile); +static ssize_t pages_skipped_show(struct kobject *kobj, + struct kobj_attribute *attr, char *buf) +{ + return sysfs_emit(buf, "%lu\n", ksm_pages_skipped); +} +KSM_ATTR_RO(pages_skipped); + static ssize_t ksm_zero_pages_show(struct kobject *kobj, struct kobj_attribute *attr, char *buf) { @@ -3560,6 +3571,7 @@ static struct attribute *ksm_attrs[] = { &pages_sharing_attr.attr, &pages_unshared_attr.attr, &pages_volatile_attr.attr, + &pages_skipped_attr.attr, &ksm_zero_pages_attr.attr, &full_scans_attr.attr, #ifdef CONFIG_NUMA