From patchwork Mon Sep 18 18:58:14 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stefan Roesch X-Patchwork-Id: 141523 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:172:b0:3f2:4152:657d with SMTP id h50csp2891329vqi; Mon, 18 Sep 2023 12:11:05 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGVGwlDHx4yCuW2xi66MWDZUkKaYiFYR9gYUKlIwhNPw+eBo/RhXMWNfzDpvgK88ffQhFXW X-Received: by 2002:a17:903:24f:b0:1c3:52ed:18f9 with SMTP id j15-20020a170903024f00b001c352ed18f9mr9482721plh.62.1695064265337; Mon, 18 Sep 2023 12:11:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1695064265; cv=none; d=google.com; s=arc-20160816; b=t6MLotgfDauwLbcZGW+/tQgs3sTSxRWB9j5J0GeZCjFU5AcdUVkWJUUp1yRhmRpJJ0 DkEu/NCMwAmQP0VzrpFVTcSn7tiftx4Uf4XsSMMrSBQtEsua9NsvVYBgYgGLBAok0y1Y wHXIddv3zBqumV9dX6HMFjAsLlzVfZkhla2JZKEfH8Yifc9v8YNjON19XVvPHocQcOrT 8j+aK2RiOiaBJWS/Y3t4yD38l5tRcbS6lGKxOcIHmKlvKTUP8C/36Xr47sosXKdT0XSL fXgLaQdOQeRXY97W4JqZZKNIKB27yHGFa+0qYrY+PdKZ0agiXl6PyeV7/rVE8Myuqhnm xyKg== 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=awJU8GMl6Va3wNMo4dFdW3id0t0DydghBy65nawHNHc=; fh=sS+J4OyOC0EcVLWJpS3mBHGeO+0+dYZJ+ImCUfzsrH4=; b=DoPeXRm2qlpeAg2HmXSrM/ejRb3ELpF4G0Qk3xPowrMHuDJ16WF4c4OOT1f7bftC24 yc0XwDtFiWONlW11Cv4sguL5j1zHIzkgQ5iz1DBdxSjoahmjC6rVV1uIZlsOU4wyU4YP NbqAaU4xorQg0mha5GXKCbrqpZpW61k7P/vPFkvBAcwVAAOViv1M7ZGSFC65mCbTTp+N 8youETBYUvn6w5rWTs7XW6oWJz+1y4xFaDikv1pKSsWeDALpV1Ab04a5S1fKBozRnrsK ev/VnJ51H1i1+ZoozSPyi7oKgcqJ3q/LZv87JmHRLgHrba4489z3BJh/oAbhhKc7zMLN U2YA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.38 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from fry.vger.email (fry.vger.email. [23.128.96.38]) by mx.google.com with ESMTPS id b13-20020a170902d50d00b001b9d0ad0d40si8270426plg.128.2023.09.18.12.11.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 Sep 2023 12:11:05 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.38 as permitted sender) client-ip=23.128.96.38; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.38 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 fry.vger.email (Postfix) with ESMTP id 2963F80BF19D; Mon, 18 Sep 2023 11:59:02 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at fry.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229947AbjIRS6x (ORCPT + 25 others); Mon, 18 Sep 2023 14:58:53 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57132 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229771AbjIRS6n (ORCPT ); Mon, 18 Sep 2023 14:58:43 -0400 Received: from 66-220-144-179.mail-mxout.facebook.com (66-220-144-179.mail-mxout.facebook.com [66.220.144.179]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AE087121 for ; Mon, 18 Sep 2023 11:58:37 -0700 (PDT) Received: by devbig1114.prn1.facebook.com (Postfix, from userid 425415) id 2B029C25F828; Mon, 18 Sep 2023 11:58:22 -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 v2 2/4] mm/ksm: add pages_skipped metric Date: Mon, 18 Sep 2023 11:58:14 -0700 Message-Id: <20230918185816.1518366-3-shr@devkernel.io> X-Mailer: git-send-email 2.39.3 In-Reply-To: <20230918185816.1518366-1-shr@devkernel.io> References: <20230918185816.1518366-1-shr@devkernel.io> MIME-Version: 1.0 X-Spam-Status: No, score=-0.8 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on fry.vger.email 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 (fry.vger.email [0.0.0.0]); Mon, 18 Sep 2023 11:59:02 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1777403707279233939 X-GMAIL-MSGID: 1777403707279233939 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 7a1aa3872cf4..7fbf22814c8d 100644 --- a/mm/ksm.c +++ b/mm/ksm.c @@ -293,6 +293,9 @@ static bool ksm_smart_scan; /* 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; @@ -2378,6 +2381,7 @@ static bool should_skip_rmap_item(struct page *page, * Skip the page and calculate skip_age on when to re-enable scanning * for this page. */ + ++ksm_pages_skipped; if (rmap_item->skip_age == 0) { rmap_item->skip_age = (age + skip_age(age)) & 0xFF; remove_rmap_item_from_tree(rmap_item); @@ -3468,6 +3472,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) { @@ -3565,6 +3576,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