From patchwork Tue Sep 26 04:09:36 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stefan Roesch X-Patchwork-Id: 144705 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:cae8:0:b0:403:3b70:6f57 with SMTP id r8csp1659046vqu; Mon, 25 Sep 2023 21:10:46 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFZex4UiDyWJTEbtzZjK3UrE3+sBSmscqBkYUbt0UyIxcO8+MVSpSw5UdDXnD4HCS+uToX8 X-Received: by 2002:a05:6358:5e17:b0:12b:e45b:3fac with SMTP id q23-20020a0563585e1700b0012be45b3facmr9713184rwn.32.1695701446446; Mon, 25 Sep 2023 21:10:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1695701446; cv=none; d=google.com; s=arc-20160816; b=d6LlcLJ0bTxLdv/R3q+qLeDxXhYDdzjfytfocjUwJ5sYKYz+Ck3WpQL926xIl80Kdv b+WjBWMdB1OGp7oama0/HYbSGv8lVQVQ4S+0cfrXwCs5BRkSEESo+uDiwEluFSKPM7A5 42Y4VJ9t458z+xuS5QuMcYEBt4pl+1hqeHEDhoZl/P14O/rGURa5ODyahsbGTs893QdB CCTxQLDvtbW+tYFO8zCK6ZPDjULnoqokARx3ZemGDuwkXUnX5CdPu7Ppo2b0hTGGLw0f aF6HRhicx2If3ExMB4fbch9L006ou4zzhxInNf8tU5e9xwAR2Ze/BHH3aAOdj+PwHwWc MItA== 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=wM4Sh7wNLr/HEbxi4LofFi4JD4PV8ZH53mZErVMmhPo=; fh=sS+J4OyOC0EcVLWJpS3mBHGeO+0+dYZJ+ImCUfzsrH4=; b=hTV7pGEXidkTNyRA+R0OU1klDVdRggck8zx6a8NlscOPkkMvNzUICaJmZUeW2vhnF6 9PAZbGtv9jw0RREaeoCjDgIIZqnPfyubOV3qzCMmoYQxrDZXXrQ38Bixwj9JEnGh7mQb CBzsRyWPPJg5PVsk7ZWxN6A1/t6YMFKNbft8WCOXFhQH8m92Vz7+emLcmoE+QHu7auuO w8pttJomeRUD81Eb7najQ1E4h5l4ZhyX6BRc9Y8OhfxMGkKhrf+7wxmcviOJ5CLvpR3z MnyorauYM5hGx6yOnX5d2j4+tIfjKqyuCfak3uQRJyIGZjakdPGMwVpE5CONNgSz8CXk PzgA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.36 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from pete.vger.email (pete.vger.email. [23.128.96.36]) by mx.google.com with ESMTPS id 1-20020a630101000000b005652a295669si11488205pgb.490.2023.09.25.21.10.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 25 Sep 2023 21:10:46 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.36 as permitted sender) client-ip=23.128.96.36; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.36 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 pete.vger.email (Postfix) with ESMTP id DBA7881A328C; Mon, 25 Sep 2023 21:10:31 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at pete.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233513AbjIZEKJ (ORCPT + 27 others); Tue, 26 Sep 2023 00:10:09 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47574 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230184AbjIZEKF (ORCPT ); Tue, 26 Sep 2023 00:10:05 -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 35C36E9 for ; Mon, 25 Sep 2023 21:09:57 -0700 (PDT) Received: by devbig1114.prn1.facebook.com (Postfix, from userid 425415) id 246DBC8F2417; Mon, 25 Sep 2023 21:09:43 -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 v3 1/4] mm/ksm: add "smart" page scanning mode Date: Mon, 25 Sep 2023 21:09:36 -0700 Message-Id: <20230926040939.516161-2-shr@devkernel.io> X-Mailer: git-send-email 2.39.3 In-Reply-To: <20230926040939.516161-1-shr@devkernel.io> References: <20230926040939.516161-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 pete.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 (pete.vger.email [0.0.0.0]); Mon, 25 Sep 2023 21:10:31 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1778071839968564187 X-GMAIL-MSGID: 1778071839968564187 This change adds a "smart" page scanning mode for KSM. So far all the candidate pages are continuously scanned to find candidates for de-duplication. There are a considerably number of pages that cannot be de-duplicated. This is costly in terms of CPU. By using smart scanning considerable CPU savings can be achieved. This change takes the history of scanning pages into account and skips the page scanning of certain pages for a while if de-deduplication for this page has not been successful in the past. To do this it introduces two new fields in the ksm_rmap_item structure: age and remaining_skips. age, is the KSM age and remaining_skips determines how often scanning of this page is skipped. The age field is incremented each time the page is scanned and the page cannot be de- duplicated. age updated is capped at U8_MAX. How often a page is skipped is dependent how often de-duplication has been tried so far and the number of skips is currently limited to 8. This value has shown to be effective with different workloads. The feature is currently disable by default and can be enabled with the new smart_scan knob. The feature has shown to be very effective: upt to 25% of the page scans can be eliminated; the pages_to_scan rate can be reduced by 40 - 50% and a similar de-duplication rate can be maintained. Signed-off-by: Stefan Roesch Reviewed-by: David Hildenbrand --- mm/ksm.c | 103 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 103 insertions(+) diff --git a/mm/ksm.c b/mm/ksm.c index 981af9c72e7a..d65eb48f9a13 100644 --- a/mm/ksm.c +++ b/mm/ksm.c @@ -56,6 +56,8 @@ #define DO_NUMA(x) do { } while (0) #endif +typedef u8 rmap_age_t; + /** * DOC: Overview * @@ -193,6 +195,8 @@ struct ksm_stable_node { * @node: rb node of this rmap_item in the unstable tree * @head: pointer to stable_node heading this list in the stable tree * @hlist: link into hlist of rmap_items hanging off that stable_node + * @age: number of scan iterations since creation + * @remaining_skips: how many scans to skip */ struct ksm_rmap_item { struct ksm_rmap_item *rmap_list; @@ -205,6 +209,8 @@ struct ksm_rmap_item { struct mm_struct *mm; unsigned long address; /* + low bits used for flags below */ unsigned int oldchecksum; /* when unstable */ + rmap_age_t age; + rmap_age_t remaining_skips; union { struct rb_node node; /* when node of unstable tree */ struct { /* when listed from stable tree */ @@ -281,6 +287,9 @@ static unsigned int zero_checksum __read_mostly; /* Whether to merge empty (zeroed) pages with actual zero pages */ static bool ksm_use_zero_pages __read_mostly; +/* Skip pages that couldn't be de-duplicated previously */ +static bool ksm_smart_scan; + /* The number of zero pages which is placed by KSM */ unsigned long ksm_zero_pages; @@ -2305,6 +2314,73 @@ static struct ksm_rmap_item *get_next_rmap_item(struct ksm_mm_slot *mm_slot, return rmap_item; } +/* + * Calculate skip age for the ksm page age. The age determines how often + * de-duplicating has already been tried unsuccessfully. If the age is + * smaller, the scanning of this page is skipped for less scans. + * + * @age: rmap_item age of page + */ +static unsigned int skip_age(rmap_age_t age) +{ + if (age <= 3) + return 1; + if (age <= 5) + return 2; + if (age <= 8) + return 4; + + return 8; +} + +/* + * Determines if a page should be skipped for the current scan. + * + * @page: page to check + * @rmap_item: associated rmap_item of page + */ +static bool should_skip_rmap_item(struct page *page, + struct ksm_rmap_item *rmap_item) +{ + rmap_age_t age; + + if (!ksm_smart_scan) + return false; + + /* + * Never skip pages that are already KSM; pages cmp_and_merge_page() + * will essentially ignore them, but we still have to process them + * properly. + */ + if (PageKsm(page)) + return false; + + age = rmap_item->age; + if (age != U8_MAX) + rmap_item->age++; + + /* + * Smaller ages are not skipped, they need to get a chance to go + * through the different phases of the KSM merging. + */ + if (age < 3) + return false; + + /* + * Are we still allowed to skip? If not, then don't skip it + * and determine how much more often we are allowed to skip next. + */ + if (!rmap_item->remaining_skips) { + rmap_item->remaining_skips = skip_age(age); + return false; + } + + /* Skip this page */ + rmap_item->remaining_skips--; + remove_rmap_item_from_tree(rmap_item); + return true; +} + static struct ksm_rmap_item *scan_get_next_rmap_item(struct page **page) { struct mm_struct *mm; @@ -2409,6 +2485,10 @@ static struct ksm_rmap_item *scan_get_next_rmap_item(struct page **page) if (rmap_item) { ksm_scan.rmap_list = &rmap_item->rmap_list; + + if (should_skip_rmap_item(*page, rmap_item)) + goto next_page; + ksm_scan.address += PAGE_SIZE; } else put_page(*page); @@ -3449,6 +3529,28 @@ static ssize_t full_scans_show(struct kobject *kobj, } KSM_ATTR_RO(full_scans); +static ssize_t smart_scan_show(struct kobject *kobj, + struct kobj_attribute *attr, char *buf) +{ + return sysfs_emit(buf, "%u\n", ksm_smart_scan); +} + +static ssize_t smart_scan_store(struct kobject *kobj, + struct kobj_attribute *attr, + const char *buf, size_t count) +{ + int err; + bool value; + + err = kstrtobool(buf, &value); + if (err) + return -EINVAL; + + ksm_smart_scan = value; + return count; +} +KSM_ATTR(smart_scan); + static struct attribute *ksm_attrs[] = { &sleep_millisecs_attr.attr, &pages_to_scan_attr.attr, @@ -3469,6 +3571,7 @@ static struct attribute *ksm_attrs[] = { &stable_node_chains_prune_millisecs_attr.attr, &use_zero_pages_attr.attr, &general_profit_attr.attr, + &smart_scan_attr.attr, NULL, }; From patchwork Tue Sep 26 04:09:37 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stefan Roesch X-Patchwork-Id: 144706 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:cae8:0:b0:403:3b70:6f57 with SMTP id r8csp1660254vqu; Mon, 25 Sep 2023 21:14:33 -0700 (PDT) X-Google-Smtp-Source: AGHT+IE1MlveEFM8qej+nhq8xbozfNK0iR2N2NKTaJUJeFtPlzEpwvYIRMCN1Bqh0ZWuuKK2seKA X-Received: by 2002:a05:6808:2122:b0:3ae:a81:55a9 with SMTP id r34-20020a056808212200b003ae0a8155a9mr12167909oiw.24.1695701673020; Mon, 25 Sep 2023 21:14:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1695701672; cv=none; d=google.com; s=arc-20160816; b=Ty+/v+MzCAhHjKIWZCncls7rvQgq2pmDq9xC7JXl9fRutBOv7iZmbNDNFv06KCi5h+ SFRoJPZpTaMDR+0DtbH5IRXi0Ka8Vc2OKCh1Ba+z2x8a4XqMt2si4jz239IMnsyGeHzy sbO4Chvr9+ctCr83P2ZVZFvH1i3swfRB4CCOnyteOAolnvaP3PIKVvCDTyGmV9zxKvA3 FXN97wrqw8nkpBb0QhJuEe9YsXRbQOIFMN4Ih3Owa2Sp8s7qEWsRV2Boiv+kd5meAaVi 5eljSFL6CxBA1AfTa4tSSlEwu5tFv23qHO0yT+/dzSKN8dSuKuv31LzaiuDfk/5GB0k8 pGZg== 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=rEeKjj+nCu8+n8S1jluBJxwJZhUI2GEoXKLMBjiuJJY=; fh=sS+J4OyOC0EcVLWJpS3mBHGeO+0+dYZJ+ImCUfzsrH4=; b=doXza2AmwLwNPsVC0O/meg+DrKg0ep8ZJq9ZB+QeKFsQD+IadoaIb3b91x3GZ4h9YO ew4VfqCJ2hkwBJv6a2DyXKi/EnTKJxtPvs4FU0lR1ceCbuEvGzzS1Ck6lgXFrh4nmb47 BqFM+sx1haO5Dty/SYJSkBWB/MQhCRKPoG9U4uEoGaqaCfAbM2d84AVR16vok8FEwmkj E42qonmL6CoFcyMlYCuwMINYOA8cy8zMbZLB3zOOmCrneMdCvz1/hfZ/iQfy8dnKIL2g I2fea+7qn4/oZTuYwbeImPms/mnqu4YMG2MXztE7uYQigRigP+LD09qm82u6PTP5YW5P hIXQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from lipwig.vger.email (lipwig.vger.email. [2620:137:e000::3:3]) by mx.google.com with ESMTPS id ds10-20020a056a004aca00b00690da053918si11275861pfb.4.2023.09.25.21.14.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 25 Sep 2023 21:14:32 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) client-ip=2620:137:e000::3:3; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 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 lipwig.vger.email (Postfix) with ESMTP id 8B2A18226F11; Mon, 25 Sep 2023 21:10:32 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233559AbjIZEKN (ORCPT + 27 others); Tue, 26 Sep 2023 00:10:13 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47588 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233231AbjIZEKF (ORCPT ); Tue, 26 Sep 2023 00:10:05 -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 385B7F2 for ; Mon, 25 Sep 2023 21:09:59 -0700 (PDT) Received: by devbig1114.prn1.facebook.com (Postfix, from userid 425415) id 82FD9C8F2446; Mon, 25 Sep 2023 21:09:44 -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 v3 2/4] mm/ksm: add pages_skipped metric Date: Mon, 25 Sep 2023 21:09:37 -0700 Message-Id: <20230926040939.516161-3-shr@devkernel.io> X-Mailer: git-send-email 2.39.3 In-Reply-To: <20230926040939.516161-1-shr@devkernel.io> References: <20230926040939.516161-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 lipwig.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 (lipwig.vger.email [0.0.0.0]); Mon, 25 Sep 2023 21:10:32 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1778072077945287479 X-GMAIL-MSGID: 1778072077945287479 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 d65eb48f9a13..3de130d170b7 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; @@ -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 From patchwork Tue Sep 26 04:09:38 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stefan Roesch X-Patchwork-Id: 144707 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:cae8:0:b0:403:3b70:6f57 with SMTP id r8csp1660283vqu; Mon, 25 Sep 2023 21:14:36 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEXvI+HZRVCyCqPWQe/X5UHJavcskwdYlFNGLe+K0PrfMABmGcAGLBoKQVOWapGByNTmGLz X-Received: by 2002:a05:6a20:3d21:b0:13d:a903:88e6 with SMTP id y33-20020a056a203d2100b0013da90388e6mr7398643pzi.48.1695701675910; Mon, 25 Sep 2023 21:14:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1695701675; cv=none; d=google.com; s=arc-20160816; b=mf6KnZtNNeM7snLB7NDbUQSrzibX7rNoBRmUIyi6AGr4llTQQsC8sOe4snCH6VZqph jOGx0pb8jP6VlkkgHBS0BBLRiHDht/H6pJ6waBEHxKZTG6RM9yfiS/pfCaZDJrn4109F ni4HoRuRSCiUniZMPgOAPP9WeKVUEqdQ3brYseTf9zFijK4Au+/IBWJirTiViyTm33rJ jV6Iwh9AQ8EKDJx9Npk1W+euz7FhemaIqnlrv57gunGpSoW9wDgYAxza85o0zyMe6rRL xzD4MunOGnLTXnCS/+eZMpL020l9f5OMHPUUEgyeQWwXJVPiqUHi6oSpVCohpcJ0jWSs ZECQ== 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=nRm5bKQCajx84URLpQRvcjK4/PXHSs3c43bjhVyrNbg=; fh=sS+J4OyOC0EcVLWJpS3mBHGeO+0+dYZJ+ImCUfzsrH4=; b=WLfsBuYIMl7/tzaCciDF9ZdrbNSb9WdEDpkohOXgRudRcBtffkIhdOGNKYyI8suz2T pTdq7rd4rOk+43LffseCjxRAmEAhZo1EinTuUS+G0XjDrVu109CKCHfftl/LqRimQX6y YxOhKOjKowI2uxstZ1XxdH701PuiQYq8b7GkDyS4KU/jSsTiVaPgUuDY1ZEMX5FvbGkF cGOlHiUBhPBK6ImjMly5VTtnEfZOMsq4UX26xt8DDDovDV6cM9+n2l4Y7RhtcOGTvrT3 hxx4/uVq336QZd6y4w1WwWUYDt9kOAMIdTeC+EsVug9+/Y4TVSha2dea/zMfOmCdkP4Z HS8A== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from lipwig.vger.email (lipwig.vger.email. [2620:137:e000::3:3]) by mx.google.com with ESMTPS id l5-20020a170903120500b001b84335fb90si12277398plh.286.2023.09.25.21.14.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 25 Sep 2023 21:14:35 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) client-ip=2620:137:e000::3:3; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 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 lipwig.vger.email (Postfix) with ESMTP id 98CAB8226F37; Mon, 25 Sep 2023 21:10:47 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233526AbjIZEKj (ORCPT + 27 others); Tue, 26 Sep 2023 00:10:39 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41220 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232910AbjIZEKh (ORCPT ); Tue, 26 Sep 2023 00:10:37 -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 C80BDF2 for ; Mon, 25 Sep 2023 21:10:30 -0700 (PDT) Received: by devbig1114.prn1.facebook.com (Postfix, from userid 425415) id C9CEAC8F245B; Mon, 25 Sep 2023 21:09:46 -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 v3 3/4] mm/ksm: document smart scan mode Date: Mon, 25 Sep 2023 21:09:38 -0700 Message-Id: <20230926040939.516161-4-shr@devkernel.io> X-Mailer: git-send-email 2.39.3 In-Reply-To: <20230926040939.516161-1-shr@devkernel.io> References: <20230926040939.516161-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 lipwig.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 (lipwig.vger.email [0.0.0.0]); Mon, 25 Sep 2023 21:10:47 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1778072080498769087 X-GMAIL-MSGID: 1778072080498769087 This adds documentation for the smart scan mode of KSM. Signed-off-by: Stefan Roesch Reviewed-by: David Hildenbrand --- Documentation/admin-guide/mm/ksm.rst | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Documentation/admin-guide/mm/ksm.rst b/Documentation/admin-guide/mm/ksm.rst index 776f244bdae4..1762219baf51 100644 --- a/Documentation/admin-guide/mm/ksm.rst +++ b/Documentation/admin-guide/mm/ksm.rst @@ -155,6 +155,15 @@ stable_node_chains_prune_millisecs scan. It's a noop if not a single KSM page hit the ``max_page_sharing`` yet. +smart_scan + By default KSM checks every candidate page for each scan. It does + not take into account historic information. When smart scan is + enabled, pages that have previously not been de-duplicated get + skipped. How often these pages are skipped depends on how often + de-duplication has already been tried and failed. By default this + optimization is disabled. The ``pages_skipped`` metric shows how + effetive the setting is. + The effectiveness of KSM and MADV_MERGEABLE is shown in ``/sys/kernel/mm/ksm/``: general_profit From patchwork Tue Sep 26 04:09:39 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stefan Roesch X-Patchwork-Id: 144708 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:cae8:0:b0:403:3b70:6f57 with SMTP id r8csp1660305vqu; Mon, 25 Sep 2023 21:14:39 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEdZbI6FSY7dGPwuF8F3vrTqTbF7YU+4zOZWenyTqJUqdgS30yDJqvcqMlS4BBubKkrankF X-Received: by 2002:a05:6358:3414:b0:13c:a9c9:c04a with SMTP id h20-20020a056358341400b0013ca9c9c04amr9660746rwd.20.1695701679140; Mon, 25 Sep 2023 21:14:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1695701679; cv=none; d=google.com; s=arc-20160816; b=Klz6D5OALvZtlQR1vzRUjwj0NYLCa4T3f7UkcmTLj2lGvFIRQwC1J+stCyJeawaQ+c PgHupgWLqJR2uU1bGXtRSkfMfjYe6f7e31cNM5LnRVEMtUqpP0yL6RLp1ZqaXN/SkD/J 3if7j0nqMFK8RRPvDd6TOyBOVVwOPIEGw2oBZKLsrj/GQ9n/zXqOJ1yPvjYUrFYCBWAO FRVtzFy7K2z+7WQj6zSAuBGBNkkrgqr7PYeVIUQ8mawnYkLHjV24hmPepWYd/blU5gPP eS8e9pm23SL0oGKPb2C3O/e4KOp/968pnNH3NdMel6Yy8wsZKeD5hs9ADhIGXf5JNtfr 1iXg== 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=k8NgTpKmmuGsb/3inQnuQsluCd3KJ2GgD7vI0QdXM9I=; fh=sS+J4OyOC0EcVLWJpS3mBHGeO+0+dYZJ+ImCUfzsrH4=; b=YlzY8azCATgzwjLzWf25wtYqCqslZPY9ynGFIhw5IN/24Xvbzm6NhWVOt3x5Mr3ctJ Ut/VNwvdHaNSd/475WeQWTGRGnM5vHyWrj9bGcOyZPze0LJBpAYNNpNgZ8X8bfyKZvHM EYGS5HwRC8uEWo+oa/A6I4t0n4g+DCgfoOCVEwam9OUJ41VAGGLk5scZ7tw4X/rgbJXr ussNk+kf9nqjXu3uj6nwZmnIXXMljzU1/UbmQO+IgnWNre+oB7XfVFdiHljA9wkLY34k qJ5jpW9lk2MSeCfepuyWhrkJnAdcfUvY6GuK/j/rL7Up5cVK2VMA0d/XVTtOStCocE+4 XTJQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from lipwig.vger.email (lipwig.vger.email. [2620:137:e000::3:3]) by mx.google.com with ESMTPS id x14-20020a17090abc8e00b00277374d74afsi6076185pjr.12.2023.09.25.21.14.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 25 Sep 2023 21:14:39 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) client-ip=2620:137:e000::3:3; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 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 lipwig.vger.email (Postfix) with ESMTP id 091A18226F2E; Mon, 25 Sep 2023 21:11:19 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233595AbjIZEKu (ORCPT + 27 others); Tue, 26 Sep 2023 00:10:50 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41794 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232910AbjIZEKq (ORCPT ); Tue, 26 Sep 2023 00:10:46 -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 73683FC for ; Mon, 25 Sep 2023 21:10:38 -0700 (PDT) Received: by devbig1114.prn1.facebook.com (Postfix, from userid 425415) id D82EAC8F2513; Mon, 25 Sep 2023 21:09:48 -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 v3 4/4] mm/ksm: document pages_skipped sysfs knob Date: Mon, 25 Sep 2023 21:09:39 -0700 Message-Id: <20230926040939.516161-5-shr@devkernel.io> X-Mailer: git-send-email 2.39.3 In-Reply-To: <20230926040939.516161-1-shr@devkernel.io> References: <20230926040939.516161-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 lipwig.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 (lipwig.vger.email [0.0.0.0]); Mon, 25 Sep 2023 21:11:19 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1778072083832641067 X-GMAIL-MSGID: 1778072083832641067 This adds documentation for the new metric pages_skipped. Signed-off-by: Stefan Roesch Reviewed-by: David Hildenbrand --- Documentation/admin-guide/mm/ksm.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Documentation/admin-guide/mm/ksm.rst b/Documentation/admin-guide/mm/ksm.rst index 1762219baf51..27d949250b67 100644 --- a/Documentation/admin-guide/mm/ksm.rst +++ b/Documentation/admin-guide/mm/ksm.rst @@ -178,6 +178,8 @@ pages_unshared how many pages unique but repeatedly checked for merging pages_volatile how many pages changing too fast to be placed in a tree +pages_skipped + how many pages did the "smart" page scanning algorithm skip full_scans how many times all mergeable areas have been scanned stable_node_chains