Received: by 2002:a05:7412:2a8c:b0:e2:908c:2ebd with SMTP id u12csp2755699rdh; Wed, 27 Sep 2023 11:39:13 -0700 (PDT) X-Google-Smtp-Source: AGHT+IH+KnjrhESCkvC1Rfo4OCvksqTSYmnxRyP0411LJ9lFj1JZk1y6iVqvmm8OvGWyJiL+njED X-Received: by 2002:a05:6a20:3ca7:b0:14c:910d:972d with SMTP id b39-20020a056a203ca700b0014c910d972dmr3000215pzj.12.1695839952949; Wed, 27 Sep 2023 11:39:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1695839952; cv=none; d=google.com; s=arc-20160816; b=dx0P57rOVyVFhXF9NlSvQor9dER9strRPaXp0HFmwQdRdJjxItSEmdzJDpM4fX385G l2FtaWDyve39WjOeYBy4ltvB5tKusWdALyUqxePNXL+8X/qlms5J9rqLTYeFSzxwELzA KYAqYVMwRSnwpb8/En/OHZgJwx3t4p9CEPTK+rG401j+AQfi4PRdQsG6p7jTDPg+LlAu /KkWAcg65Y7nuLu2gx69XbwDmaGb6UTktfXcb6oV66dtddMGtmpZfrlnTCgPeZOLY/8Z SDRbhjnqAVIMNsKz8gZN02KK9qB6JkGOI/+4CJCfAHO3B02+MX9303zTrro8yayAWhzJ pVqw== 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 :message-id:date:subject:cc:to:from; bh=/aF57w/Uo9XQaOfzqfReof8ER8RZzKgHL2lKDiV6uDw=; fh=sS+J4OyOC0EcVLWJpS3mBHGeO+0+dYZJ+ImCUfzsrH4=; b=okCREhA0ASJ6a6w6CZNnrr2R4AFgnyjDp2hvNYbag75lszQTFe0yGm9c6cvVqXwyJP nJSJKBpEBwgn8AlbNuxFTtWIMTtDdA+Q7iiRJWAqsYdPRzyHwDmBUrEvmIKHmvD8Hnhi zMBs1kaLYF3G6YOldZ7Tjc4mITThe2alyKyZTTCZXcNz5qoRghD9vc0yv6wuU6fx86kQ 1NN6wbJpRI8gFcCrq/xUZE+o6MQnsggPvn5kfD4ZKm6n/Gewka1xjL5m5W9KQQb9C3IK hmWM/HtNdn0cOWKMmADtFIStB8wmNvfHNRj76fTYBs1LvGDmATxigcAvo7o2eNrIjbrm zQww== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.34 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from howler.vger.email (howler.vger.email. [23.128.96.34]) by mx.google.com with ESMTPS id k198-20020a633dcf000000b00584b9d0ff80si5103493pga.127.2023.09.27.11.39.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 27 Sep 2023 11:39:12 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.34 as permitted sender) client-ip=23.128.96.34; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.34 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 howler.vger.email (Postfix) with ESMTP id 6D10B806050A; Wed, 27 Sep 2023 09:23:11 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at howler.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231587AbjI0QWt (ORCPT + 99 others); Wed, 27 Sep 2023 12:22:49 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36588 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230164AbjI0QWr (ORCPT ); Wed, 27 Sep 2023 12:22:47 -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 6C490DE for ; Wed, 27 Sep 2023 09:22:46 -0700 (PDT) Received: by devbig1114.prn1.facebook.com (Postfix, from userid 425415) id 30125CA4DC0D; 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 0/4] Smart scanning mode for KSM Date: Wed, 27 Sep 2023 09:22:18 -0700 Message-Id: <20230927162222.3827551-1-shr@devkernel.io> X-Mailer: git-send-email 2.39.3 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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 (howler.vger.email [0.0.0.0]); Wed, 27 Sep 2023 09:23:11 -0700 (PDT) This patch series adds "smart scanning" for KSM. What is smart scanning? =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D KSM evaluates all the candidate pages for each scan. It does not use hist= oric information from previous scans. This has the effect that candidate pages= that couldn't be used for KSM de-duplication continue to be evaluated for each= scan. The idea of "smart scanning" is to keep historic information. With the hi= storic information we can temporarily skip the candidate page for one or several= scans. Details: =3D=3D=3D=3D=3D=3D=3D=3D "Smart scanning" is to keep two small counters to store if the page has b= een used for KSM. One counter stores how often we already tried to use the pa= ge for KSM and the other counter stores how often we skip a page. How often we skip the candidate page depends how often a page failed KSM de-duplication. The code skips a maximum of 8 times. During testing this = has shown to be a good compromise for different workloads. New sysfs knob: =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D Smart scanning is enabled by default. With /sys/kernel/mm/ksm/smart_scan smart scanning can be disabled. Monitoring: =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D To monitor how effective smart scanning is a new sysfs knob has been intr= oduced. /sys/kernel/mm/pages_skipped report how many pages have been skipped by s= mart scanning. Results: =3D=3D=3D=3D=3D=3D=3D=3D - Various workloads have shown a 20% - 25% reduction in page scans For the instagram workload for instance, the number of pages scanned ha= s been reduced from over 20M pages per scan to less than 15M pages. - Less pages scans also resulted in an overall higher de-duplication rate= as some shorter lived pages could be de-duplicated additionally - Less pages scanned allows to reduce the pages_to_scan parameter and this resulted in a 25% reduction in terms of CPU. - The improvements have been observed for workloads that enable KSM with madvise as well as prctl Changes: - V4: - Changed default from disabled to enabled - Changed commit message for first patch to mention it is enabled - Changed documentation to mention it is enabled by default - Changed cover letter description to mention it is enabled by defaul= t - V3: - Renamed field skip_age to remaining_skips - Moved fields after old_checksum - Changed should_skip_rmap_item to use remaining_skips field - V2: - Renamed function inc_skip_age() to skip_age() - Added comment to skip_age() function - Renamed function skip_rmap_item() to should_skip_rmap_item() - Added more comments to should_skip_rmap_item function - Added explicit modification of age with overflow check Stefan Roesch (4): mm/ksm: add "smart" page scanning mode mm/ksm: add pages_skipped metric mm/ksm: document smart scan mode mm/ksm: document pages_skipped sysfs knob Documentation/admin-guide/mm/ksm.rst | 11 +++ mm/ksm.c | 115 +++++++++++++++++++++++++++ 2 files changed, 126 insertions(+) base-commit: 15bcc9730fcd7526a3b92eff105d6701767a53bb --=20 2.39.3