From patchwork Mon Jan 23 17:37:46 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stefan Roesch X-Patchwork-Id: 47302 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp1745070wrn; Mon, 23 Jan 2023 10:08:33 -0800 (PST) X-Google-Smtp-Source: AMrXdXsHO2ankO32n5TW7p3tOfEj8ft7rvosRVzgPLU2OvxtGn9L+d0eQhcGL6eEsCpDnHtI6TaL X-Received: by 2002:a05:6a00:331b:b0:578:333d:d6ab with SMTP id cq27-20020a056a00331b00b00578333dd6abmr28468459pfb.21.1674497313342; Mon, 23 Jan 2023 10:08:33 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1674497313; cv=none; d=google.com; s=arc-20160816; b=V3Z1rDTJE0O2yilk15v2jmrDNzycs30Q514NjkClZUlxjF15Gss22GT6ARQXpMlzOH u7enFL8+0OmPe2YycdOgbuoWrn5qVvO8fEqW7zgbvU8CbQuKbLyYXspMb9ObqVWATAGH KdaptXiyBGTa9q0dteJIwsJ9cpcYoroZse6oHDMVB6UNYUaC01Dxw+FCiP+rSNam5lo/ RD1zZJ3S1xXksnqLkCDwUe2IVuA+JCxzFvjvv4J/r3oYMXBMLt3NBK/A3cwiDn6u/8m9 7o4pi4WS1gYIap0+TFrAliFNFsVCbdgR4FsqSQt6u4h+cCpVAjH1uZUFeKqjuR29kAbh S3Mw== 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=qo39C54PDBSxRE2rOgUDTJu01fh/PEDP/brvH8YsOkc=; b=Q+FeUkOMzIPx/eHDuBSfxGBvT6bX5cJcgL/Nx/LeXwKFSadigg61qwZTje6XlHlPVh +jA3nLaW6YrZInulzC4VmDRnAkA5fmaUu/RsD+KvUPH4zFVelTE2wraS0Rl1cUv8pHX1 ejjzYZfiHa4s5qwqcI2ssOzty3RwkFbZQKI9ssIV+xQRShoZhbYWHC9KWQi6DguWmeTI Sb+HvnE+PkreAGbSKKhd3zbpPAuHifpLjXyuC3kHi50E0aGBlGI7ig5ZhTncNoVlmRAr 4mzS2hYELXm7Eef+Ab8HkR2IebFbIHUGM5ZHe33XxyfFIZ8NgDT+Crjl5oZeaMXJyqsG uNDQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id w4-20020a634744000000b0047842533cc4si48606996pgk.838.2023.01.23.10.08.21; Mon, 23 Jan 2023 10:08:33 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233745AbjAWSGt (ORCPT + 99 others); Mon, 23 Jan 2023 13:06:49 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47436 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233580AbjAWSGq (ORCPT ); Mon, 23 Jan 2023 13:06:46 -0500 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 2C84130EBB for ; Mon, 23 Jan 2023 10:06:28 -0800 (PST) Received: by dev0134.prn3.facebook.com (Postfix, from userid 425415) id 8864D5616BF7; Mon, 23 Jan 2023 09:37:56 -0800 (PST) From: Stefan Roesch To: linux-mm@kvack.org Cc: shr@devkernel.io, linux-doc@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-trace-kernel@vger.kernel.org Subject: [RESEND RFC PATCH v1 18/20] selftests/vm: add KSM get merge type test Date: Mon, 23 Jan 2023 09:37:46 -0800 Message-Id: <20230123173748.1734238-19-shr@devkernel.io> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230123173748.1734238-1-shr@devkernel.io> References: <20230123173748.1734238-1-shr@devkernel.io> MIME-Version: 1.0 X-Spam-Status: No, score=2.4 required=5.0 tests=BAYES_00,RDNS_DYNAMIC, SPF_HELO_PASS,SPF_NEUTRAL,SUSPICIOUS_RECIPS,TVD_RCVD_IP autolearn=no autolearn_force=no version=3.4.6 X-Spam-Level: ** 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-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1755837695288621414?= X-GMAIL-MSGID: =?utf-8?q?1755837695288621414?= This adds the -G flag to the ksm_tests to query if prctl has been used to enable ksm merging. Signed-off-by: Stefan Roesch --- tools/testing/selftests/vm/ksm_tests.c | 37 ++++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/tools/testing/selftests/vm/ksm_tests.c b/tools/testing/selftests/vm/ksm_tests.c index 386a0929c8a3..9667cb3b8c6a 100644 --- a/tools/testing/selftests/vm/ksm_tests.c +++ b/tools/testing/selftests/vm/ksm_tests.c @@ -45,6 +45,7 @@ enum ksm_merge_type { enum ksm_test_name { CHECK_KSM_MERGE, CHECK_KSM_UNMERGE, + CHECK_KSM_GET_MERGE_TYPE, CHECK_KSM_ZERO_PAGE_MERGE, CHECK_KSM_NUMA_MERGE, KSM_MERGE_TIME, @@ -124,7 +125,8 @@ static void print_help(void) " -D evaluate unmerging time and speed when disabling KSM.\n" " For this test, the size of duplicated memory area (in MiB)\n" " must be provided using -s option\n" - " -C evaluate the time required to break COW of merged pages.\n\n"); + " -C evaluate the time required to break COW of merged pages.\n" + " -G query merge mode\n\n"); printf(" -a: specify the access protections of pages.\n" " must be of the form [rwx].\n" @@ -323,6 +325,31 @@ static int check_ksm_merge(int merge_type, int mapping, int prot, return KSFT_FAIL; } +static int check_ksm_get_merge_type(void) +{ + if (prctl(PR_SET_MEMORY_MERGE, 1)) { + perror("prctl set"); + return 1; + } + + int is_on = prctl(PR_GET_MEMORY_MERGE, 0); + + if (prctl(PR_SET_MEMORY_MERGE, 0)) { + perror("prctl set"); + return 1; + } + + int is_off = prctl(PR_GET_MEMORY_MERGE, 0); + + if (is_on && is_off) { + printf("OK\n"); + return KSFT_PASS; + } + + printf("Not OK\n"); + return KSFT_FAIL; +} + static int check_ksm_unmerge(int merge_type, int mapping, int prot, int timeout, size_t page_size) { void *map_ptr; @@ -733,7 +760,7 @@ int main(int argc, char *argv[]) bool merge_across_nodes = KSM_MERGE_ACROSS_NODES_DEFAULT; long size_MB = 0; - while ((opt = getopt(argc, argv, "ha:p:l:z:m:s:t:MUZNPCHD")) != -1) { + while ((opt = getopt(argc, argv, "ha:p:l:z:m:s:t:GMUZNPCHD")) != -1) { switch (opt) { case 'a': prot = str_to_prot(optarg); @@ -792,6 +819,9 @@ int main(int argc, char *argv[]) case 'Z': test_name = CHECK_KSM_ZERO_PAGE_MERGE; break; + case 'G': + test_name = CHECK_KSM_GET_MERGE_TYPE; + break; case 'N': test_name = CHECK_KSM_NUMA_MERGE; break; @@ -841,6 +871,9 @@ int main(int argc, char *argv[]) ret = check_ksm_unmerge(merge_type, MAP_PRIVATE | MAP_ANONYMOUS, prot, ksm_scan_limit_sec, page_size); break; + case CHECK_KSM_GET_MERGE_TYPE: + ret = check_ksm_get_merge_type(); + break; case CHECK_KSM_ZERO_PAGE_MERGE: ret = check_ksm_zero_page_merge(merge_type, MAP_PRIVATE | MAP_ANONYMOUS, prot, page_count, ksm_scan_limit_sec, use_zero_pages,